是什么

LangChain 是一个用于构建大模型应用和智能体(Agent)的开源框架,提供 Python 和 JavaScript/TypeScript 两个版本。它解决的核心问题是:大模型本身只会「接收文本、输出文本」,而真实的应用还需要调用工具、接入数据、管理对话、处理失败重试……这些「模型之外的部分」如果每次都从零写,既繁琐又容易出错。

LangChain 当前的核心理念可以用一句话概括:智能体 = 模型 + 外围框架(Harness)。所谓外围框架,就是围绕模型循环的一切:提示词、工具,以及塑造智能体行为的中间件。LangChain 提供了 create_agent 这个精简而高度可配置的入口,让开发者从基础组件出发,按需组合出自己需要的智能体。它支持 OpenAI、Anthropic、Google 等众多模型厂商。

如今 LangChain 已经发展成一个产品家族:

  • LangChain:智能体框架,提供模型、工具和智能体循环的抽象与集成;
  • LangGraph:底层编排运行时,提供持久化执行、流式输出、人工介入和状态持久化;
  • Deep Agents:基于 LangGraph 的「开箱即用」型智能体,内置规划、子智能体、虚拟文件系统和上下文压缩;
  • LangSmith:用于追踪、调试、评估和部署智能体的平台,适用于任何框架构建的智能体。

主要功能

统一的模型接口。 用同一套接口调用不同厂商的聊天模型、嵌入模型等,切换模型只需改动很少的代码,应用不会被某一家厂商绑定。

高度可配置的智能体。 以 create_agent 为起点,传入模型、工具和系统提示词即可得到一个能自主调用工具的智能体,再通过中间件逐步叠加能力。

中间件机制。 中间件可以在智能体执行的每一步介入,官方列举的用途包括:用日志、分析和调试追踪智能体行为;改写提示词、筛选工具、调整输出格式;添加重试、模型降级和提前终止逻辑;施加调用次数限制、安全护栏和个人敏感信息检测。框架内置了对话摘要、人工审批等常用中间件。

基于 LangGraph。 LangChain 的智能体构建在 LangGraph 之上,因此天然具备持久化执行、人工介入、状态保存等能力。

丰富的集成。 提供大量模型厂商、向量数据库、文档加载器和工具的集成包,可以按需安装。

配合 LangSmith 调试。 在同一处查看调用链路、工具调用、状态变化和延迟,定位失败原因并评估输出质量。

技术原理

智能体循环。 create_agent 创建的智能体遵循经典的「推理—行动」循环:模型根据当前消息决定是直接回答,还是调用某个工具;如果调用工具,框架执行工具并把结果作为新消息追加进去,再交给模型继续判断,直到模型给出最终答案。工具通常就是普通的 Python 函数,函数的文档字符串会作为工具描述提供给模型。

中间件钩子。 中间件挂在这个循环的各个环节上,例如模型调用前后、工具调用前后。通过组合不同的中间件,可以在不改动核心逻辑的前提下,为智能体加上摘要、重试、限流、审批等行为。

LangGraph 的图式编排。 LangGraph 是更底层的编排框架,用「状态图」描述流程:开发者定义状态结构,把每一步写成节点函数,用边连接节点,再编译成可执行的图。它的一大特点是可以在同一张图里混合确定性步骤和由大模型驱动的智能体步骤:需要可靠、可审计的部分用固定逻辑,需要灵活判断的部分交给模型。官方介绍,LangGraph 的设计受到 Google 的 Pregel 和 Apache Beam 启发。

如何使用

安装(以 Python 和 Anthropic 模型为例):

pip install -U langchain "langchain[anthropic]"

创建一个带工具的智能体:

from langchain.agents import create_agent

def get_weather(city: str) -> str:
    """查询指定城市的天气"""
    return f"{city}今天晴。"

agent = create_agent(
    model="claude-sonnet-4-6",
    tools=[get_weather],
    system_prompt="你是一个乐于助人的助手",
)

result = agent.invoke(
    {"messages": [{"role": "user", "content": "上海天气怎么样?"}]}
)
print(result["messages"][-1].content_blocks)

换成其他厂商时,只需安装对应的集成包,并修改 model 参数。

需要更精细的流程控制时,可以直接使用 LangGraph:

pip install -U langgraph

然后用 StateGraph 定义节点和边,编译后调用。官方建议:想要开箱即用的完整智能体,从 Deep Agents 开始;需要高度定制的智能体框架,用 LangChain 的 create_agent;需要把确定性流程与智能体步骤结合的复杂场景,用 LangGraph。

项目地址

应用场景

  • 工具调用型智能体:让模型查询数据库、调用内部 API、执行计算。
  • RAG 问答系统:结合文档加载器和向量数据库,基于私有资料回答问题。
  • 长流程、有状态的业务自动化:用 LangGraph 编排审批、客服工单处理等需要持久化和人工介入的流程。
  • 多模型应用:借助统一接口在不同厂商的模型之间切换或做降级备份。
  • 智能体质量评估:配合 LangSmith 追踪线上表现,持续改进。

常见问题

LangChain 和 LangGraph 该用哪个? 刚开始做智能体、希望用较高层的抽象时用 LangChain;需要精细控制流程、混合确定性逻辑和智能体步骤时用 LangGraph。两者可以一起使用,LangChain 的智能体本身就运行在 LangGraph 之上。

使用 LangGraph 必须用 LangChain 吗? 不必。官方文档说明,LangGraph 可以独立使用,只是文档中常用 LangChain 组件来集成模型和工具。

LangSmith 是必需的吗? 不是。LangSmith 是可选的调试和评估平台,但在排查智能体行为时很有帮助,设置环境变量 LANGSMITH_TRACING=true 并配置 API Key 即可开启追踪。

为什么网上的 LangChain 教程代码跑不通? LangChain 迭代较快,早期教程中的写法可能已经变化。建议以官方文档中的最新示例为准。