LangChain
LangChain 是最受欢迎的开源框架之一,用于构建基于语言模型的应用——从简单的聊天机器人到带有多种工具的复杂智能体。
什么是 LangChain?
LangChain 的主要目标是标准化并简化 AI 应用中各个组成部分之间的连接:语言模型、提示词、外部数据源、记忆和工具。 LangChain 不需要为每一次集成手写定制代码,而是提供统一的接口,可与数十种不同的模型和工具提供商协作。
核心组件
- Models — 用于调用不同语言模型的统一接口
- Prompts — 可复用、可参数化的提示词模板
- Chains — 将多个步骤(提示词 → 模型 → 输出处理)组合成一个可调用的单元
- Retrievers — 用于连接向量数据库的统一接口,用来实现 RAG
- Tools / Agents — 定义模型可以调用的工具,以及使用这些工具的决策逻辑
LCEL:链式组合语言
LangChain 表达式语言(LCEL)是一种使用 |(管道)运算符来组合各组件的声明式方法——
类似于 Unix 命令行中的管道操作。每个组件接收输入、进行处理,并将输出传递给下一个组件。
代码示例
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_anthropic import ChatAnthropic
prompt = ChatPromptTemplate.from_template(
"总结一下产品 {product} 的价格和库存情况。"
)
model = ChatAnthropic(model="claude-sonnet")
chain = prompt | model | StrOutputParser()
result = chain.invoke({"product": "Model X 无线耳机"})
print(result)
流式传输与回调
对于交互式界面而言,等待模型生成完整回复并不是良好的体验——因此,每个 LCEL 组件除了 invoke() 之外,
还实现了 stream() 方法,能够在词元生成的同时逐个返回它们(这正是当今大多数聊天机器人"实时打字"体验背后的原理)。
此外,回调(Callbacks) 允许你挂钩到一条链的中间事件上(模型调用开始、每个词元到达、工具被调用、发生错误)—— 而无需更改链的核心逻辑。这一机制正是 LangSmith 等日志记录与追踪工具的基础。
相关生态系统
LangSmith 是一款用于追踪链执行情况的可观测性与调试工具。 为了构建对执行流程(尤其是循环和条件分支)拥有更精细控制的更复杂智能体,LangChain 团队在这些相同的组件基础上 构建了 LangGraph 框架。
什么时候适合使用 LangChain?
对于流程相对线性的应用(提示词 → 模型 → 处理,或标准的 RAG 管道),LangChain 能显著提升开发速度。 而对于具有多分支决策和持久状态的复杂智能体行为,LangGraph 通常是更好的选择。
常见问题
LangChain 只支持 Python 吗?
不是,它的 JavaScript/TypeScript 版本也得到了完整维护。