💡 构建多 Agent 协作系统,让 AI 自主完成复杂任务
**难度: ** ⭐⭐⭐⭐ 高级 | **阅读时间: ** 10 分钟
前言
**一个正在发生的范式转变: **
2026 年初,OpenAI 内部完成了一个疯狂的项目:
-
100 万 + 行代码,全部由 AI 生成
-
3 个工程师,5 个月时间
-
0 行人工编写的代码(注意,是故意的)
他们用的不是单个 AI 助手,而是多 Agent 协作系统。
今天介绍的 LangGraph,就是用来构建这种系统的框架。
简单说:**LangGraph 让你可以编排多个 AI Agent,像指挥军团一样完成复杂任务。 **
什么是 LangGraph?
LangGraph 是 LangChain 出品的低级编排框架,用于构建有状态的 Agent。
它被 Klarna、Replit、Elastic 等公司信任,用于构建、管理和部署长时间运行的状态化工作流。
核心特性
| 特性 | 说明 |
|------|------|
| 持久化执行 | 构建在故障中持久化的 Agent,自动从中断处恢复 |
| 人在回路 | 无缝集成人工监督,在执行任何点检查和修改状态 |
| 全面记忆 | 短期工作记忆 + 长期持久记忆 |
| LangSmith 调试 | 可视化追踪执行路径和状态转换 |
| 生产就绪部署 | 专为状态化、长时间运行工作流设计的基础设施 |
为什么选择 LangGraph?
**传统 AI 应用: **
用户提问 → AI 回答 → 结束
**LangGraph 多 Agent 系统: **
用户提问
↓
规划 Agent → 分解任务
↓
┌───────────────────────────────┐
│ 研究 Agent │ 编码 Agent │ 测试 Agent │
│ 查资料 │ 写代码 │ 写测试 │
└───────────────────────────────┘
↓
审核 Agent → 人工审核(可选)
↓
最终输出
核心概念:图(Graph)
LangGraph 的核心是有向图:
┌──────────────────────────────────────────┐
│ LangGraph │
├──────────────────────────────────────────┤
│ Nodes(节点) │
│ ├─ Agent 节点(执行任务) │
│ ├─ Tool 节点(调用工具) │
│ └─ Human 节点(人工审核) │
├──────────────────────────────────────────┤
│ Edges(边) │
│ ├─ 条件边(基于状态决定下一步) │
│ └─ 普通边(固定流程) │
├──────────────────────────────────────────┤
│ State(状态) │
│ ├─ 短期记忆(当前会话) │
│ └─ 长期记忆(跨会话持久化) │
└──────────────────────────────────────────┘
5 分钟快速开始
1. 安装
pip install -U langgraph
2. 定义状态
**from** typing **import** TypedDict, List
**class** AgentState(TypedDict):
"""定义 Agent 的状态"""
messages: List[str] # 消息历史
task: str # 当前任务
result: str # 执行结果
3. 创建节点
**def** research_node(state: AgentState) -> AgentState:
"""研究 Agent:收集信息"""
task = state["task"]
# 调用搜索工具、阅读文档等
result = f"已收集关于'{task}'的信息"
**return** {"messages": [result], "result": result}
**def** coding_node(state: AgentState) -> AgentState:
"""编码 Agent:编写代码"""
# 根据研究结果编写代码
code = "def hello(): print('Hello, World!')"
**return** {"messages": [f"已生成代码:{code}"], "result": code}
**def** review_node(state: AgentState) -> AgentState:
"""审核 Agent:代码审查"""
# 检查代码质量
review = "代码通过审核"
**return** {"messages": [review], "result": review}
4. 构建图
**from** langgraph.graph **import** StateGraph, END
# 创建图
workflow = StateGraph(AgentState)
# 添加节点
workflow.add_node("research", research_node)
workflow.add_node("coding", coding_node)
workflow.add_node("review", review_node)
# 添加边
workflow.set_entry_point("research")
workflow.add_edge("research", "coding")
workflow.add_edge("coding", "review")
workflow.add_edge("review", END)
# 编译
app = workflow.compile()
5. 执行
# 运行工作流
result = app.invoke({"task": "创建一个 Hello World 函数"})
print(result["messages"])
# 输出:
# [
# "已收集关于'创建一个 Hello World 函数'的信息",
# "已生成代码:def hello(): print('Hello, World!')",
# "代码通过审核"
# ]
实战演示:多 Agent 协作
场景:构建一个完整的 Web 应用
**传统方式: **
你:帮我创建一个待办事项 Web 应用
AI: 给出一个简单的 HTML + JS 示例
你:不够,我需要后端、数据库...
AI: 继续补充...
(反复多次,耗时数小时)
**LangGraph 方式: **
# 定义多 Agent 系统
agents = {
"planner": PlannerAgent(), # 规划 Agent
"frontend": FrontendAgent(), # 前端 Agent
"backend": BackendAgent(), # 后端 Agent
"database": DatabaseAgent(), # 数据库 Agent
"tester": TesterAgent(), # 测试 Agent
"reviewer": ReviewerAgent() # 审核 Agent
}
# 构建工作流
workflow = StateGraph(AgentState)
# 添加所有 Agent 节点
**for** name, agent **in** agents.items():
workflow.add_node(name, agent.run)
# 定义流程
workflow.set_entry_point("planner")
workflow.add_edge("planner", "frontend")
workflow.add_edge("planner", "backend")
workflow.add_edge("backend", "database")
workflow.add_edge("frontend", "tester")
workflow.add_edge("backend", "tester")
workflow.add_edge("database", "tester")
workflow.add_edge("tester", "reviewer")
workflow.add_edge("reviewer", END)
# 执行
result = app.invoke({"task": "创建一个待办事项 Web 应用"})
**输出: **
[规划 Agent] 任务分解:
1. 前端:React + Tailwind
2. 后端:FastAPI
3. 数据库:SQLite
[前端 Agent] 已生成前端代码(3 个组件)
[后端 Agent] 已生成后端 API(5 个端点)
[数据库 Agent] 已设计数据库 schema
[测试 Agent] 已生成测试用例,运行结果:全部通过
[审核 Agent] 代码审查通过,可以部署
✅ 任务完成!
高级特性
1. 人在回路(Human-in-the-Loop)
在关键点插入人工审核:
**from** langgraph.graph **import** HumanInterrupt
**def** human_review_node(state: AgentState) -> AgentState:
"""人工审核节点"""
# 等待人工审核
interrupt = HumanInterrupt(
description="请审核生成的代码",
data={"code": state["result"]}
)
# 暂停执行,等待人工响应
**return** interrupt
workflow.add_node("human_review", human_review_node)
workflow.add_edge("coding", "human_review")
workflow.add_edge("human_review", "tester")
**使用场景: **
-
代码审查
-
敏感操作确认
-
重要决策点
2. 持久化记忆
跨会话保持状态:
**from** langgraph.checkpoint **import** MemorySaver
# 添加记忆保存
memory = MemorySaver()
app = workflow.compile(checkpointer=memory)
# 第一次运行
config = {"configurable": {"thread_id": "user_123"}}
app.invoke({"task": "任务 1"}, config)
# 第二次运行(保持上下文)
app.invoke({"task": "任务 2"}, config)
# AI 记得之前的对话和任务
3. 条件分支
根据状态决定流程:
**def** should_continue(state: AgentState) -> str:
"""条件判断函数"""
**if** state["result"] == "通过":
**return** "deploy"
**else**:
**return** "fix"
workflow.add_conditional_edges(
"review",
should_continue,
{
"deploy": "deploy_node",
"fix": "fix_node"
}
)
4. 并行执行
同时执行多个任务:
# 并行执行前端和后端开发
workflow.add_edge("planner", ["frontend", "backend"])
# 等待两者都完成后继续
workflow.add_edge(["frontend", "backend"], "integration")
最佳实践
✅ 应该做的
| 实践 | 说明 |
|------|------|
| 从小开始 | 先构建简单的单 Agent,再扩展 |
| 明确状态 | 清晰定义 State 结构 |
| 添加日志 | 记录每个节点的执行日志 |
| 错误处理 | 每个节点都要处理异常 |
| 人工审核 | 关键点插入人工审核 |
❌ 不应该做的
| 错误 | 后果 |
|------|------|
| 过于复杂的图 | 难以调试和维护 |
| 状态定义模糊 | Agent 之间传递信息混乱 |
| 忽略错误处理 | 系统不稳定 |
| 没有日志 | 无法追踪问题 |
常见问题
Q1: LangGraph 适合什么场景?
**A: **
-
✅ 多 Agent 协作
-
✅ 长时间运行任务
-
✅ 需要人工审核的工作流
-
✅ 需要记忆的任务
-
✅ 复杂决策树
**不适合: **
-
❌ 简单的单次问答
-
❌ 无状态的快速任务
Q2: 和 LangChain 什么关系?
**A: ** LangGraph 是 LangChain 生态系统的一部分,可以独立使用,也与 LangChain 组件无缝集成。
Q3: 需要 LangSmith 吗?
**A: ** 不是必须,但推荐使用。LangSmith 提供可视化的调试和监控工具。
Q4: 可以部署到生产环境吗?
**A: ** 可以。LangGraph 专为生产环境设计,支持持久化、扩展和监控。
Q5: 学习曲线陡峭吗?
**A: ** 有一定学习曲线,建议先学习 LangChain 基础,再学习 LangGraph。
学习资源
-
GitHub 项目:github.com/langchain-a… (27,703⭐)
-
官方文档:docs.langchain.com
-
LangChain Academy:academy.langchain.com
总结
本文介绍了 LangGraph 的核心概念:
-
是什么:用于构建有状态多 Agent 系统的编排框架
-
为什么重要:让 AI 从"单次问答"升级为"自主完成任务"
-
核心概念:图(节点 + 边 + 状态)
-
如何开始:定义状态 → 创建节点 → 构建图 → 执行
**记住: ** 未来的 AI 应用不是单个 AI 助手,而是多个 Agent 的协作系统。
关于系列
这是《AI 开发者效率手册》系列的第 5 篇,共 17 篇。
**上一篇: ** 别再 vibe-hallucinating 了!GitMCP 让 AI 直接读懂 GitHub 仓库
**后续文章预告: **
-
#006 DeerFlow:智能工作流引擎实战
-
#007 MarkItDown:一键解析 PDF/Word/Excel
-
#008 Awesome Claude Code:精选资源合集
-
...(共 17 篇)
**关注我,不错过后续更新。 **
**作者: ** toyball
**GitHub: ** github.com/toyball8607…
已发布 17+ 开源项目 | 专注 AI 工具本地化
*本文遵守 CC BY-NC-SA 4.0 许可协议,转载请注明出处。 *