LangGraph:告别 if-else,用图结构编排复杂 AI 工作流
LangChain 大家都用过,但当你想做一个「多轮对话 + 工具调用 + 人工审核 + 循环修正」的复杂 Agent 时,LangChain 的链式调用就开始变得难以维护——回调函数嵌套、状态管理混乱、执行路径不透明。
LangGraph 正是为了解决这个问题而生:它用图(Graph) 的方式描述 AI Agent 的工作流,每个节点是一个处理步骤,每条边代表状态流转,循环和条件分支天然支持。
GitHub: https://github.com/langchain-ai/langgraph
Stars: 25K+(LangChain 生态核心项目)
一、LangGraph 的核心思想
LangGraph 的核心理念:把 Agent 工作流建模为图。
传统 LangChain 的问题:
- 链式调用,线性执行,无法优雅地处理循环
- 状态分散在各处,难以追踪
- 工具调用失败后的重试逻辑复杂
LangGraph 的解法:
StateGraph(状态图)
├── 节点(Node):LLM 调用 / 工具执行 / 人工操作 / 条件判断
├── 边(Edge):状态流转规则
│ ├── 普通边:无条件流转
│ └── 条件边:根据状态内容决定下一步
└── 循环(Cycle):天然支持,无需特殊处理
二、核心概念
State(状态)
每个工作流维护一个共享状态(通常是 dict),每个节点接收当前状态、执行操作、返回更新的状态。所有状态变更都有记录,支持时间旅行(time travel)调试。
Node(节点)
节点是工作流中的处理单元,可以是:
tool_call:调用外部工具llm_call:让大模型做决策human_review:暂停等待人工输入condition:条件判断节点
Edge(边)
边定义了状态的流转方向:
add_edge(from, to):无条件从节点 A 流转到节点 Badd_conditional_edges(from, routing_fn):根据状态内容动态路由
Checkpoint(检查点)
LangGraph 支持状态快照和恢复。复杂工作流中途出错?从头重跑太慢。Checkpoint 让工作流从任意检查点恢复,大幅提升调试效率。
三、与传统工作流引擎的区别
| 维度 | LangGraph | DAG 工作流(如 Airflow) |
|---|---|---|
| 循环支持 | ✅ 天然支持 | ❌ 有向无环图,不支持循环 |
| LLM 原生 | ✅ 专为 LLM 设计 | ❌ 需要适配器 |
| 条件分支 | ✅ 动态路由 | ✅ 支持但不够灵活 |
| 状态持久化 | ✅ Checkpoint | ✅ Airflow 本身有 |
| 适用场景 | AI Agent 工作流 | 数据处理流水线 |
LangGraph 的核心差异化在于:它是专为 AI Agent 设计的,不是通用工作流引擎。
四、快速上手
from langgraph.graph import StateGraph, END
from typing import TypedDict
class AgentState(TypedDict):
messages: list
next_action: str
def should_continue(state):
return "tool_call" if len(state["messages"]) < 5 else END
workflow = StateGraph(AgentState)
workflow.add_node("llm", llm_node)
workflow.add_node("tools", tool_node)
workflow.set_entry_point("llm")
workflow.add_conditional_edges("llm", should_continue)
workflow.add_edge("tools", "llm")
app = workflow.compile()
result = app.invoke({"messages": ["hello"]})
五、适用场景
- 多步骤研究型 Agent(搜索 → 阅读 → 总结 → 再搜索)
- 需要人工审核的 AI 工作流(AI 处理 → 人工确认 → 执行)
- 自主决策循环(LLM 决定下一步 → 执行 → 结果反馈 → 再次决策)
- 复杂 RAG 流水线(查询改写 → 检索 → 重排序 → 生成)
六、总结
LangGraph 代表了 AI Agent 工作流编排的一个新方向——从链式调用到图结构。它不是要取代 LangChain,而是在 LangChain 之上提供了更强大的流程控制能力。当你的 Agent 需要处理循环、分支、人机协作时,LangGraph 是目前最优雅的解决方案。
相关链接: