LangGraph 是由 LangChain 团队开发的一个用于构建有状态(Stateful)、**多智能体(Multi-agent)**应用程序的库。它扩展了 LangChain 的功能,允许开发者创建包含循环(Cycles)的复杂工作流。
以下是 LangGraph 的核心概述:
1. 核心定位
传统的 LangChain "链"(Chains)大多是有向无环图(DAG),即逻辑通常是线性的。但在现实的智能体应用中,往往需要"循环",例如:
- 智能体执行任务 -> 发现错误 -> 返回上一步重试。
- 用户提问 -> 检索 -> 判断 是否足够 -> 不够则再次检索。
LangGraph 的出现就是为了解决这些需要循环逻辑 和精细状态管理的场景。
2. 核心概念
LangGraph 将程序建模为一个图(Graph),包含以下三个关键要素:
- 状态(State) :
- 图的全局"内存"。所有节点都可以读取和修改这个状态。
- 它允许在步骤之间持久化数据。
- 节点(Nodes) :
- 代表具体的函数或逻辑单元(如:调用 LLM、查询数据库、处理输出)。
- 每个节点接收当前状态,处理后返回更新的状态。
- 边(Edges) :
- 定义了节点之间的连接路径。
- 普通边:直接从节点 A 到节点 B。
- 条件边(Conditional Edges):基于 LLM 的判断或逻辑条件,决定下一步去哪个节点。
3. 主要优势
- 循环支持(Cycles):原生支持循环迭代,是构建 Agentic 工作流的基础。
- 持久化与检查点(Persistence & Checkpoints) :
- 可以自动保存图的状态。
- 支持"断点续传",即使程序崩溃或需要人工介入,也能从特定点恢复。
- 人机交互(Human-in-the-loop) :
- 可以在节点执行前暂停,等待人工审核或修改状态后再继续。
- 精细控制 :
- 相比于传统的自发式 Agent(如 AutoGPT),LangGraph 允许开发者通过预定义的图结构精确控制 Agent 的行为边界。
4. LangGraph vs LangChain Chains
| 特性 | LangChain Chains | LangGraph |
|---|---|---|
| 结构 | 主要是线性的/无环 (DAG) | 支持循环 (Cycles) |
| 状态管理 | 简单的输入/输出传递 | 复杂的全局状态更新 |
| 可控性 | 较低(主要靠 Prompt) | 极高(由图逻辑硬编码流程) |
| 适用场景 | 简单的任务序列 | 复杂的 Agent 协作、纠错机制 |
5. 典型应用场景
- 多智能体系统(Multi-agent Systems):例如一个 Agent 负责写代码,另一个负责测试代码,发现 bug 后回传给第一个 Agent。
- 代码生成与执行循环:编写 -> 执行 -> 报错 -> 修改 -> 重新执行。
- 长时运行的任务:涉及多步交互、中间需要暂停等待人类确认的业务流程。
- RAG 优化 :例如 Corrective RAG,如果检索到的内容不相关,则触发重新生成搜索查询。
总结
LangGraph 不是 LangChain 的替代品,而是其能力的延伸。 它将 LangChain 的组件(LLM、Tools、Prompts)编织进一个可循环、可预测且有状态的图中,是目前构建生产级、可靠智能体应用的主流框架之一。