LangGraph 是大模型应用开发中讨论度很高的智能体编排框架。它把多个智能体之间的关系建模成一张有向图:节点保存业务逻辑,边控制流转方向,状态在节点之间传递,checkpointer 负责记忆持久化。很多项目在单智能体场景里用 LangChain 很顺手,一旦进入多智能体,真正的问题就不再是“调大模型”,而是如何让多个智能体有序协作、不会互相死循环、失败能快速定位、状态能恢复。下面围绕多智能体架构展开,先拆解 State、Node、Conditional Edge、Checkpointer、Subgraph 这些核心组件,再给一套从单智能体到 Supervisor 多智能体的可运行代码,最后给出调试链路和生产环境注意事项。
1. LangGraph 是什么:把多智能体当成一张可以控制的图
1.1 多智能体不是“多调几次大模型”
单智能体应用最常见的结构是循环:大模型根据用户输入决定是否调用工具,拿到工具结果后继续生成回答。这个结构解决单条任务链路时足够,但把多个智能体硬拼到一起时,问题会迅速暴露。
举个例子,一个负责查资料的智能体、一个负责写文章的智能体、一个负责审核的智能体,如果只是让它们互相调用,会出现三种典型失控场景:A 调用 B,B 又调用 A,双方无法收敛;多个智能体各自改同一份数据,没人知道哪个版本是当前状态;某个智能体报错后,上游和下游都看不到完整的执行记录。
多智能体的价值恰恰在于分工和约束。LangGraph 的思路是把“谁在什么时候执行、在什么条件下切换到谁、执行过程中共享什么数据”全部显式建模,执行过程变成一张有向图。节点是参与者,边是规则,状态是节点之间传递的数据包。程序跑完一个节点,LangGraph 会自动把返回值写回状态,再根据边决定下一步去向。
1.2 核心抽象:State、Node、Edge 与 Checkpointer
LangGraph 的核心抽象可以压成一张表:
| 抽象组件 | 作用 | 通俗理解 |
|---|---|---|
| State | 整个图共享的数据结构,通常是 TypedDict | 工作台 |
| Node | 一个节点就是一段可执行逻辑,可以是普通函数、LLM 调用、工具调用或子图 | 一个工序 |
| Edge | 节点之间无条件流转 | 传送带 |
| Conditional Edge | 根据当前 State 决定下一步进入哪个节点 | 分拣口 |
| Checkpointer | 保存每一步执行后的状态,支持断点恢复和多轮对话 | 录像回放 |
| Subgraph | 把一个已编译的图作为另一个图的一个节点 | 班组或子团队 |
一个图必须有起点和终点。LangGraph 用START表示入口,END表示出口。所有节点默认可以在任意节点之间连接,但实际工程里通常建议保持单向、分层,避免出现无法预测的环。
1.3 LangGraph 和 LangChain 的分工
很多人分不清 LangChain 和 LangGraph。简单说,LangChain 解决“单步能力”,LangGraph 解决“多步编排”。
| 对比维度 | LangChain | LangGraph |
|---|---|---|
| 定位 | 模型调用、提示词模板、工具封装、链式组合 | 有状态、有循环、可恢复的图编排 |
| 核心表示 | Chain、AgentExecutor | StateGraph |
| 适合场景 | 单链路 RAG、单 Agent 工具调用 | 多智能体、多分支、需要持久化状态 |
| 执行方式 | 线性或链式居多 | 节点加边的有向图,支持条件分支、循环、并行 |
实际项目里二者经常一起用。LangGraph 的节点内部调用 LangChain 的模型封装、工具加载和文档切分组件,是很常规的搭配。如果团队里有 Java 开发背景的同事,还需要注意 LangChain 生态还有 JavaScript 版本,Java 侧更多是社区封装,落地前先确认官方维护状态,不要照搬 Python 代码。
1.4 什么时候该上多智能体架构
不是所有任务都需要多智能体。下面几种情况更适合引入:
- 任务能拆成多个明确角色,每个角色使用不同的提示词、工具或知识库。
- 流程中包含审核、修订、并行处理等非单链路环节。
- 需要一个主管节点统一决策,把任务分发给不同执行者。
- 希望每个智能体的日志、输入、输出可以独立追踪。
反过来,单次问答、一次工具调用就能完成的任务,不需要多智能体。多智能体不是为了炫技,而是为了把复杂流程拆成可维护、可观测的单元。
2. 环境准备与依赖安装:版本对齐是第一步
2.1 Python 环境与虚拟环境
LangGraph 是 Python 生态的框架,建议使用独立的虚拟环境,避免和系统 Python 或项目其他依赖冲突。Python 版本建议 3.9 以上,3.10 或 3.11 更稳妥。
python -m venv .venv source .venv/bin/activate # Windows 环境执行: .venv\Scripts\activate python -m pip install --upgrade pip为什么要用虚拟环境?因为 LangGraph 的依赖较多,而且版本迭代快,不同项目可能锁定不同版本。使用虚拟环境后,升级依赖不会影响系统 Python,也能避免“在我电脑上能跑”的经典问题。
2.2 安装 langgraph 及相关依赖
pip install langgraph langchain-core pip install langchain-openailanggraph是核心库,langchain-core提供模型接口、消息对象等基础类型。langchain-openai用于调用 OpenAI 兼容接口的模型。如果项目使用其他模型平台,就换成对应封装包。
还需要按需安装 checkpointer 扩展:
pip install langgraph-checkpoint-sqlite pip install langgraph-checkpoint-postgres这两个包用于把执行状态持久化到 SQLite 或 PostgreSQL。学习阶段可以只装 SQLite,