LangGraph vs LangChain
1.LangChain 是什么
LangChain 是 LLM 应用开发领域最早期、最广泛使用的框架之一,定位为通用 LLM 应用框架。它提供了丰富的组件来简化与大语言模型的交互:
- Prompt 管理:模板化提示词构建与复用
- Chain(链):将多个步骤(LLM 调用、工具调用、记忆等)串联成管道
- Agent 抽象:让 LLM 决定是否调用工具
- Tool(工具):标准化的外部能力扩展接口
- Memory(记忆):对话历史的存储与检索
- RAG 支持:检索增强生成的完整实现
LangChain 的核心抽象是 LCEL(LangChain Expression Language),一种链式组合语法,让开发者可以通过管道操作符 | 将多个组件串联起来:
|
设计哲学:提供”乐高积木”式的组件,开发者按需拼接。
2.LangGraph 是什么
LangGraph 是 LangChain 生态的扩展,专门用于构建有状态、多步骤、带循环的智能体应用。它的核心理念是将工作流建模为有向图(Directed Graph),其中:
- 节点(Node):每个计算步骤,如 LLM 调用、工具执行、状态判断
- 边(Edge):节点之间的跳转逻辑
- 状态(State):贯穿整个图执行过程的共享上下文对象
- 条件边(Conditional Edge):根据当前状态动态决定下一步路由
关键特性:原生支持循环(Cycles),这是 LangGraph 与 LangChain 链式结构最本质的区别。
设计哲学:把智能体的工作流当作状态机来精确控制。
3.核心区别对比
| 维度 | LangChain | LangGraph |
|---|---|---|
| 核心抽象 | 链(Chain):线性管道 | 图(Graph):节点 + 边 + 状态机 |
| 执行模式 | 线性顺序,有始有终 | 支持循环、分支、并行 |
| 状态管理 | 通过 Memory 组件管理对话历史 | 全局 State 对象在所有节点间共享 |
| 循环支持 | ❌ 不支持循环 | ✅ 原生支持 |
| 条件路由 | 有限(Chain 内部分支) | ✅ 强大的条件边机制 |
| 多智能体 | 可以,但需要自行设计协调逻辑 | 可以,天然支持协作图结构 |
| 流程可控性 | 中等,依赖 Chain 配置 | 高,完全显式定义每一步 |
| 适用场景 | 简单 RAG、Prompt 链式组合 | 复杂智能体工作流、需要反思/修正的流程 |
| 学习曲线 | 较平缓,组件丰富易上手 | 较陡,需要理解图模型概念 |
4.为什么 LangGraph 是 LangChain 的”升级”
(1)链式结构的局限
LangChain 的 Chain 本质上是单向链表:
|
这意味着:
- 信息只能向前流动
- 无法回头修正之前的输出
- 难以实现”反思-修正”这类迭代行为
(2)图结构的优势
LangGraph 的图允许任意方向的连接,包括回边(back edge),从而天然支持:
- 自我反思:Agent 生成回答后,评判节点认为质量不足,跳回重新生成
- 工具调用循环:LLM 决定是否继续调用工具
- 人机协作:在流程中间插入人工审核节点
- 多智能体协作:多个 Agent 节点互相调用,形成协作网络
你的 notebook 中实现的搜索助手就是一个典型例子——虽然目前是线性流程(理解 → 搜索 → 回答),但如果需要加入”反思”节点判断答案质量,不足则重新搜索,LangGraph 的条件边可以轻松实现这个循环:
|
(3)Checkpointing 与状态持久化
LangGraph 内置了 checkpoint 机制(你的代码中 InMemorySaver()),支持:
- 多轮对话状态恢复:即使进程重启也能恢复之前的执行状态
- 分叉与回溯:可以从某个历史节点重新执行,探索不同路径
- Human-in-the-loop:在任意节点暂停,等待人工输入后再继续
5.实战代码对比
LangChain 风格(链式)
|
特点:线性、一次性、无法回头。
LangGraph 风格(图式)
|
特点:每一步都有状态、可循环、可分支、高度可控。
6.LangGraph 独有能力:条件边
条件边是 LangGraph 最强大的功能之一,让图的执行不再是固定路线,而是”智能调度”:
|
这种能力在 LangChain 的 Chain 中几乎无法优雅地实现。
7.如何选择
| 场景 | 推荐 |
|---|---|
| 简单问答、Prompt 组合、RAG 管道 | LangChain |
| 需要工具调用的 Agent,且流程固定 | LangChain 或 LangGraph |
| 需要自我反思、循环修正的工作流 | LangGraph |
| 多智能体协作系统 | LangGraph |
| 需要精确控制每一步的执行顺序和分支 | LangGraph |
| 快速原型、一次性脚本 | LangChain |
| 生产级、需要高可控性和可审计性 | LangGraph |
8.总结
LangChain 和 LangGraph 是互补关系,而非替代关系:
- LangChain 是通用的 LLM 应用开发框架,提供组件库,简化单次调用和简单链式组合
- LangGraph 是 LangChain 的超集,专门解决复杂智能体的状态管理、循环控制和协作编排问题
如果把 LLM 应用开发比作盖房子:
- LangChain 提供了砖块、水泥、窗户——丰富的建筑材料
- LangGraph 提供了脚手架、蓝图、施工计划——精确的施工控制
从你 notebook 中的搜索助手案例可以看到,LangGraph 让原本只能写死在代码里的”判断-搜索-回答”流程,变成了一个可视化、可调试、可扩展的图结构。当需求变得更加复杂(比如加入反思循环、并行搜索、人工审核等),LangGraph 的优势会愈发明显。