LangChain
学习初衷
想要更加灵活的、更好的融入到实际的业务中的工作流。
核心概念
LangChain表达式 (LCEL)
链式调用,可以通过这个表达式编排工作流,例如:
python
chain = prompt_template | model | parser进行提示词的创建->调用模型->解析模型的返回结果
核心:
- 声明式 (Declarative): 只需定义数据处理的逻辑和流程,而不需要编写复杂的执行代码。描述“做什么”,而不是“怎么做”。
- 可组合 (Composable): LCEL 的基本单元(如
PromptTemplate,ChatModel,OutputParser)都实现了统一的接口(Runnable),可以无缝地通过|操作符组合在一起。 - Runnable 接口: LCEL 的基石是
Runnable接口。任何实现了invoke,stream,batch,ainvoke(异步) 等方法的类或对象都是一个Runnable。这意味着你可以对任何Runnable执行相同的操作。 - 管道操作符
|: 这是构建 LCEL 链的核心。它将前一个组件的输出自动传递给后一个组件的输入。a | b表示将a的输出作为b的输入。
Runnable
标准接口包括:
stream: 流式返回响应的块invoke: 在输入上调用链batch: 在输入列表上调用链
异步方法与asyncio的await语法一起使用以实现并发:
astream: 异步流式返回响应的块ainvoke: 异步调用链上的输入abatch: 异步调用链上的输入列表astream_log: 在发生时流式返回中间步骤,除了最终响应astream_events: 测试版 在链中发生时流式事件 (在langchain-core0.1.14 中引入)
调试
使用LangSmith可以进行工作流的调试,可以查看每个环节的详细信息
step1:

step2:
创建项目信息

粘贴到项目中的.env文件中
LANGSMITH_TRACING 改为 LANGCHAIN_TRACING_V2 (删除后面“true”的引号)

setp3:
运行工作流后到web查看
