【AI 开发者效率手册 #005】# 90% 开发者还在让 AI 补代码,1% 已用 LangGraph 指挥 AI 军团

9 阅读6分钟

💡 构建多 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。


学习资源


总结

本文介绍了 LangGraph 的核心概念:

  1. 是什么:用于构建有状态多 Agent 系统的编排框架

  2. 为什么重要:让 AI 从"单次问答"升级为"自主完成任务"

  3. 核心概念:图(节点 + 边 + 状态)

  4. 如何开始:定义状态 → 创建节点 → 构建图 → 执行

**记住: ** 未来的 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 许可协议,转载请注明出处。 *