文档 / LangChain

LangChain

LangChain 是最受欢迎的开源框架之一,用于构建基于语言模型的应用——从简单的聊天机器人到带有多种工具的复杂智能体。

Python / JS Open Source LCEL

什么是 LangChain?

LangChain 的主要目标是标准化并简化 AI 应用中各个组成部分之间的连接:语言模型、提示词、外部数据源、记忆和工具。 LangChain 不需要为每一次集成手写定制代码,而是提供统一的接口,可与数十种不同的模型和工具提供商协作。

核心组件

  • Models — 用于调用不同语言模型的统一接口
  • Prompts — 可复用、可参数化的提示词模板
  • Chains — 将多个步骤(提示词 → 模型 → 输出处理)组合成一个可调用的单元
  • Retrievers — 用于连接向量数据库的统一接口,用来实现 RAG
  • Tools / Agents — 定义模型可以调用的工具,以及使用这些工具的决策逻辑

LCEL:链式组合语言

LangChain 表达式语言(LCEL)是一种使用 |(管道)运算符来组合各组件的声明式方法—— 类似于 Unix 命令行中的管道操作。每个组件接收输入、进行处理,并将输出传递给下一个组件。

Prompt Template | Chat Model | Output Parser

代码示例

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 版本也得到了完整维护。

要使用 MCP/UCP 是否必须使用 LangChain?

不需要,它们彼此独立。LangChain 是一个开发框架;MCPUCP 是标准通信协议。你也可以将 LangChain 作为这些协议的客户端来使用。