LangGraph Workflows & Agents 设计模式
📌 适用场景:多Agent编排
LangChain官方Agentic Workflow模式库,含prompt chaining/parallelization/routing等代码级模式
🛠️ 涉及工具清单
📋 完整步骤
- 1
安装 LangGraph 并理解核心概念
pip 安装 langgraph 和 langchain,理解 StateGraph、Node、Edge 三大核心抽象,运行第一个 Prompt Chaining 示例
建议 Python 3.11+; 先用 OpenAI 或 Anthropic API Key 快速验证 - 2
掌握 Routing 与 Parallelization 组合模式
实现条件路由将用户意图分类后分发到不同处理分支,再用并行化同时执行多个独立 LLM 调用提升效率
路由分类建议用结构化输出(Structured Output)保证类型安全; 并行节点之间必须无数据依赖 - 3
构建 Orchestrator-Worker 多 Agent 系统
用 Orchestrator 动态拆分任务并分发给多个专业 Worker Agent,Worker 各自拥有独立工具和上下文,最后汇总结果
Worker 数量从 2-3 个开始,避免过度拆分; 为每个 Worker 写清晰的 System Prompt 定义职责边界 - 4
引入 Evaluator-Optimizer 迭代优化
在生成流程后加入 Evaluator 评估质量,不达标则反馈给 Optimizer 自动重试,形成闭环提升输出质量
设置最大重试次数(如 3 次)避免死循环; 评估标准要可量化,避免模糊描述
LangGraph Workflows & Agents 设计模式 快速入门
一句话卖点:LangChain 官方的”Agent 建筑设计图”——把业界验证过的 6 种 Agentic Workflow 模式拆成可直接复用的代码模板,从此不再从零设计 Agent 架构,直接搭积木。
这是什么?适合谁?
LangGraph Workflows & Agents 是 LangChain 团队维护的Agentic Workflow 设计模式官方文档库。它系统性地总结了 6 种经过工业验证的可复用模式——从最简单的 Prompt Chaining 到复杂的多 Agent 协作——每种模式都有概念解释、架构图、和可运行的 Python 代码示例。
核心区分:文档将 AI 应用分为两大类——
- Workflows(工作流):代码路径预定义,LLM 按固定顺序执行。包括 Prompt Chaining、Parallelization、Routing、Orchestrator-Worker、Evaluator-Optimizer 五种模式;
- Agents(智能体):LLM 动态决定自己的流程和工具使用,路径不固定。Agent 自己选择调用哪些工具、何时停止、何时请求人类介入。 六种模式的速览: | 模式 | 一句话 | 适用场景 | |------|--------|----------| | Prompt Chaining | A 的输出作为 B 的输入,串行执行 | 文档生成(大纲→正文→润色)、多步翻译 | | Parallelization | 多个 LLM 调用同时执行 | 多维度分析、多语种翻译、分块摘要 | | Routing | 分类输入后分发到专门的处理分支 | 客服意图路由、代码语言检测分发 | | Orchestrator-Worker | 中心调度器动态拆任务给专业 Worker | 多 Agent 研究、复杂软件开发 | | Evaluator-Optimizer | 生成→评估→反馈→重写循环 | 代码审查自动修、文案迭代优化 | | Agent | LLM 自主决策工具调用和流程 | 聊天助手、自主编程 Agent | 适合谁?AI 工程师/架构师——需要为团队设计可维护的 Agent 系统架构;LLM 应用开发者——从单次 Prompt 调用升级到多步 Workflow,需要成熟的设计参考;技术管理者——评估团队 Agent 架构是否合理,避免重复造轮子;Agent 框架开发者——理解业界标准模式,设计自己的 Agent DSL 或编排层。
不适合:只想用一句话调 LLM 的极简需求(直接用 ChatGPT API 即可);完全无编程基础(需要 Python + LangChain 基础);对 LangChain 生态有强烈排斥(但设计模式本身可脱离 LangChain 实现)。
准备工作
- Python 3.11+:LangGraph 要求 Python ≥ 3.9,推荐 3.11 以上以获得更好的类型提示支持;
- LLM API Key:至少一个——推荐 OpenAI API Key(GPT-4o / GPT-4.1)或 Anthropic API Key(Claude 3.5 Sonnet / Claude 4);
- 基本 Python 知识:理解 async/await、类型注解(Type Hints)、Pydantic 模型;
- (推荐)LangChain 基础:了解 ChatModel、Tool、PromptTemplate 等概念会让学习更顺畅;
- 一个明确的使用场景:带着一个真实需求来学效果最好——比如”我要做一个客服工单自动分类→处理→回复的流水线”。
4 步快速上手
第 1 步:安装 LangGraph 并理解核心概念
pip install langgraph langchain langchain-openai
# 如果用 Anthropic Claude
pip install langchain-anthropic
LangGraph 有三个核心概念,必须理解才能读懂所有模式: ① StateGraph(状态图)——整个 Workflow 的容器,所有 Node 共享一个 State 字典:
from typing import TypedDict
from langgraph.graph import StateGraph
class State(TypedDict):
query: str
category: str
result: str
graph = StateGraph(State)
② Node(节点)——图中执行具体逻辑的函数,接收 State 返回更新:
def classify(state: State) -> dict:
# 用 LLM 分类用户意图
result = llm.invoke(f"分类这句话: {state['query']}")
return {"category": result}
③ Edge(边)——连接节点的有向箭头。分两种:
- 普通边(add_edge):固定从 A → B
- 条件边(add_conditional_edges):根据 State 动态选择下一个 Node 第一个模式:Prompt Chaining(提示链) 这是最简单的模式——把任务拆成串行步骤,上一步的输出是下一步的输入:
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
class ChainState(TypedDict):
topic: str
outline: str
draft: str
final: str
llm = ChatOpenAI(model="gpt-4o")
def generate_outline(state: ChainState) -> dict:
prompt = f"为'{state['topic']}'生成一个3段式大纲"
return {"outline": llm.invoke(prompt).content}
def write_draft(state: ChainState) -> dict:
prompt = f"根据大纲写正文:\n{state['outline']}"
return {"draft": llm.invoke(prompt).content}
def polish(state: ChainState) -> dict:
prompt = f"润色以下文章,使其更简洁有力:\n{state['draft']}"
return {"final": llm.invoke(prompt).content}
# 构建图
builder = StateGraph(ChainState)
builder.add_node("outline", generate_outline)
builder.add_node("draft", write_draft)
builder.add_node("polish", polish)
builder.set_entry_point("outline")
builder.add_edge("outline", "draft")
builder.add_edge("draft", "polish")
builder.add_edge("polish", END)
graph = builder.compile()
# 运行
result = graph.invoke({"topic": "AI Agent 的未来趋势"})
print(result["final"])
执行流程:topic 输入 → generate_outline → write_draft → polish → 输出 final
验证方法:
print(result["final"])能看到完整的三段式润色文章。如果输出不连贯,检查每个 Node 的 prompt 是否把上一步结果完整传入了。
第 2 步:掌握 Routing 与 Parallelization 组合模式
在实际项目中,Routing 和 Parallelization 经常组合使用:先路由分类,再对不同类型的请求并行执行不同的处理。
Routing(路由)——根据输入内容将请求分发到不同的处理分支:
from typing import Literal
from langgraph.graph import StateGraph, END
class RouteState(TypedDict):
query: str
intent: str
response: str
def classify_intent(state: RouteState) -> dict:
prompt = """将用户问题分类为以下之一:
- technical: 技术问题(bug、代码、部署)
- billing: 账单/付费问题
- general: 一般咨询
只输出分类标签。"""
intent = llm.invoke(
f"{prompt}\n\n用户问题:{state['query']}"
).content.strip().lower()
return {"intent": intent}
def route_by_intent(state: RouteState) -> Literal["tech_support", "billing_support", "general_support"]:
if state["intent"] == "technical":
return "tech_support"
elif state["intent"] == "billing":
return "billing_support"
else:
return "general_support"
def tech_support(state: RouteState) -> dict:
return {"response": llm.invoke(f"你是技术专家,回答:{state['query']}").content}
def billing_support(state: RouteState) -> dict:
return {"response": llm.invoke(f"你是账单专员,回答:{state['query']}").content}
def general_support(state: RouteState) -> dict:
return {"response": llm.invoke(f"回答用户问题:{state['query']}").content}
# 构建路由图
builder = StateGraph(RouteState)
builder.add_node("classify", classify_intent)
builder.add_node("tech_support", tech_support)
builder.add_node("billing_support", billing_support)
builder.add_node("general_support", general_support)
builder.set_entry_point("classify")
builder.add_conditional_edges("classify", route_by_intent, {
"tech_support": "tech_support",
"billing_support": "billing_support",
"general_support": "general_support",
})
builder.add_edge("tech_support", END)
builder.add_edge("billing_support", END)
builder.add_edge("general_support", END)
router_graph = builder.compile()
Parallelization(并行化)——同时执行多个独立的 LLM 调用:
from langgraph.graph import StateGraph, END
import operator
from typing import Annotated
class ParallelState(TypedDict):
text: str
# Send API 并行:每个元素独立进入节点
sections: list[str]
# 汇总结果用 operator.add 合并
summaries: Annotated[list[str], operator.add]
def split_sections(state: ParallelState) -> dict:
"""将文本拆分为多个 section,返回 Send 列表"""
# 模拟拆分
sections = state["text"].split("\n\n")
return {"sections": sections}
from langgraph.types import Send
def continue_to_summarize(state: ParallelState):
"""为每个 section 生成一个 Send 对象,并行执行"""
return [
Send("summarize", {"text": section})
for section in state["sections"]
]
def summarize(state: dict) -> dict:
"""每个 section 独立摘要(并行执行)"""
summary = llm.invoke(f"用一句话摘要:{state['text']}").content
return {"summaries": [summary]}
builder = StateGraph(ParallelState)
builder.add_node("split", split_sections)
builder.add_node("summarize", summarize)
builder.set_entry_point("split")
builder.add_conditional_edges("split", continue_to_summarize, ["summarize"])
builder.add_edge("summarize", END)
parallel_graph = builder.compile()
关键理解:
SendAPI 是 LangGraph 实现并行化的核心——continue_to_summarize返回的每个Send对象都会创建一个独立的summarize执行实例,它们并行运行不互相等待。
第 3 步:构建 Orchestrator-Worker 多 Agent 系统
Orchestrator-Worker 是 LangGraph 中最强大的模式:一个中央 Orchestrator(调度器)分析任务后动态分配给多个专业 Worker,Worker 各自拥有独立的工具和 System Prompt。
from typing import TypedDict, Annotated
import operator
from langgraph.graph import StateGraph, END
class OrchestratorState(TypedDict):
task: str
plan: list[dict] # 调度计划: [{step, assigned_worker}]
worker_results: Annotated[list[dict], operator.add]
final_report: str
# === 定义三个专业 Worker ===
def researcher(state: dict) -> dict:
"""研究员 Worker:搜索和收集信息"""
prompt = f"""你是研究员。收集关于以下主题的关键信息:
{state['task']}
返回:3-5 个关键发现,每条带来源。"""
result = llm.invoke(prompt).content
return {"worker_results": [{"worker": "researcher", "result": result}]}
def analyst(state: dict) -> dict:
"""分析师 Worker:分析数据、找趋势"""
prompt = f"""你是数据分析师。基于研究结果,分析以下主题:
{state['task']}
找出 3 个关键趋势和 2 个风险点。"""
result = llm.invoke(prompt).content
return {"worker_results": [{"worker": "analyst", "result": result}]}
def writer(state: dict) -> dict:
"""撰稿 Worker:将分析结果写成报告"""
# 从 state 中取出前面 Worker 的结果
researcher_output = next(
(w["result"] for w in state.get("worker_results", [])
if w["worker"] == "researcher"), ""
)
analyst_output = next(
(w["result"] for w in state.get("worker_results", [])
if w["worker"] == "analyst"), ""
)
prompt = f"""你是报告撰写人。基于以下信息撰写一份结构化报告:
## 研究结果
{researcher_output}
## 分析洞察
{analyst_output}
## 原始任务
{state['task']}
请生成包含摘要、主要发现、趋势分析、风险提示四个部分的报告。"""
result = llm.invoke(prompt).content
return {"final_report": result}
# === 构建图 ===
builder = StateGraph(OrchestratorState)
# 所有 Worker 并行启动
builder.add_node("researcher", researcher)
builder.add_node("analyst", analyst)
builder.add_node("writer", writer)
builder.set_entry_point("researcher")
builder.set_entry_point("analyst") # 多入口 = 并行
builder.add_edge("researcher", "writer")
builder.add_edge("analyst", "writer")
builder.add_edge("writer", END)
orchestrator_graph = builder.compile()
# 运行
result = orchestrator_graph.invoke({
"task": "2026 年 AI Agent 开源框架的市场竞争格局分析"
})
print(result["final_report"])
执行流程:researcher 和 analyst 并行执行 → writer 等待两者完成 → 汇总生成报告
扩展思路:在真实项目中,你可以在
writer后面再接一个reviewerWorker 做质量审核,用add_conditional_edges判断是否需要退回writer重写——这自然引入了下一个模式:Evaluator-Optimizer。
第 4 步:引入 Evaluator-Optimizer 迭代优化
Evaluator-Optimizer 模式的核心是一个”生成→评估→反馈→重写”循环:
from typing import Literal
class EvalState(TypedDict):
task: str
draft: str
score: int
feedback: str
iteration: int
def generate(state: EvalState) -> dict:
"""生成初稿或根据反馈修改"""
if state.get("feedback"):
prompt = f"""重写以下内容,解决反馈中提到的问题:
原始任务:{state['task']}
当前草稿:{state['draft']}
反馈意见:{state['feedback']}
请生成改进版本。"""
else:
prompt = f"完成任务:{state['task']}"
return {
"draft": llm.invoke(prompt).content,
"iteration": state.get("iteration", 0) + 1
}
def evaluate(state: EvalState) -> dict:
"""评估草稿质量"""
prompt = f"""评估以下输出质量(满分 10 分)。
任务:{state['task']}
输出:{state['draft']}
评分标准:
- 完整性(是否覆盖所有要求)
- 准确性(事实是否正确)
- 清晰度(是否易于理解)
返回格式:
Score: X/10
Feedback: 具体改进建议(如无问题写 "None")"""
response = llm.invoke(prompt).content
# 解析评分
import re
score_match = re.search(r"Score:\s*(\d+)/10", response)
score = int(score_match.group(1)) if score_match else 5
feedback = response.split("Feedback:")[-1].strip() if "Feedback:" in response else ""
return {"score": score, "feedback": feedback}
def should_continue(state: EvalState) -> Literal["generate", "end"]:
"""决定是否继续迭代"""
if state["score"] >= 8 or state["iteration"] >= 3:
return "end"
return "generate"
# 构建 Evaluator-Optimizer 图
builder = StateGraph(EvalState)
builder.add_node("generate", generate)
builder.add_node("evaluate", evaluate)
builder.set_entry_point("generate")
builder.add_edge("generate", "evaluate")
builder.add_conditional_edges(
"evaluate", should_continue,
{"generate": "generate", "end": END}
)
eval_graph = builder.compile()
result = eval_graph.invoke({
"task": "写一篇 2026 年 AI Agent 技术趋势短文(300 字)"
})
print(f"最终评分: {result['score']}/10")
print(f"迭代次数: {result['iteration']}")
print(f"最终输出:\n{result['draft']}")
循环逻辑:generate → evaluate → 不达标 → generate(用反馈重写)→ evaluate → 达标 → END
常见踩坑
-
State 字段未定义导致 KeyError:所有 Node 中写入的 key 必须在 TypedDict 的 State 类中声明,LangGraph 运行时会严格校验——忘记定义字段是最常见的初学者错误;
-
并行节点中存在隐式数据依赖:两个节点被设为并行(多入口),但 Worker B 的 prompt 里硬编码了”基于 Worker A 的结果”——这会导致 B 读到空数据。确保并行节点之间完全独立;
-
条件边返回值与目标节点名不匹配:
route_by_intent返回"tech_support"但图中注册的节点叫"tech_support_handler"——LangGraph 会抛出InvalidUpdateError; -
Evaluator-Optimizer 无退出条件导致无限循环:
should_continue里忘记设最大迭代次数上限——LLM 有时永远给不出 10/10 的评分,导致死循环消耗大量 token; -
Send API 返回值错误:
continue_to_*函数必须返回list[Send],而不是dict或list[str]——返回类型错误是并行化失败的首要原因; -
Orchestrator 拆分粒度太细:把任务拆成 20 个微小 Worker,每个 Worker 只做一行代码的事——调度开销 > 实际计算,建议 2-5 个 Worker;
-
遗忘
operator.add导致并行结果被覆盖:并行节点同时写同一个 State 字段时,必须用Annotated[list, operator.add]而非普通list——否则后完成的节点会覆盖先完成的结果。
初级用法
-
内容生成流水线:Prompt Chaining 模式,大纲→正文→润色→配图描述,一键生成完整文章;
-
多语种翻译服务:Parallelization 模式,一篇文档同时翻译为英/日/韩/法四种语言,并行执行互不阻塞;
-
智能客服路由:Routing 模式,用户问题分类为”退换货”/“技术故障”/“投诉”后分别进入对应处理流程;
-
代码审查助手:Evaluator-Optimizer 模式,AI 生成代码 → Review → 发现 bug → 自动修复 → 再 Review,直到通过。
高级玩法
-
模式组合嵌套:外层 Routing + 内层 Evaluator-Optimizer——先路由到”代码生成”分支,内部跑生成→审查→修复循环,最后输出通过审查的代码;
-
Human-in-the-Loop 打断:在 Evaluator-Optimizer 的评估节点后用
interrupt()挂起,等人类审核打分后再决定继续迭代还是结束——LangGraph 原生支持; -
持久化与断点续跑:LangGraph 支持 SQLite/Postgres checkpoint,长时间运行的 Orchestrator-Worker 任务可以在断点恢复——适合需要数小时的研究任务;
-
跨 Worker 记忆共享:在 Orchestrator-Worker 模式中加入共享记忆层(
InMemoryStore或PostgresSaver),让 Worker 之间可以交换中间发现——类似团队白板; -
动态 Worker 注册:不从代码写死 Worker 列表,而是在 Runtime 从配置文件/YAML 中动态加载 Worker 的 System Prompt 和工具集——实现”热插拔”Agent 系统;
-
与 LangSmith 集成调试:所有 LangGraph 图的执行都可以自动追踪到 LangSmith,可视化每个 Node 的输入输出、耗时、token 消耗——这对于调试复杂 Workflow 至关重要。
小技巧
-
从最简单模式开始验证:不要一上来就搭 Orchestrator-Worker。先用 Prompt Chaining 验证你的 LLM 在这个任务上的基础表现,确认模型选对了再加复杂度;
-
用
graph.get_graph().draw_mermaid_png()可视化:LangGraph 内置 Mermaid 图导出,画出来比看代码直观 10 倍——尤其是条件边多了以后; -
Prompt 模板化管理:把每个 Node 的 System Prompt 抽到单独的
.txt或 YAML 文件中管理,而不是硬编码在 Python 代码里——方便非技术同事调试提示词; -
State 设计先于代码:拿到需求后先画 State 字段图——这个 Workflow 从头到尾需要哪些数据?哪些是全局共享?哪些是 Node 局部?画清楚 State 再写代码能避免 50% 的返工;
-
小模型做路由,大模型做生成:Routing 分类任务可以用便宜的 GPT-4o-mini / Claude Haiku,把 GPT-4o / Claude Sonnet 留给真正需要推理的 Worker——成本可降 60-80%;
-
用 TypedDict 的
total=False标记可选字段:State 里不是所有字段一开始就有值——draft在第一步没有,final在中间步骤也没有。标记为可选可以避免类型检查告警; -
条件边返回值加类型注解:
def route(state) -> Literal["a", "b", "c"]——加了Literal类型后,IDE 能自动补全和校验,重构时如果改了节点名但忘了改路由返回值,类型检查器会直接报错。
常见问题 FAQ
Q1: LangGraph 和 LangChain 是什么关系?必须一起用吗?
A: LangGraph 是 LangChain 生态中的编排框架(类似”控制流引擎”),LangChain 提供 LLM 调用、工具封装、Prompt 模板等基础能力。你可以只用 LangGraph + 原生 OpenAI SDK,不依赖 LangChain——LangGraph 的 StateGraph 本身对 LLM 提供者无感。
Q2: 这些模式和 Anthropic 的《Building Effective Agents》文章有什么关系?
A: LangChain 的这篇文档直接引用了 Anthropic 的理论框架作为设计哲学。Anthropic 的文章提出了”增强型 LLM”概念和 Workflow vs Agent 的二分法;LangChain 将其落地为 LangGraph 中可运行的代码。两篇配合阅读效果最好。
Q3: 6 种模式都要学吗?还是只学需要的?
A: 建议按依赖关系学:Prompt Chaining(基础)→ Routing + Parallelization(核心组合)→ Orchestrator-Worker(进阶)→ Evaluator-Optimizer(质量保障)。Agent 模式理解概念即可,具体实现建议用 LangChain 的 create_agent API 或直接看 LangGraph Agent 教程。
Q4: LangGraph 有可视化编辑器吗?
A: 有 LangGraph Studio(桌面应用 + 云版),可以可视化编辑 StateGraph、拖拽节点和边、实时调试。但目前 Studio 更偏向调试和监控,生产级 Workflow 还是建议代码定义。另外可以用 draw_mermaid_png() 导出静态图做文档。
Q5: 除了 LangGraph,还有其他方式实现这些模式吗?
A: 这些是设计模式,不绑定任何框架。你可以用 CrewAI 实现 Orchestrator-Worker、用 AWS Step Functions 实现 Prompt Chaining、用手写 asyncio 实现 Parallelization。LangGraph 的价值在于用图抽象统一了所有模式——一套语法覆盖全部 6 种。如果你只需要一两种模式,完全可以用更轻量的方案。
Q6: 生产环境部署有哪些注意事项?
A: (1) 使用 PostgresSaver 而非内存 MemorySaver 做 checkpoint——进程重启后状态不丢失;(2) 设置 recursion_limit 防止无限循环——默认 25 步,Evaluator-Optimizer 场景可能需要调高到 50;(3) 配置 LangSmith 追踪所有执行,出问题时能回溯每个 Node 的输入输出;(4) 设置 Node 级别的超时和重试策略(LangGraph 内置支持 RetryPolicy);(5) 用 astream_events() 替代 invoke() 做流式输出,提升用户体验。
进阶学习建议
第 1-2 小时:跑通所有模式
-
按本文的 4 步逐一复制代码到 Jupyter Notebook 或
.py文件 -
用自己的 API Key 跑通 Prompt Chaining → Routing+Parallel → Orchestrator-Worker → Evaluator-Optimizer
-
每跑通一个模式,尝试把 prompt 替换成你自己的业务场景
第 3-4 小时:组合模式解决真实问题
-
选一个你手头的真实需求(如”自动分析 GitHub Issue 并生成修复 PR”)
-
设计需要哪些模式组合:Routing(判断 Issue 类型)→ Orchestrator-Worker(分派给分析+修复 Worker)→ Evaluator-Optimizer(代码 Review 循环)
-
实现一个可运行的 MVP——哪怕 Workers 只做 mock 输出
第 1 周:深入 LangGraph 特性
-
学习 checkpoint 持久化、Human-in-the-Loop interrupt、streaming 三种生产级特性
-
用 LangSmith 可视化你的 Workflow 执行轨迹
-
将 State 从 TypedDict 升级到 Pydantic BaseModel(更强大的数据校验)
第 2-4 周:生产化
-
加入错误处理和重试策略(
RetryPolicy) -
用 PostgresSaver 替代内存 checkpoint
-
用 FastAPI 包装成 REST API 供前端调用
-
配置日志、监控、成本追踪
推荐资源:
-
LangGraph 官方文档:langchain.com/docs
-
LangGraph 教程合集:langchain-ai.lang.chat
-
Anthropic《Building Effective Agents》:anthropic.com/engineering
-
LangGraph GitHub 仓库 + 示例:github.com/langchain-ai/langgraph
-
LangGraph Cookbook(社区示例集):github.com/langchain-ai/langgraph-cookbook
本文基于 LangChain/LangGraph 官方文档和公开资料整理,AI 辅助生成,MagicNetWorld 尚未完成独立实测。代码示例来自官方文档的简化改编版本,完整可运行示例请参见 LangGraph 官方文档。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。
📊 评分与标签
评分说明
总分 8.9/10 · P_优选
📊 可观测社区指标(数据核验日期:2026-07-08)
- GitHub: langchain-ai/langgraph ★36.7k, 🔱6.2k, 377 Issues
- 来源:GitHub API
- 父项目: langchain-ai/langchain ★141k, 🔱23.5k, LangChain 生态核心
- PyPI: langgraph 月下载 6,000 万+, 最新版本 v1.2.8 (2026-07-07)
- 官方文档: docs.langchain.com 含 5 种模式 + Agent 动态模式 + 完整代码示例
- 生态集成: LangSmith 监控 / LangGraph Studio 可视化 / LangChain 300+ 工具
- 来源:LangChain 官网
📋 流程完整性 2.6/3.0
- 五种 Agentic Workflow 模式:Prompt Chaining(串行)、Parallelization(并行)、Routing(路由分发)、Orchestrator-Worker(主从编排)、Evaluator-Optimizer(评估优化),覆盖主流 Agent 协作形态
- Agent 动态模式:LLM 自主决策下一步调用哪个工具或子 Agent,支持 Human-in-the-loop(人工确认节点)、断点续跑、Time Travel(回溯到任意历史状态重放)
- 对比 n8n:n8n 提供 400+ 预置节点和可视化拖拽,非工程师友好但 AI Agent 能力(自主决策/工具动态调用/状态回溯)弱于 LangGraph
- 来源:n8n.io
- 对比 Temporal:Temporal 擅长长时间运行的分布式 Sagas/事务补偿,Workflow 可靠性极强但重心在微服务编排,非 AI Agent 原生设计
- 来源:temporal.io
🔄 可复用性 2.3/2.5
- StateGraph 范式:定义 State Schema → 添加 Node → 连接 Edge → 编译成可执行图,所有模式共享同一套 API,学习一次即可套用所有模式
- 来源:LangGraph 文档
- 与 LangChain 生态零缝对接:300+ 预置工具(搜索/数据库/API/代码执行)可在 Node 内直接调用,无需额外适配
- 对比 Prefect:Prefect 面向数据管道和 ETL,Task/Flow 抽象与 AI Agent 语义不匹配,需自行实现 LLM 调用和工具分发
- 来源:prefect.io
- 对比 AWS Step Functions:Step Functions 适合 AWS 原生服务的状态机编排,但 LangGraph 在 Agent 模式(LLM 动态路由、工具自主调用)上更灵活
📖 文档清晰度 1.8/2.0
- 官方文档含完整 Python 代码示例,每种模式有独立页面(含 StateGraph 构建 → 编译 → 调用的三步骤 + 可视化图表),Agent 动态模式有 Human-in-the-loop 和 Time Travel 专项说明
- LangGraph Studio 提供可视化调试(图形化查看 StateGraph 结构、节点执行顺序、状态流转),降低理解门槛
- 中文资源较丰富:CSDN/掘金/知乎有大量 LangGraph 教程,LangChain 中文社区活跃
- 对比 n8n:n8n 拖拽式 UI = 零文档门槛;LangGraph 需读文档+写代码,学习曲线更陡但灵活性更高
- 缺少 Workflow 模式的决策树/流程图(何时选 Orchestrator-Worker vs Evaluator-Optimizer?),模式选择依赖读者自行判断
🔧 工具集成 1.4/1.5
- Python 生态全覆盖:pip install langgraph,支持 LangChain 300+ Tools、OpenAI/Anthropic/Google 等 30+ LLM、MCP 协议工具、自定义 Function/API 节点
- 来源:LangGraph 文档
- LangSmith 集成:自动追踪每条 Workflow 的执行链路(节点耗时/Token 消耗/错误定位),生产级可观测性
- 来源:LangSmith
- LangGraph Cloud/Platform:支持将 Workflow 部署为 API,含自动扩缩容和版本管理
- 对比 Prefect:Prefect 有更成熟的调度(Cron/事件触发)和重试机制;LangGraph 在 LLM 工具链集成上更强
- 对比 n8n:n8n 有 400+ 预置节点(Slack/Gmail/Airtable 等 SaaS 直连),LangGraph 侧重代码级 AI 编排,面向不同受众
💡 创新性 0.8/1.0
- 首个将”Agentic Workflow Pattern”体系化定义为代码级可复用模式的框架:Prompt Chaining/Parallelization/Routing/Orchestrator-Worker/Evaluator-Optimizer 五种模式 + Agent 动态模式,被 Anthropic《Building Effective Agents》引用为推荐实践
- Time Travel 特性独树一帜:可回溯到 StateGraph 执行历史的任意节点重放,支持”假设分析”和故障复现
- 对比 AutoGen:AutoGen 的 Group Chat 模式偏对话式协作,LangGraph 的显式 DAG 更适合需要精确控制流程的工程场景
- 对比 CrewAI:CrewAI 的角色扮演式编排更直观(定义 Agent → Task → Crew),但 LangGraph 的显式状态机在复杂分支/循环场景下更可控
评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。
🏷️ 标签说明
- 开源免费: MIT 许可证,完全开源免费使用。来源:LangGraph License
- Agent: LangGraph 的核心定位是 Agentic Workflow 编排框架,Agent 节点可自主决策工具调用。来源:LangGraph 文档
- 编排: 支持 Prompt Chaining/Parallelization/Routing/Orchestrator-Worker/Evaluator-Optimizer 五种编排模式 + Agent 动态模式。来源:LangGraph Workflows 文档
- 自动化: 通过 StateGraph 实现可编程的 Workflow 自动化流水线,减少人工介入。来源:LangGraph 文档
- 编程: LangGraph 是编程级框架,提供 Python SDK 构建状态机驱动的 Agent 系统。来源:LangGraph 文档
📋 来源与核验记录
- ✅ 已核验: GitHub langchain-ai/langgraph — ★36.7k, 🔱6.2k, 377 Issues (2026-07-08 抓取)
- ✅ 已核验: GitHub langchain-ai/langchain — ★141k, 🔱23.5k (2026-07-08 抓取)
- ✅ 已核验: PyPI langgraph — v1.2.8, MIT License (2026-07-08 抓取)
- ✅ 已核验: LangGraph Workflows 文档 — 页面存在,含 5 种模式 + Agent 模式 + 完整代码示例
- ✅ 已核验: Anthropic Building Effective Agents — 页面存在,引用 Workflow/Agent 架构模式
- ✅ 已核验: LangGraph Studio — 可视化调试工具页面存在
- ⚠️ 间接来源: n8n/Temporal/Prefect/AWS Step Functions 的功能描述 — 基于官方文档和公开信息,未逐项 页面核验
- ❌ 死链: 无