LangGraph 是由 LangChain 团队开发的AI Agent 工作流编排框架,专门用于构建有状态、多步骤、可循环的 LLM 应用。

核心思想:用**图(Graph)**的方式描述 AI 的决策和执行流程,支持循环、分支、多智能体协作。


🎯 解决什么问题?

LangChain 的局限

LangChain Chain:A → B → C → D  (线性,不能回头)

❌ 不支持循环(Agent 需要反复思考)
❌ 复杂分支逻辑难以表达
❌ 多 Agent 协作困难
❌ 状态管理复杂

LangGraph 的解决方式

✅ 有向图结构 → 支持循环、分支、并行
✅ 内置状态管理 → 节点间共享状态
✅ 支持 Human-in-the-loop → 人工介入审核
✅ 多 Agent 协作 → 原生支持

🏗️ 核心概念

🔷 State(状态)

整个图共享的数据容器,每个节点都可以读写。

from typing import TypedDict, Annotated
from langgraph.graph import add_messages

class AgentState(TypedDict):
    messages: Annotated[list, add_messages]  # 对话历史
    user_info: str                            # 用户信息
    tool_result: str                          # 工具调用结果

🔷 Node(节点)

图中的执行单元,接收状态、处理逻辑、返回新状态。

def call_llm(state: AgentState):
    response = llm.invoke(state["messages"])
    return {"messages": [response]}

def call_tool(state: AgentState):
    result = tool.run(...)
    return {"tool_result": result}

🔷 Edge(边)

节点之间的连接关系,决定执行流向。

# 普通边:固定跳转
graph.add_edge("node_a", "node_b")

# 条件边:动态决策
graph.add_conditional_edges(
    "llm_node",
    decide_next_step,   # 决策函数
    {
        "use_tool": "tool_node",
        "finish": END
    }
)

🔷 Graph(图)

把节点和边组合起来,形成完整的工作流。


🔄 典型 ReAct Agent 结构

           ┌─────────────────────┐
           ↓                     │
START → [LLM 思考] → 需要工具? ──YES──→ [执行工具] ──┘
                         │
                        NO
                         ↓
                       END
from langgraph.graph import StateGraph, END

# 构建图
builder = StateGraph(AgentState)

# 添加节点
builder.add_node("llm", call_llm)
builder.add_node("tools", call_tool)

# 设置入口
builder.set_entry_point("llm")

# 添加条件边
builder.add_conditional_edges(
    "llm",
    should_use_tool,
    {"yes": "tools", "no": END}
)

# tools 执行完回到 llm 继续思考
builder.add_edge("tools", "llm")

# 编译
graph = builder.compile()

⚡ 核心特性

特性

说明

🔁 循环支持

Agent 可以反复推理,直到完成任务

💾 持久化状态

内置 Checkpointer,支持暂停恢复

🧑‍💻 Human-in-the-loop

关键步骤等待人工确认

🤝 多 Agent

支持 Agent 之间协作/委托

🌊 流式输出

支持 Token 级别流式响应

🔀 并行执行

多节点并行处理

🐛 可观测性

与 LangSmith 集成,完整追踪


👥 多 Agent 架构

Supervisor 模式

用户请求
    ↓
[Supervisor Agent]  ← 负责分配任务
   ↙    ↓    ↘
[研究] [写作] [代码]  ← 专业子 Agent
   ↘    ↓    ↙
[Supervisor Agent]  ← 汇总结果
    ↓
最终输出

Handoff 模式

[Agent A] ──委托──→ [Agent B] ──委托──→ [Agent C]
  客服接待           技术支持            专家解答

🧑‍💻 Human-in-the-loop 示例

# 编译时添加 checkpointer
graph = builder.compile(
    checkpointer=MemorySaver(),
    interrupt_before=["执行删除操作"]  # 危险操作前暂停
)

# 运行到危险节点时自动暂停
result = graph.invoke(input, config={"thread_id": "123"})
# → 暂停,等待人工确认

# 人工审核后继续
graph.invoke(None, config={"thread_id": "123"})

💡 典型使用场景

场景

说明

🤖 ReAct Agent

思考 → 行动 → 观察 循环

🔍 RAG 增强

检索不够好时自动重新检索

📝 自动写作

写作 → 评审 → 修改 循环

🛠️ 代码生成

生成 → 执行 → 报错 → 修复 循环

🤝 多 Agent 协作

研究员 + 写手 + 审核员

💬 客服系统

多轮对话 + 工单流转


🆚 与同类框架对比

LangGraph

AutoGen

CrewAI

Temporal

定位

LLM 工作流图

多 Agent 对话

角色扮演 Agent

通用工作流

循环支持

✅ 原生

⚠️ 有限

状态管理

✅ 内置

⚠️ 基础

⚠️ 基础

✅ 强

Human-in-loop

⚠️

LLM 无关

⚠️ 偏 LangChain

学习曲线

中等


🔗 与 LangChain 生态关系

LangChain     →  提供 LLM、Tool、Prompt 等基础组件
LangGraph     →  编排这些组件,构建复杂 Agent 流程
LangSmith     →  监控、调试、追踪执行过程
LangServe     →  将 Graph 部署为 API 服务

💬 总结

LangGraph 的核心价值:"用图的思维构建可靠的 AI Agent,让复杂推理流程可控、可追踪、可恢复"

  • 适合构建需要多步推理、工具调用、多轮交互的 AI 应用

  • 比简单 Chain 灵活得多,比 Temporal 更专注 AI 场景

  • 目前是构建生产级 AI Agent 的主流选择之一

官网langchain-ai.github.io/langgraph | GitHublangchain-ai/langgraph