LangChain vs LangGraph 深度对比(上):从框架定位到 Agent 构建的设计篇
文章目录
- [LangChain vs LangGraph 深度对比(上):从框架定位到 Agent 构建的设计篇](#LangChain vs LangGraph 深度对比(上):从框架定位到 Agent 构建的设计篇)
- [1. 引言](#1. 引言)
-
- [1.1 LangChain 与 LangGraph 的关系](#1.1 LangChain 与 LangGraph 的关系)
-
- [LangChain 负责什么?](#LangChain 负责什么?)
- [LangGraph 负责什么?](#LangGraph 负责什么?)
- 两者的关系
- [1.2 为什么需要 LangGraph?](#1.2 为什么需要 LangGraph?)
- [1.3 本文对比维度说明](#1.3 本文对比维度说明)
-
- [① 框架定位](#① 框架定位)
- [② 架构设计思想](#② 架构设计思想)
- [③ 执行模型](#③ 执行模型)
- [④ 状态管理机制](#④ 状态管理机制)
- [⑤ Agent 构建能力](#⑤ Agent 构建能力)
- [⑥ 工作流编排能力](#⑥ 工作流编排能力)
- [⑦ 容错与恢复机制](#⑦ 容错与恢复机制)
- [⑧ 可观测性与扩展性](#⑧ 可观测性与扩展性)
- [1.4 本章小结](#1.4 本章小结)
- [2. 框架定位对比](#2. 框架定位对比)
-
- [2.1 LangChain 的设计目标](#2.1 LangChain 的设计目标)
-
- [LangChain 的核心职责](#LangChain 的核心职责)
- [Model 抽象](#Model 抽象)
- [Prompt 管理](#Prompt 管理)
- [Tool 集成](#Tool 集成)
- [Retriever 与 RAG](#Retriever 与 RAG)
- [Agent 构建](#Agent 构建)
- [LangChain 的本质](#LangChain 的本质)
- [2.2 LangGraph 的设计目标](#2.2 LangGraph 的设计目标)
- [2.3 两者在 Agent 技术栈中的位置](#2.3 两者在 Agent 技术栈中的位置)
- [2.4 适用问题域分析](#2.4 适用问题域分析)
-
- [LangChain 适用场景](#LangChain 适用场景)
- ChatBot
- [RAG 系统](#RAG 系统)
- [Tool Calling](#Tool Calling)
- [MVP 验证](#MVP 验证)
- [LangGraph 适用场景](#LangGraph 适用场景)
- [Research Agent](#Research Agent)
- [Coding Agent](#Coding Agent)
- [Deep Research](#Deep Research)
- Multi-Agent
- [企业级 Agent 平台](#企业级 Agent 平台)
- [2.5 本章小结](#2.5 本章小结)
- [3. ⭐ 核心理论框架:LLM Agent System 四层模型](#3. ⭐ 核心理论框架:LLM Agent System 四层模型)
-
- [3.1 LLM Agent 系统四层结构](#3.1 LLM Agent 系统四层结构)
- [3.2 Capability Layer(能力层)](#3.2 Capability Layer(能力层))
- [3.3 Control Layer(控制层)](#3.3 Control Layer(控制层))
- [3.4 Runtime Layer(运行时层)](#3.4 Runtime Layer(运行时层))
- [3.5 Orchestration Layer(编排层)](#3.5 Orchestration Layer(编排层))
- [3.6 四层模型总结](#3.6 四层模型总结)
-
- [3.6.1 总体结构](#3.6.1 总体结构)
- [3.6.2 LangChain vs LangGraph 归属](#3.6.2 LangChain vs LangGraph 归属)
- [3.6.3 核心结论](#3.6.3 核心结论)
- [4. 架构设计思想对比:Chain Model vs Graph Model](#4. 架构设计思想对比:Chain Model vs Graph Model)
-
- [4.1 Chain 模型(LangChain)](#4.1 Chain 模型(LangChain))
-
- [------ 线性流水线式执行模型](#—— 线性流水线式执行模型)
- 基本结构
- 核心特点
- [① 线性执行(Linear Flow)](#① 线性执行(Linear Flow))
- [② 结构固定(Static Flow)](#② 结构固定(Static Flow))
- [③ 局部状态(Local State)](#③ 局部状态(Local State))
- [④ 组件组合(Composition-based)](#④ 组件组合(Composition-based))
- 本质总结
- 优势
- 局限性
- [❌ 1. 无法表达循环](#❌ 1. 无法表达循环)
- [❌ 2. 无法表达动态决策](#❌ 2. 无法表达动态决策)
- [❌ 3. 无法表达多路径执行](#❌ 3. 无法表达多路径执行)
- [❌ 4. 状态弱表达](#❌ 4. 状态弱表达)
- 结论
- [4.2 Graph 模型(LangGraph)](#4.2 Graph 模型(LangGraph))
-
- [------ 状态驱动的图计算模型](#—— 状态驱动的图计算模型)
- 基本结构
- 核心特点
- [① 图结构(Graph-based)](#① 图结构(Graph-based))
- [② 支持循环(Loop Native)](#② 支持循环(Loop Native))
- [③ 支持条件路由(Conditional Edge)](#③ 支持条件路由(Conditional Edge))
- [④ 全局状态(Global State)](#④ 全局状态(Global State))
- [⑤ 可控执行流(Explicit Control Flow)](#⑤ 可控执行流(Explicit Control Flow))
- 本质总结
- 优势
- [✅ 1. 支持复杂流程](#✅ 1. 支持复杂流程)
- [✅ 2. 原生支持 Agent Loop](#✅ 2. 原生支持 Agent Loop)
- [3. 强状态建模能力](#3. 强状态建模能力)
- [4. 支持多 Agent 系统](#4. 支持多 Agent 系统)
- 局限性
- [❌ 1. 学习成本更高](#❌ 1. 学习成本更高)
- [❌ 2. 结构复杂](#❌ 2. 结构复杂)
- [❌ 3. 对简单任务不必要](#❌ 3. 对简单任务不必要)
- 结论
- [4.3 Pipeline vs State Machine(核心本质对比)](#4.3 Pipeline vs State Machine(核心本质对比))
-
- [① LangChain = Pipeline Model](#① LangChain = Pipeline Model)
- [② LangGraph = State Machine Model](#② LangGraph = State Machine Model)
- 核心区别
- [4.4 DAG vs Cyclic Graph(结构能力差异)](#4.4 DAG vs Cyclic Graph(结构能力差异))
-
- LangChain:DAG(有向无环图)
- [LangGraph:Cyclic Graph(可循环图)](#LangGraph:Cyclic Graph(可循环图))
- 关键差异
- [4.5 Agent 为什么天然适合 Graph 模型](#4.5 Agent 为什么天然适合 Graph 模型)
-
- [Graph 结构天然匹配](#Graph 结构天然匹配)
- [为什么 Chain 不适合 Agent?](#为什么 Chain 不适合 Agent?)
- [Graph 的优势](#Graph 的优势)
- [4.6 本章总结(核心结论)](#4.6 本章总结(核心结论))
-
- [① 两种模型的本质差异](#① 两种模型的本质差异)
- [② 控制方式差异](#② 控制方式差异)
- [③ 设计哲学差异](#③ 设计哲学差异)
- [5. 执行模型对比:顺序执行 vs 动态决策执行](#5. 执行模型对比:顺序执行 vs 动态决策执行)
-
- [5.1 LangChain 执行模型:顺序驱动(Sequential Execution)](#5.1 LangChain 执行模型:顺序驱动(Sequential Execution))
- [5.2 LangGraph 执行模型:状态驱动(Stateful Execution)](#5.2 LangGraph 执行模型:状态驱动(Stateful Execution))
- [5.3 顺序执行 vs 动态执行(核心差异)](#5.3 顺序执行 vs 动态执行(核心差异))
- [5.4 ReAct / Planning / Reflection 执行机制对比](#5.4 ReAct / Planning / Reflection 执行机制对比)
- [5.5 动态决策能力对比(核心差异)](#5.5 动态决策能力对比(核心差异))
- [5.6 执行模型本质对比(总结)](#5.6 执行模型本质对比(总结))
-
- [① 模型定义](#① 模型定义)
- [② 控制方式](#② 控制方式)
- [③ 系统行为](#③ 系统行为)
- [6. 状态管理机制对比:Memory vs State vs Checkpoint](#6. 状态管理机制对比:Memory vs State vs Checkpoint)
-
- [6.1 LangChain Memory:局部记忆模型](#6.1 LangChain Memory:局部记忆模型)
- [6.2 LangGraph State:全局状态模型](#6.2 LangGraph State:全局状态模型)
- [6.3 Checkpoint 机制:任务恢复核心能力](#6.3 Checkpoint 机制:任务恢复核心能力)
- [6.4 Memory vs State vs Checkpoint 对比](#6.4 Memory vs State vs Checkpoint 对比)
- [6.5 核心本质差异总结](#6.5 核心本质差异总结)
- [6.6 本章总结](#6.6 本章总结)
-
- [① 抽象层级不同](#① 抽象层级不同)
- [② 控制能力不同](#② 控制能力不同)
- [③ 系统能力不同](#③ 系统能力不同)
- 核心结论
- [7. Agent 构建能力对比:从组件组合到系统化 Agent](#7. Agent 构建能力对比:从组件组合到系统化 Agent)
-
- [7.1 LangChain Agent:组件驱动型 Agent](#7.1 LangChain Agent:组件驱动型 Agent)
- [7.2 LangGraph Agent:系统化 Agent 构建模型](#7.2 LangGraph Agent:系统化 Agent 构建模型)
- [7.3 ReAct Agent 对比](#7.3 ReAct Agent 对比)
- [7.4 Planning Agent 对比](#7.4 Planning Agent 对比)
- [7.5 Reflection Agent 对比](#7.5 Reflection Agent 对比)
- [7.6 Multi-Agent 系统对比](#7.6 Multi-Agent 系统对比)
- [7.7 Agent 生命周期对比](#7.7 Agent 生命周期对比)
-
- [LangChain Agent 生命周期](#LangChain Agent 生命周期)
- [LangGraph Agent 生命周期](#LangGraph Agent 生命周期)
- [7.8 本章总结](#7.8 本章总结)
-
- [① Agent 构建方式差异](#① Agent 构建方式差异)
- [② 核心范式差异](#② 核心范式差异)
- [③ 架构本质总结](#③ 架构本质总结)
1. 引言
随着大语言模型(LLM)能力的快速提升,AI 应用开发正在从简单的 Prompt 调用逐步演进为复杂的 Agent 系统构建。
早期的 LLM 应用主要围绕 Prompt Engineering 展开,开发者关注的核心问题是:
- 如何设计高质量 Prompt
- 如何管理上下文信息
- 如何接入不同模型
- 如何提升回答质量
然而,随着 Tool Calling、RAG、Planning、Reflection 等能力的出现,LLM 应用开始向 Agent 系统演进。
此时开发者面临的问题已经发生变化:
- 如何组织复杂任务流程?
- 如何管理长期运行状态?
- 如何支持多步骤决策?
- 如何实现 Agent 协同?
- 如何保证任务可恢复与可观测?
在这样的背景下,LangChain 与 LangGraph 逐渐成为当前 Agent 开发生态中的两大核心框架。
1.1 LangChain 与 LangGraph 的关系
很多开发者刚接触 LangGraph 时,都会产生一个误解:
LangGraph 是不是为了替代 LangChain?
事实上并非如此。
从架构定位来看,两者并不是竞争关系,而是协作关系。
text
LangChain
├── Models
├── Prompts
├── Tools
├── Retrievers
└── Memory
↓
LangGraph
├── State
├── Node
├── Edge
├── Workflow
└── Runtime
↓
Agent Application
LangChain 负责什么?
LangChain 更关注 LLM 应用开发。
它提供了大量基础组件:
- Prompt Template
- Chat Model
- Tool
- Retriever
- Memory
- Output Parser
开发者可以快速构建:
- ChatBot
- RAG 系统
- Tool Calling 应用
- 基础 Agent
本质上,LangChain 更像是一个:
LLM Application Framework
LangGraph 负责什么?
LangGraph 更关注:
Agent Workflow Orchestration
即:
- Agent 如何执行
- Agent 如何决策
- Agent 如何维护状态
- Agent 如何协同工作
它提供:
- Graph 执行模型
- 状态管理机制
- 条件路由
- 循环执行
- Checkpoint
- Human-in-the-Loop
本质上更像:
Agent Workflow Engine
两者的关系
可以简单理解为:
| 层级 | 作用 |
|---|---|
| LangChain | 提供能力组件 |
| LangGraph | 组织能力组件 |
| Agent Application | 最终业务系统 |
因此:
LangChain 解决的是「Agent 能做什么」,而 LangGraph 解决的是「Agent 应该如何完成任务」。
1.2 为什么需要 LangGraph?
要理解 LangGraph 的价值,首先需要理解传统 Chain 模型的局限性。
Chain 模型的工作方式
在 LangChain 中,一个典型执行流程如下:
text
Prompt
↓
LLM
↓
Tool
↓
Output
或者:
text
Question
↓
Retriever
↓
LLM
↓
Answer
整个过程是:
text
A → B → C → D
即:
线性执行(Linear Execution)
这种模式简单直接,非常适合:
- ChatBot
- RAG
- Tool Calling
等场景。
当 Agent 开始自主决策
问题开始出现。
例如一个 Research Agent:
text
用户问题
↓
任务规划
↓
搜索资料
↓
评估结果
↓
信息是否充分?
如果结果不足:
text
┌────────────┐
│ Information │
│ Not Enough │
└──────┬─────┘
↓
再次搜索
↓
再次评估
↓
生成报告
此时执行路径变成:
text
A → B → C
↑ ↓
└───┘
出现了:
- 循环
- 分支
- 动态决策
而这些并不是传统 Chain 模型擅长处理的问题。
企业级 Agent 的新需求
随着 Agent 开始进入企业生产环境,新的挑战进一步出现:
长时间运行任务
例如:
text
市场调研
↓
数据收集
↓
报告生成
↓
专家审核
↓
最终输出
可能运行数小时甚至数天。
人工审批节点
例如:
text
Agent
↓
生成方案
↓
人工审批
↓
继续执行
任务恢复能力
例如:
text
执行到第 8 步
↓
系统崩溃
↓
恢复执行
↓
从第 8 步继续
而不是重新开始。
多 Agent 协作
例如:
text
Supervisor
↓
┌───┼───┐
↓ ↓ ↓
研发Agent
产品Agent
测试Agent
多个 Agent 共同完成复杂任务。
LangGraph 的出现
为了应对这些问题,LangGraph 引入了新的执行模型:
text
State
↓
Node
↓
Node
↓
Conditional Edge
↓
Node
与传统 Chain 相比:
| 能力 | Chain | Graph |
|---|---|---|
| 顺序执行 | ✅ | ✅ |
| 条件分支 | ⚠️ | ✅ |
| 循环执行 | ❌ | ✅ |
| 状态管理 | ⚠️ | ✅ |
| 多 Agent | ⚠️ | ✅ |
| 任务恢复 | ❌ | ✅ |
从工程角度来看:
LangGraph 的出现,本质上是为了让 Agent 从"一次性调用程序"升级为"长期运行的状态化系统"。
1.3 本文对比维度说明
为了全面理解 LangChain 与 LangGraph 的区别,本文将从以下几个核心维度展开分析。
① 框架定位
分析:
- 两者解决什么问题
- 位于技术栈哪个层级
- 分别适合什么场景
重点回答:
为什么 LangGraph 不是 LangChain 的替代品?
② 架构设计思想
分析:
- Chain First
- Graph First
重点回答:
为什么复杂 Agent 更适合图结构?
③ 执行模型
分析:
- 顺序执行
- 条件路由
- 循环执行
- 动态决策
重点回答:
Agent 如何自主决定下一步行为?
④ 状态管理机制
分析:
- Memory
- State
- Checkpoint
重点回答:
Agent 如何维护长期任务状态?
⑤ Agent 构建能力
分析:
- ReAct
- Planning
- Reflection
- Multi-Agent
重点回答:
两者在 Agent 能力构建上的差异是什么?
⑥ 工作流编排能力
分析:
- DAG
- Workflow
- Human-in-the-Loop
重点回答:
企业级 Agent 为什么需要 Workflow Engine?
⑦ 容错与恢复机制
分析:
- Checkpoint
- Resume
- State Persistence
重点回答:
长任务失败后如何恢复执行?
⑧ 可观测性与扩展性
分析:
- Trace
- State Tracking
- Debugging
重点回答:
如何理解 Agent 的行为过程?
1.4 本章小结
随着 Agent Engineering 的兴起,LLM 应用开发正在经历从 Chain 架构 向 Graph 架构 的演进。
如果说 LangChain 解决的是:
如何快速构建 LLM 应用
那么 LangGraph 解决的则是:
如何构建复杂、可控、可恢复、可扩展的 Agent 系统
理解两者的差异,不仅是理解两个框架的区别,更是在理解下一代 Agent 系统的设计方向。
2. 框架定位对比
在正式分析 LangChain 与 LangGraph 的技术差异之前,首先需要明确两者在 Agent 技术栈中的定位。
很多开发者在学习 LangGraph 时,会下意识地将其视为 LangChain 的升级版,甚至认为两者是互斥关系。然而从架构设计角度来看,这种理解并不准确。
实际上,两者解决的是不同层级的问题:
- LangChain 关注能力组件的构建与集成;
- LangGraph 关注 Agent 的执行与编排。
理解这一点,是后续分析执行模型、状态管理以及工作流能力差异的基础。
2.1 LangChain 的设计目标
LangChain 诞生于 LLM 应用开发快速发展的阶段。
在大模型应用刚刚兴起时,开发者普遍面临以下问题:
- 不同模型接口不统一
- Prompt 管理方式混乱
- 工具调用缺乏标准化
- RAG 系统需要大量重复开发
- Agent 构建成本较高
因此 LangChain 的核心目标非常明确:
为开发者提供统一的 LLM 应用开发框架。
其设计理念可以概括为:
text
Build LLM Applications Faster
即:
帮助开发者快速构建基于大语言模型的应用。
LangChain 的核心职责
从能力角度看,LangChain主要负责以下几个方面:
Model 抽象
统一接入不同模型供应商:
python
ChatOpenAI()
ChatAnthropic()
ChatGoogleGenerativeAI()
开发者无需关心底层接口差异。
Prompt 管理
通过模板化方式组织 Prompt:
python
prompt = ChatPromptTemplate.from_template(...)
解决 Prompt 复用与维护问题。
Tool 集成
统一工具调用接口:
python
@tool
def search():
pass
使 Agent 可以访问外部能力。
例如:
- 搜索引擎
- 数据库
- API
- 文件系统
Retriever 与 RAG
支持:
text
文档加载
↓
向量化
↓
向量检索
↓
上下文增强
帮助开发者快速搭建知识库问答系统。
Agent 构建
支持:
- ReAct Agent
- Tool Calling Agent
- Structured Output Agent
快速实现智能体原型。
LangChain 的本质
从架构角度看:
text
Prompt
Tool
Model
Retriever
Parser
Memory
这些都是:
Agent 的能力组件(Capabilities)
因此 LangChain 更像是:
text
Agent Components Library
或者:
text
LLM Application Framework
其核心价值在于:
提供丰富的标准化组件,降低 LLM 应用开发门槛。
2.2 LangGraph 的设计目标
随着 Agent 系统复杂度不断提升,开发者逐渐发现:
即使拥有大量能力组件,也并不意味着能够构建复杂 Agent。
因为新的问题开始出现:
- Agent 如何规划任务?
- Agent 如何维护状态?
- Agent 如何决定下一步行为?
- Agent 如何支持循环执行?
- Agent 如何恢复中断任务?
这些问题并不是组件问题。
而是:
Workflow 问题。
LangGraph 要解决什么?
LangGraph 的设计目标可以概括为:
构建可控、可状态化、可恢复的 Agent Workflow。
其关注重点已经不再是:
text
Agent 能做什么
而是:
text
Agent 应该如何完成任务
LangGraph 的核心抽象
LangGraph 引入了三个关键概念:
State
任务运行状态
例如:
python
{
"messages": [],
"plan": [],
"current_step": 3
}
Node
执行节点
例如:
text
Planner
Searcher
Critic
Executor
Edge
节点之间的流转关系
例如:
text
Planner
↓
Searcher
↓
Critic
或者:
text
Critic
↓
Satisfied?
/ \
Yes No
| |
End Planner
LangGraph 的本质
从架构角度看:
LangGraph 更接近:
text
Workflow Engine
而非:
text
Component Framework
其职责是:
- 管理执行流程
- 管理状态流转
- 管理节点调度
- 管理任务生命周期
因此:
LangGraph 本质上是一个面向 Agent 的工作流编排框架。
2.3 两者在 Agent 技术栈中的位置
如果从 Agent 系统整体架构来看:
text
┌──────────────────────┐
│ Agent App │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ LangGraph │
│ Workflow Runtime │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ LangChain │
│ Components Layer │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ LLM Provider │
└──────────────────────┘
可以发现:
LangChain 与 LangGraph 实际处于不同层级。
LangChain 位于能力层
负责提供:
text
Prompt
Tool
Retriever
Memory
Model
类似于:
text
SDK
LangGraph 位于运行时层
负责提供:
text
State
Node
Edge
Execution
Checkpoint
类似于:
text
Workflow Runtime
一个形象的比喻
如果把 Agent 系统看作一家工厂:
LangChain
负责提供:
text
机器
工具
流水线设备
即:
生产资源。
LangGraph
负责提供:
text
调度系统
流程控制系统
任务管理系统
即:
生产组织能力。
因此:
text
LangChain ≠ LangGraph
LangChain + LangGraph
↓
完整 Agent 系统
2.4 适用问题域分析
理解定位之后,就可以分析两者分别适用于哪些问题。
LangChain 适用场景
ChatBot
典型流程:
text
用户
↓
LLM
↓
回复
线性执行即可完成。
RAG 系统
流程:
text
问题
↓
检索
↓
生成
↓
回答
属于标准 Pipeline。
Tool Calling
流程:
text
问题
↓
Agent
↓
Tool
↓
返回结果
无需复杂状态管理。
MVP 验证
特点:
- 开发速度优先
- 快速上线
- 功能验证
LangChain 足够满足需求。
LangGraph 适用场景
Research Agent
流程:
text
规划
↓
搜索
↓
评估
↓
继续搜索
↓
总结
存在循环与动态决策。
Coding Agent
例如:
text
生成代码
↓
执行测试
↓
发现错误
↓
修复代码
↓
重新测试
形成反馈闭环。
Deep Research
例如:
text
搜集资料
↓
分析资料
↓
发现缺口
↓
补充搜索
↓
生成报告
需要长期运行状态。
Multi-Agent
例如:
text
Supervisor
↓
多个 Agent
↓
结果汇总
需要复杂调度机制。
企业级 Agent 平台
例如:
text
Agent
↓
审批
↓
执行
↓
审计
需要:
- 状态持久化
- Checkpoint
- Human-in-the-Loop
2.5 本章小结
从框架定位角度来看,LangChain 与 LangGraph 并不是同一层面的产品。
LangChain 更关注:
如何为 Agent 提供能力。
因此它本质上是一个 LLM 应用开发框架。
而 LangGraph 更关注:
如何组织 Agent 的行为。
因此它本质上是一个 Agent 工作流编排框架。
二者的关系可以总结为:
| 维度 | LangChain | LangGraph |
|---|---|---|
| 核心定位 | LLM Application Framework | Agent Workflow Framework |
| 关注重点 | 能力组件 | 工作流编排 |
| 核心抽象 | Prompt、Tool、Model | State、Node、Edge |
| 解决问题 | Agent 能做什么 | Agent 如何完成任务 |
| 抽象层级 | 组件层 | 运行时层 |
| 典型场景 | ChatBot、RAG | Research Agent、Coding Agent |
从某种意义上说:
LangChain 是 Agent 的"能力库",而 LangGraph 是 Agent 的"操作系统"。
3. ⭐ 核心理论框架:LLM Agent System 四层模型
在对 LangChain 与 LangGraph 进行对比之前,需要建立一个统一的分析坐标系。
否则不同章节的对比将停留在"功能层面",无法解释其本质差异。
本章提出一个通用抽象:
LLM Agent 系统 = 四层计算架构模型
3.1 LLM Agent 系统四层结构
#mermaid-svg-Kw9KqcyPUfJKgABr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Kw9KqcyPUfJKgABr .error-icon{fill:#552222;}#mermaid-svg-Kw9KqcyPUfJKgABr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Kw9KqcyPUfJKgABr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Kw9KqcyPUfJKgABr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Kw9KqcyPUfJKgABr .marker.cross{stroke:#333333;}#mermaid-svg-Kw9KqcyPUfJKgABr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Kw9KqcyPUfJKgABr p{margin:0;}#mermaid-svg-Kw9KqcyPUfJKgABr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Kw9KqcyPUfJKgABr .cluster-label text{fill:#333;}#mermaid-svg-Kw9KqcyPUfJKgABr .cluster-label span{color:#333;}#mermaid-svg-Kw9KqcyPUfJKgABr .cluster-label span p{background-color:transparent;}#mermaid-svg-Kw9KqcyPUfJKgABr .label text,#mermaid-svg-Kw9KqcyPUfJKgABr span{fill:#333;color:#333;}#mermaid-svg-Kw9KqcyPUfJKgABr .node rect,#mermaid-svg-Kw9KqcyPUfJKgABr .node circle,#mermaid-svg-Kw9KqcyPUfJKgABr .node ellipse,#mermaid-svg-Kw9KqcyPUfJKgABr .node polygon,#mermaid-svg-Kw9KqcyPUfJKgABr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Kw9KqcyPUfJKgABr .rough-node .label text,#mermaid-svg-Kw9KqcyPUfJKgABr .node .label text,#mermaid-svg-Kw9KqcyPUfJKgABr .image-shape .label,#mermaid-svg-Kw9KqcyPUfJKgABr .icon-shape .label{text-anchor:middle;}#mermaid-svg-Kw9KqcyPUfJKgABr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Kw9KqcyPUfJKgABr .rough-node .label,#mermaid-svg-Kw9KqcyPUfJKgABr .node .label,#mermaid-svg-Kw9KqcyPUfJKgABr .image-shape .label,#mermaid-svg-Kw9KqcyPUfJKgABr .icon-shape .label{text-align:center;}#mermaid-svg-Kw9KqcyPUfJKgABr .node.clickable{cursor:pointer;}#mermaid-svg-Kw9KqcyPUfJKgABr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Kw9KqcyPUfJKgABr .arrowheadPath{fill:#333333;}#mermaid-svg-Kw9KqcyPUfJKgABr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Kw9KqcyPUfJKgABr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Kw9KqcyPUfJKgABr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Kw9KqcyPUfJKgABr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Kw9KqcyPUfJKgABr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Kw9KqcyPUfJKgABr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Kw9KqcyPUfJKgABr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Kw9KqcyPUfJKgABr .cluster text{fill:#333;}#mermaid-svg-Kw9KqcyPUfJKgABr .cluster span{color:#333;}#mermaid-svg-Kw9KqcyPUfJKgABr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Kw9KqcyPUfJKgABr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Kw9KqcyPUfJKgABr rect.text{fill:none;stroke-width:0;}#mermaid-svg-Kw9KqcyPUfJKgABr .icon-shape,#mermaid-svg-Kw9KqcyPUfJKgABr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Kw9KqcyPUfJKgABr .icon-shape p,#mermaid-svg-Kw9KqcyPUfJKgABr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Kw9KqcyPUfJKgABr .icon-shape .label rect,#mermaid-svg-Kw9KqcyPUfJKgABr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Kw9KqcyPUfJKgABr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Kw9KqcyPUfJKgABr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Kw9KqcyPUfJKgABr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Capability Layer
能力层
Control Layer
控制层
Runtime Layer
运行时层
Orchestration Layer
编排层
Agent Application
最终系统
四层核心定义
| 层级 | 核心问题 | 本质 |
|---|---|---|
| Capability Layer | Agent 能做什么 | 能力组件 |
| Control Layer | Agent 如何决策 | 决策机制 |
| Runtime Layer | Agent 如何持续运行 | 执行系统 |
| Orchestration Layer | Agent 如何组织流程 | 工作流引擎 |
3.2 Capability Layer(能力层)
------ Agent 的能力基础
Capability Layer 是 LLM Agent 的"能力来源",主要由 LangChain 提供。
核心组成
#mermaid-svg-d5aIWbG1nN1sG9cr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-d5aIWbG1nN1sG9cr .error-icon{fill:#552222;}#mermaid-svg-d5aIWbG1nN1sG9cr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-d5aIWbG1nN1sG9cr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-d5aIWbG1nN1sG9cr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-d5aIWbG1nN1sG9cr .marker.cross{stroke:#333333;}#mermaid-svg-d5aIWbG1nN1sG9cr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-d5aIWbG1nN1sG9cr p{margin:0;}#mermaid-svg-d5aIWbG1nN1sG9cr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-d5aIWbG1nN1sG9cr .cluster-label text{fill:#333;}#mermaid-svg-d5aIWbG1nN1sG9cr .cluster-label span{color:#333;}#mermaid-svg-d5aIWbG1nN1sG9cr .cluster-label span p{background-color:transparent;}#mermaid-svg-d5aIWbG1nN1sG9cr .label text,#mermaid-svg-d5aIWbG1nN1sG9cr span{fill:#333;color:#333;}#mermaid-svg-d5aIWbG1nN1sG9cr .node rect,#mermaid-svg-d5aIWbG1nN1sG9cr .node circle,#mermaid-svg-d5aIWbG1nN1sG9cr .node ellipse,#mermaid-svg-d5aIWbG1nN1sG9cr .node polygon,#mermaid-svg-d5aIWbG1nN1sG9cr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-d5aIWbG1nN1sG9cr .rough-node .label text,#mermaid-svg-d5aIWbG1nN1sG9cr .node .label text,#mermaid-svg-d5aIWbG1nN1sG9cr .image-shape .label,#mermaid-svg-d5aIWbG1nN1sG9cr .icon-shape .label{text-anchor:middle;}#mermaid-svg-d5aIWbG1nN1sG9cr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-d5aIWbG1nN1sG9cr .rough-node .label,#mermaid-svg-d5aIWbG1nN1sG9cr .node .label,#mermaid-svg-d5aIWbG1nN1sG9cr .image-shape .label,#mermaid-svg-d5aIWbG1nN1sG9cr .icon-shape .label{text-align:center;}#mermaid-svg-d5aIWbG1nN1sG9cr .node.clickable{cursor:pointer;}#mermaid-svg-d5aIWbG1nN1sG9cr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-d5aIWbG1nN1sG9cr .arrowheadPath{fill:#333333;}#mermaid-svg-d5aIWbG1nN1sG9cr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-d5aIWbG1nN1sG9cr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-d5aIWbG1nN1sG9cr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d5aIWbG1nN1sG9cr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-d5aIWbG1nN1sG9cr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d5aIWbG1nN1sG9cr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-d5aIWbG1nN1sG9cr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-d5aIWbG1nN1sG9cr .cluster text{fill:#333;}#mermaid-svg-d5aIWbG1nN1sG9cr .cluster span{color:#333;}#mermaid-svg-d5aIWbG1nN1sG9cr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-d5aIWbG1nN1sG9cr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-d5aIWbG1nN1sG9cr rect.text{fill:none;stroke-width:0;}#mermaid-svg-d5aIWbG1nN1sG9cr .icon-shape,#mermaid-svg-d5aIWbG1nN1sG9cr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d5aIWbG1nN1sG9cr .icon-shape p,#mermaid-svg-d5aIWbG1nN1sG9cr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-d5aIWbG1nN1sG9cr .icon-shape .label rect,#mermaid-svg-d5aIWbG1nN1sG9cr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d5aIWbG1nN1sG9cr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-d5aIWbG1nN1sG9cr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-d5aIWbG1nN1sG9cr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} LLM Models
大语言模型
Prompt System
提示系统
Tool System
工具系统
RAG / Retriever
检索增强
Memory
记忆
主要能力
- LLM 调用抽象(OpenAI / Claude / Gemini)
- Prompt 模板系统
- Tool Calling(函数 / API / DB)
- RAG 检索增强
- 基础 Memory
本质
Capability Layer 只回答:
❗ Agent "能做什么"
但不负责:
- 如何执行
- 如何决策
- 如何组织流程
层级定位
text
Capability Layer = Agent 能力组件库
3.3 Control Layer(控制层)
------ Agent 的决策系统
Control Layer 负责:
Agent 下一步该做什么?
核心机制
#mermaid-svg-J4nzyEFrKdQaiid7{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-J4nzyEFrKdQaiid7 .error-icon{fill:#552222;}#mermaid-svg-J4nzyEFrKdQaiid7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-J4nzyEFrKdQaiid7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-J4nzyEFrKdQaiid7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-J4nzyEFrKdQaiid7 .marker.cross{stroke:#333333;}#mermaid-svg-J4nzyEFrKdQaiid7 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-J4nzyEFrKdQaiid7 p{margin:0;}#mermaid-svg-J4nzyEFrKdQaiid7 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-J4nzyEFrKdQaiid7 .cluster-label text{fill:#333;}#mermaid-svg-J4nzyEFrKdQaiid7 .cluster-label span{color:#333;}#mermaid-svg-J4nzyEFrKdQaiid7 .cluster-label span p{background-color:transparent;}#mermaid-svg-J4nzyEFrKdQaiid7 .label text,#mermaid-svg-J4nzyEFrKdQaiid7 span{fill:#333;color:#333;}#mermaid-svg-J4nzyEFrKdQaiid7 .node rect,#mermaid-svg-J4nzyEFrKdQaiid7 .node circle,#mermaid-svg-J4nzyEFrKdQaiid7 .node ellipse,#mermaid-svg-J4nzyEFrKdQaiid7 .node polygon,#mermaid-svg-J4nzyEFrKdQaiid7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-J4nzyEFrKdQaiid7 .rough-node .label text,#mermaid-svg-J4nzyEFrKdQaiid7 .node .label text,#mermaid-svg-J4nzyEFrKdQaiid7 .image-shape .label,#mermaid-svg-J4nzyEFrKdQaiid7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-J4nzyEFrKdQaiid7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-J4nzyEFrKdQaiid7 .rough-node .label,#mermaid-svg-J4nzyEFrKdQaiid7 .node .label,#mermaid-svg-J4nzyEFrKdQaiid7 .image-shape .label,#mermaid-svg-J4nzyEFrKdQaiid7 .icon-shape .label{text-align:center;}#mermaid-svg-J4nzyEFrKdQaiid7 .node.clickable{cursor:pointer;}#mermaid-svg-J4nzyEFrKdQaiid7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-J4nzyEFrKdQaiid7 .arrowheadPath{fill:#333333;}#mermaid-svg-J4nzyEFrKdQaiid7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-J4nzyEFrKdQaiid7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-J4nzyEFrKdQaiid7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-J4nzyEFrKdQaiid7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-J4nzyEFrKdQaiid7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-J4nzyEFrKdQaiid7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-J4nzyEFrKdQaiid7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-J4nzyEFrKdQaiid7 .cluster text{fill:#333;}#mermaid-svg-J4nzyEFrKdQaiid7 .cluster span{color:#333;}#mermaid-svg-J4nzyEFrKdQaiid7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-J4nzyEFrKdQaiid7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-J4nzyEFrKdQaiid7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-J4nzyEFrKdQaiid7 .icon-shape,#mermaid-svg-J4nzyEFrKdQaiid7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-J4nzyEFrKdQaiid7 .icon-shape p,#mermaid-svg-J4nzyEFrKdQaiid7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-J4nzyEFrKdQaiid7 .icon-shape .label rect,#mermaid-svg-J4nzyEFrKdQaiid7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-J4nzyEFrKdQaiid7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-J4nzyEFrKdQaiid7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-J4nzyEFrKdQaiid7 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Tool Call
调用工具
Direct Answer
直接回答
Next Step
继续推理
User Input
用户输入
Reasoning Engine
推理引擎
Decision
决策
Tool Execution
工具执行
LLM Response
模型回复
关键能力
① Tool Selection
- 是否调用工具
- 调用哪个工具
- 参数如何生成
② Reasoning Pattern
- ReAct
- Plan-and-Execute
- Reflection
- Self-critique
③ Routing(路由)
- 条件分支
- 动态路径选择
- 多步骤推理
本质
Control Layer =
Agent Decision Engine(决策引擎)
LangChain vs LangGraph 对比
| 能力 | LangChain | LangGraph |
|---|---|---|
| Tool Routing | 基础 | 强 |
| Loop Control | 弱 | 原生 |
| Dynamic Decision | 限制 | 完整 |
3.4 Runtime Layer(运行时层)
------ Agent 的执行系统
Runtime Layer 负责:
Agent 如何长期运行
核心能力
#mermaid-svg-iVMQ5CEmIF9bNRqE{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-iVMQ5CEmIF9bNRqE .error-icon{fill:#552222;}#mermaid-svg-iVMQ5CEmIF9bNRqE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-iVMQ5CEmIF9bNRqE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .marker.cross{stroke:#333333;}#mermaid-svg-iVMQ5CEmIF9bNRqE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-iVMQ5CEmIF9bNRqE p{margin:0;}#mermaid-svg-iVMQ5CEmIF9bNRqE .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .cluster-label text{fill:#333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .cluster-label span{color:#333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .cluster-label span p{background-color:transparent;}#mermaid-svg-iVMQ5CEmIF9bNRqE .label text,#mermaid-svg-iVMQ5CEmIF9bNRqE span{fill:#333;color:#333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .node rect,#mermaid-svg-iVMQ5CEmIF9bNRqE .node circle,#mermaid-svg-iVMQ5CEmIF9bNRqE .node ellipse,#mermaid-svg-iVMQ5CEmIF9bNRqE .node polygon,#mermaid-svg-iVMQ5CEmIF9bNRqE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-iVMQ5CEmIF9bNRqE .rough-node .label text,#mermaid-svg-iVMQ5CEmIF9bNRqE .node .label text,#mermaid-svg-iVMQ5CEmIF9bNRqE .image-shape .label,#mermaid-svg-iVMQ5CEmIF9bNRqE .icon-shape .label{text-anchor:middle;}#mermaid-svg-iVMQ5CEmIF9bNRqE .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-iVMQ5CEmIF9bNRqE .rough-node .label,#mermaid-svg-iVMQ5CEmIF9bNRqE .node .label,#mermaid-svg-iVMQ5CEmIF9bNRqE .image-shape .label,#mermaid-svg-iVMQ5CEmIF9bNRqE .icon-shape .label{text-align:center;}#mermaid-svg-iVMQ5CEmIF9bNRqE .node.clickable{cursor:pointer;}#mermaid-svg-iVMQ5CEmIF9bNRqE .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .arrowheadPath{fill:#333333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-iVMQ5CEmIF9bNRqE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iVMQ5CEmIF9bNRqE .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-iVMQ5CEmIF9bNRqE .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iVMQ5CEmIF9bNRqE .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-iVMQ5CEmIF9bNRqE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-iVMQ5CEmIF9bNRqE .cluster text{fill:#333;}#mermaid-svg-iVMQ5CEmIF9bNRqE .cluster span{color:#333;}#mermaid-svg-iVMQ5CEmIF9bNRqE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-iVMQ5CEmIF9bNRqE .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-iVMQ5CEmIF9bNRqE rect.text{fill:none;stroke-width:0;}#mermaid-svg-iVMQ5CEmIF9bNRqE .icon-shape,#mermaid-svg-iVMQ5CEmIF9bNRqE .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-iVMQ5CEmIF9bNRqE .icon-shape p,#mermaid-svg-iVMQ5CEmIF9bNRqE .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-iVMQ5CEmIF9bNRqE .icon-shape .label rect,#mermaid-svg-iVMQ5CEmIF9bNRqE .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-iVMQ5CEmIF9bNRqE .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-iVMQ5CEmIF9bNRqE .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-iVMQ5CEmIF9bNRqE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} State
状态管理
Checkpoint
断点保存
Persistence
持久化存储
Resume
恢复执行
关键能力
① State Management
- 当前任务状态
- 中间结果
- 全局上下文
② Checkpoint
- 断点保存
- 执行进度记录
- 支持恢复
③ Persistence
- Redis / DB / File
- 长期状态存储
④ Long-running Execution
- 数小时 / 数天任务
- 异步执行
- 外部触发恢复
本质
Runtime Layer =
Agent Execution Engine(执行引擎)
LangChain vs LangGraph
| 能力 | LangChain | LangGraph |
|---|---|---|
| State First | 弱 | 强 |
| Resume | 困难 | 原生 |
| Long Task | 不适合 | 原生支持 |
3.5 Orchestration Layer(编排层)
------ Agent 的流程系统(LangGraph 核心)
Orchestration Layer 负责:
Agent 如何组织整个执行流程
Graph 执行模型
#mermaid-svg-FucsdcWB9bGWL8W8{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-FucsdcWB9bGWL8W8 .error-icon{fill:#552222;}#mermaid-svg-FucsdcWB9bGWL8W8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-FucsdcWB9bGWL8W8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-FucsdcWB9bGWL8W8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-FucsdcWB9bGWL8W8 .marker.cross{stroke:#333333;}#mermaid-svg-FucsdcWB9bGWL8W8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-FucsdcWB9bGWL8W8 p{margin:0;}#mermaid-svg-FucsdcWB9bGWL8W8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-FucsdcWB9bGWL8W8 .cluster-label text{fill:#333;}#mermaid-svg-FucsdcWB9bGWL8W8 .cluster-label span{color:#333;}#mermaid-svg-FucsdcWB9bGWL8W8 .cluster-label span p{background-color:transparent;}#mermaid-svg-FucsdcWB9bGWL8W8 .label text,#mermaid-svg-FucsdcWB9bGWL8W8 span{fill:#333;color:#333;}#mermaid-svg-FucsdcWB9bGWL8W8 .node rect,#mermaid-svg-FucsdcWB9bGWL8W8 .node circle,#mermaid-svg-FucsdcWB9bGWL8W8 .node ellipse,#mermaid-svg-FucsdcWB9bGWL8W8 .node polygon,#mermaid-svg-FucsdcWB9bGWL8W8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-FucsdcWB9bGWL8W8 .rough-node .label text,#mermaid-svg-FucsdcWB9bGWL8W8 .node .label text,#mermaid-svg-FucsdcWB9bGWL8W8 .image-shape .label,#mermaid-svg-FucsdcWB9bGWL8W8 .icon-shape .label{text-anchor:middle;}#mermaid-svg-FucsdcWB9bGWL8W8 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-FucsdcWB9bGWL8W8 .rough-node .label,#mermaid-svg-FucsdcWB9bGWL8W8 .node .label,#mermaid-svg-FucsdcWB9bGWL8W8 .image-shape .label,#mermaid-svg-FucsdcWB9bGWL8W8 .icon-shape .label{text-align:center;}#mermaid-svg-FucsdcWB9bGWL8W8 .node.clickable{cursor:pointer;}#mermaid-svg-FucsdcWB9bGWL8W8 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-FucsdcWB9bGWL8W8 .arrowheadPath{fill:#333333;}#mermaid-svg-FucsdcWB9bGWL8W8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-FucsdcWB9bGWL8W8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-FucsdcWB9bGWL8W8 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-FucsdcWB9bGWL8W8 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-FucsdcWB9bGWL8W8 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-FucsdcWB9bGWL8W8 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-FucsdcWB9bGWL8W8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-FucsdcWB9bGWL8W8 .cluster text{fill:#333;}#mermaid-svg-FucsdcWB9bGWL8W8 .cluster span{color:#333;}#mermaid-svg-FucsdcWB9bGWL8W8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-FucsdcWB9bGWL8W8 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-FucsdcWB9bGWL8W8 rect.text{fill:none;stroke-width:0;}#mermaid-svg-FucsdcWB9bGWL8W8 .icon-shape,#mermaid-svg-FucsdcWB9bGWL8W8 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-FucsdcWB9bGWL8W8 .icon-shape p,#mermaid-svg-FucsdcWB9bGWL8W8 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-FucsdcWB9bGWL8W8 .icon-shape .label rect,#mermaid-svg-FucsdcWB9bGWL8W8 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-FucsdcWB9bGWL8W8 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-FucsdcWB9bGWL8W8 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-FucsdcWB9bGWL8W8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Yes
通过
No
不通过
Start
开始
Node A: Planner
规划节点
Node B: Searcher
搜索节点
Node C: Critic
评估节点
End
结束
核心能力
① Graph Structure
- Node(节点)
- Edge(边)
- Directed Graph(有向图)
② Flow Control
- 顺序执行
- 条件分支
- 循环执行
- 动态跳转
③ Parallel Execution
#mermaid-svg-wGdvnw8z6csTroZE{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wGdvnw8z6csTroZE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wGdvnw8z6csTroZE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wGdvnw8z6csTroZE .error-icon{fill:#552222;}#mermaid-svg-wGdvnw8z6csTroZE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wGdvnw8z6csTroZE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wGdvnw8z6csTroZE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wGdvnw8z6csTroZE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wGdvnw8z6csTroZE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wGdvnw8z6csTroZE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wGdvnw8z6csTroZE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wGdvnw8z6csTroZE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wGdvnw8z6csTroZE .marker.cross{stroke:#333333;}#mermaid-svg-wGdvnw8z6csTroZE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wGdvnw8z6csTroZE p{margin:0;}#mermaid-svg-wGdvnw8z6csTroZE .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-wGdvnw8z6csTroZE .cluster-label text{fill:#333;}#mermaid-svg-wGdvnw8z6csTroZE .cluster-label span{color:#333;}#mermaid-svg-wGdvnw8z6csTroZE .cluster-label span p{background-color:transparent;}#mermaid-svg-wGdvnw8z6csTroZE .label text,#mermaid-svg-wGdvnw8z6csTroZE span{fill:#333;color:#333;}#mermaid-svg-wGdvnw8z6csTroZE .node rect,#mermaid-svg-wGdvnw8z6csTroZE .node circle,#mermaid-svg-wGdvnw8z6csTroZE .node ellipse,#mermaid-svg-wGdvnw8z6csTroZE .node polygon,#mermaid-svg-wGdvnw8z6csTroZE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wGdvnw8z6csTroZE .rough-node .label text,#mermaid-svg-wGdvnw8z6csTroZE .node .label text,#mermaid-svg-wGdvnw8z6csTroZE .image-shape .label,#mermaid-svg-wGdvnw8z6csTroZE .icon-shape .label{text-anchor:middle;}#mermaid-svg-wGdvnw8z6csTroZE .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wGdvnw8z6csTroZE .rough-node .label,#mermaid-svg-wGdvnw8z6csTroZE .node .label,#mermaid-svg-wGdvnw8z6csTroZE .image-shape .label,#mermaid-svg-wGdvnw8z6csTroZE .icon-shape .label{text-align:center;}#mermaid-svg-wGdvnw8z6csTroZE .node.clickable{cursor:pointer;}#mermaid-svg-wGdvnw8z6csTroZE .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wGdvnw8z6csTroZE .arrowheadPath{fill:#333333;}#mermaid-svg-wGdvnw8z6csTroZE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wGdvnw8z6csTroZE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wGdvnw8z6csTroZE .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wGdvnw8z6csTroZE .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wGdvnw8z6csTroZE .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wGdvnw8z6csTroZE .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-wGdvnw8z6csTroZE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wGdvnw8z6csTroZE .cluster text{fill:#333;}#mermaid-svg-wGdvnw8z6csTroZE .cluster span{color:#333;}#mermaid-svg-wGdvnw8z6csTroZE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wGdvnw8z6csTroZE .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-wGdvnw8z6csTroZE rect.text{fill:none;stroke-width:0;}#mermaid-svg-wGdvnw8z6csTroZE .icon-shape,#mermaid-svg-wGdvnw8z6csTroZE .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wGdvnw8z6csTroZE .icon-shape p,#mermaid-svg-wGdvnw8z6csTroZE .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wGdvnw8z6csTroZE .icon-shape .label rect,#mermaid-svg-wGdvnw8z6csTroZE .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wGdvnw8z6csTroZE .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-wGdvnw8z6csTroZE .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wGdvnw8z6csTroZE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Supervisor
调度器
Agent A
智能体A
Agent B
智能体B
Agent C
智能体C
Aggregator
结果汇总
④ Human-in-the-loop
- 人工审批
- 中断等待
- 外部输入恢复
本质
Orchestration Layer =
Workflow Engine(工作流引擎)
LangGraph 核心优势
| 能力 | LangChain | LangGraph |
|---|---|---|
| Graph Model | ❌ | ✅ |
| Loop Flow | ❌ | ✅ |
| Multi-Agent | 限制 | 原生 |
| Workflow Engine | ❌ | ✅ |
3.6 四层模型总结
3.6.1 总体结构
#mermaid-svg-HA0vAC6qXCzHujIZ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-HA0vAC6qXCzHujIZ .error-icon{fill:#552222;}#mermaid-svg-HA0vAC6qXCzHujIZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-HA0vAC6qXCzHujIZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-HA0vAC6qXCzHujIZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-HA0vAC6qXCzHujIZ .marker.cross{stroke:#333333;}#mermaid-svg-HA0vAC6qXCzHujIZ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-HA0vAC6qXCzHujIZ p{margin:0;}#mermaid-svg-HA0vAC6qXCzHujIZ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-HA0vAC6qXCzHujIZ .cluster-label text{fill:#333;}#mermaid-svg-HA0vAC6qXCzHujIZ .cluster-label span{color:#333;}#mermaid-svg-HA0vAC6qXCzHujIZ .cluster-label span p{background-color:transparent;}#mermaid-svg-HA0vAC6qXCzHujIZ .label text,#mermaid-svg-HA0vAC6qXCzHujIZ span{fill:#333;color:#333;}#mermaid-svg-HA0vAC6qXCzHujIZ .node rect,#mermaid-svg-HA0vAC6qXCzHujIZ .node circle,#mermaid-svg-HA0vAC6qXCzHujIZ .node ellipse,#mermaid-svg-HA0vAC6qXCzHujIZ .node polygon,#mermaid-svg-HA0vAC6qXCzHujIZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-HA0vAC6qXCzHujIZ .rough-node .label text,#mermaid-svg-HA0vAC6qXCzHujIZ .node .label text,#mermaid-svg-HA0vAC6qXCzHujIZ .image-shape .label,#mermaid-svg-HA0vAC6qXCzHujIZ .icon-shape .label{text-anchor:middle;}#mermaid-svg-HA0vAC6qXCzHujIZ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-HA0vAC6qXCzHujIZ .rough-node .label,#mermaid-svg-HA0vAC6qXCzHujIZ .node .label,#mermaid-svg-HA0vAC6qXCzHujIZ .image-shape .label,#mermaid-svg-HA0vAC6qXCzHujIZ .icon-shape .label{text-align:center;}#mermaid-svg-HA0vAC6qXCzHujIZ .node.clickable{cursor:pointer;}#mermaid-svg-HA0vAC6qXCzHujIZ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-HA0vAC6qXCzHujIZ .arrowheadPath{fill:#333333;}#mermaid-svg-HA0vAC6qXCzHujIZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-HA0vAC6qXCzHujIZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-HA0vAC6qXCzHujIZ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-HA0vAC6qXCzHujIZ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-HA0vAC6qXCzHujIZ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-HA0vAC6qXCzHujIZ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-HA0vAC6qXCzHujIZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-HA0vAC6qXCzHujIZ .cluster text{fill:#333;}#mermaid-svg-HA0vAC6qXCzHujIZ .cluster span{color:#333;}#mermaid-svg-HA0vAC6qXCzHujIZ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-HA0vAC6qXCzHujIZ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-HA0vAC6qXCzHujIZ rect.text{fill:none;stroke-width:0;}#mermaid-svg-HA0vAC6qXCzHujIZ .icon-shape,#mermaid-svg-HA0vAC6qXCzHujIZ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-HA0vAC6qXCzHujIZ .icon-shape p,#mermaid-svg-HA0vAC6qXCzHujIZ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-HA0vAC6qXCzHujIZ .icon-shape .label rect,#mermaid-svg-HA0vAC6qXCzHujIZ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-HA0vAC6qXCzHujIZ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-HA0vAC6qXCzHujIZ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-HA0vAC6qXCzHujIZ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Capability Layer
LangChain主导
Control Layer
LangChain + LangGraph
Runtime Layer
LangGraph主导
Orchestration Layer
LangGraph主导
3.6.2 LangChain vs LangGraph 归属
| 层级 | LangChain | LangGraph |
|---|---|---|
| Capability | 强 | 复用 |
| Control | 中 | 强 |
| Runtime | 弱 | 强 |
| Orchestration | 弱 | 强 |
3.6.3 核心结论
text
LangChain = 能力组件体系(Capability System)
LangGraph = Agent运行与编排系统(Runtime + Workflow System)
4. 架构设计思想对比:Chain Model vs Graph Model
在明确 LangChain 与 LangGraph 的定位差异之后,需要进一步进入更本质的一层:
它们为什么会采用完全不同的"结构模型"?
这一章不再停留在功能层,而是从计算结构与系统建模方式出发分析两者差异。
4.1 Chain 模型(LangChain)
------ 线性流水线式执行模型
LangChain 的核心抽象是:
Chain(链式结构)
其本质是一种:
text
Pipeline Execution Model(流水线执行模型)
基本结构
#mermaid-svg-OS9FfI2r5QbxBhBz{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-OS9FfI2r5QbxBhBz .error-icon{fill:#552222;}#mermaid-svg-OS9FfI2r5QbxBhBz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-OS9FfI2r5QbxBhBz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-OS9FfI2r5QbxBhBz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-OS9FfI2r5QbxBhBz .marker.cross{stroke:#333333;}#mermaid-svg-OS9FfI2r5QbxBhBz svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-OS9FfI2r5QbxBhBz p{margin:0;}#mermaid-svg-OS9FfI2r5QbxBhBz .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-OS9FfI2r5QbxBhBz .cluster-label text{fill:#333;}#mermaid-svg-OS9FfI2r5QbxBhBz .cluster-label span{color:#333;}#mermaid-svg-OS9FfI2r5QbxBhBz .cluster-label span p{background-color:transparent;}#mermaid-svg-OS9FfI2r5QbxBhBz .label text,#mermaid-svg-OS9FfI2r5QbxBhBz span{fill:#333;color:#333;}#mermaid-svg-OS9FfI2r5QbxBhBz .node rect,#mermaid-svg-OS9FfI2r5QbxBhBz .node circle,#mermaid-svg-OS9FfI2r5QbxBhBz .node ellipse,#mermaid-svg-OS9FfI2r5QbxBhBz .node polygon,#mermaid-svg-OS9FfI2r5QbxBhBz .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-OS9FfI2r5QbxBhBz .rough-node .label text,#mermaid-svg-OS9FfI2r5QbxBhBz .node .label text,#mermaid-svg-OS9FfI2r5QbxBhBz .image-shape .label,#mermaid-svg-OS9FfI2r5QbxBhBz .icon-shape .label{text-anchor:middle;}#mermaid-svg-OS9FfI2r5QbxBhBz .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-OS9FfI2r5QbxBhBz .rough-node .label,#mermaid-svg-OS9FfI2r5QbxBhBz .node .label,#mermaid-svg-OS9FfI2r5QbxBhBz .image-shape .label,#mermaid-svg-OS9FfI2r5QbxBhBz .icon-shape .label{text-align:center;}#mermaid-svg-OS9FfI2r5QbxBhBz .node.clickable{cursor:pointer;}#mermaid-svg-OS9FfI2r5QbxBhBz .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-OS9FfI2r5QbxBhBz .arrowheadPath{fill:#333333;}#mermaid-svg-OS9FfI2r5QbxBhBz .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-OS9FfI2r5QbxBhBz .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-OS9FfI2r5QbxBhBz .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OS9FfI2r5QbxBhBz .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-OS9FfI2r5QbxBhBz .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OS9FfI2r5QbxBhBz .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-OS9FfI2r5QbxBhBz .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-OS9FfI2r5QbxBhBz .cluster text{fill:#333;}#mermaid-svg-OS9FfI2r5QbxBhBz .cluster span{color:#333;}#mermaid-svg-OS9FfI2r5QbxBhBz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-OS9FfI2r5QbxBhBz .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-OS9FfI2r5QbxBhBz rect.text{fill:none;stroke-width:0;}#mermaid-svg-OS9FfI2r5QbxBhBz .icon-shape,#mermaid-svg-OS9FfI2r5QbxBhBz .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OS9FfI2r5QbxBhBz .icon-shape p,#mermaid-svg-OS9FfI2r5QbxBhBz .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-OS9FfI2r5QbxBhBz .icon-shape .label rect,#mermaid-svg-OS9FfI2r5QbxBhBz .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OS9FfI2r5QbxBhBz .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-OS9FfI2r5QbxBhBz .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-OS9FfI2r5QbxBhBz :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Input
Step 1: Prompt
Step 2: LLM
Step 3: Tool / Retriever
Step 4: Output
核心特点
① 线性执行(Linear Flow)
- 严格顺序执行
- 每一步依赖上一步输出
- 无回路结构
text
A → B → C → D
② 结构固定(Static Flow)
Chain 在运行前结构已确定:
- 流程不可动态改变
- 执行路径固定
- 控制流隐式存在
③ 局部状态(Local State)
- 状态通常通过 Memory 传递
- 无统一全局状态管理
- 每一步"感知有限上下文"
④ 组件组合(Composition-based)
Chain 更像:
text
Function Composition
f(x) → g(x) → h(x)
本质总结
Chain 模型本质是:
确定性执行管道(Deterministic Pipeline)
优势
- 简单直观
- 易于调试
- 适合标准任务流
- 非常适合 MVP / 快速开发
典型场景:
- ChatBot
- RAG
- Tool Calling
- 单轮 Agent
局限性
Chain 模型的问题在于:
❌ 1. 无法表达循环
text
需要反复搜索 → 无法原生支持
❌ 2. 无法表达动态决策
text
根据结果决定下一步 → 很难表达
❌ 3. 无法表达多路径执行
text
A → B → C
↘ D → E (Chain不自然)
❌ 4. 状态弱表达
- 状态依赖 memory hack
- 没有统一 state model
结论
Chain 的设计本质是:
text
"预定义流程执行模型"
而不是:
text
"智能决策系统"
4.2 Graph 模型(LangGraph)
------ 状态驱动的图计算模型
LangGraph 的核心抽象是:
Graph(图结构执行模型)
其本质是:
text
State Machine + Directed Graph Execution
基本结构
#mermaid-svg-pGgar8wOyt0BW1y6{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pGgar8wOyt0BW1y6 .error-icon{fill:#552222;}#mermaid-svg-pGgar8wOyt0BW1y6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pGgar8wOyt0BW1y6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pGgar8wOyt0BW1y6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pGgar8wOyt0BW1y6 .marker.cross{stroke:#333333;}#mermaid-svg-pGgar8wOyt0BW1y6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pGgar8wOyt0BW1y6 p{margin:0;}#mermaid-svg-pGgar8wOyt0BW1y6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-pGgar8wOyt0BW1y6 .cluster-label text{fill:#333;}#mermaid-svg-pGgar8wOyt0BW1y6 .cluster-label span{color:#333;}#mermaid-svg-pGgar8wOyt0BW1y6 .cluster-label span p{background-color:transparent;}#mermaid-svg-pGgar8wOyt0BW1y6 .label text,#mermaid-svg-pGgar8wOyt0BW1y6 span{fill:#333;color:#333;}#mermaid-svg-pGgar8wOyt0BW1y6 .node rect,#mermaid-svg-pGgar8wOyt0BW1y6 .node circle,#mermaid-svg-pGgar8wOyt0BW1y6 .node ellipse,#mermaid-svg-pGgar8wOyt0BW1y6 .node polygon,#mermaid-svg-pGgar8wOyt0BW1y6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pGgar8wOyt0BW1y6 .rough-node .label text,#mermaid-svg-pGgar8wOyt0BW1y6 .node .label text,#mermaid-svg-pGgar8wOyt0BW1y6 .image-shape .label,#mermaid-svg-pGgar8wOyt0BW1y6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-pGgar8wOyt0BW1y6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pGgar8wOyt0BW1y6 .rough-node .label,#mermaid-svg-pGgar8wOyt0BW1y6 .node .label,#mermaid-svg-pGgar8wOyt0BW1y6 .image-shape .label,#mermaid-svg-pGgar8wOyt0BW1y6 .icon-shape .label{text-align:center;}#mermaid-svg-pGgar8wOyt0BW1y6 .node.clickable{cursor:pointer;}#mermaid-svg-pGgar8wOyt0BW1y6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pGgar8wOyt0BW1y6 .arrowheadPath{fill:#333333;}#mermaid-svg-pGgar8wOyt0BW1y6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pGgar8wOyt0BW1y6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pGgar8wOyt0BW1y6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pGgar8wOyt0BW1y6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pGgar8wOyt0BW1y6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pGgar8wOyt0BW1y6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pGgar8wOyt0BW1y6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pGgar8wOyt0BW1y6 .cluster text{fill:#333;}#mermaid-svg-pGgar8wOyt0BW1y6 .cluster span{color:#333;}#mermaid-svg-pGgar8wOyt0BW1y6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pGgar8wOyt0BW1y6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pGgar8wOyt0BW1y6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-pGgar8wOyt0BW1y6 .icon-shape,#mermaid-svg-pGgar8wOyt0BW1y6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pGgar8wOyt0BW1y6 .icon-shape p,#mermaid-svg-pGgar8wOyt0BW1y6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pGgar8wOyt0BW1y6 .icon-shape .label rect,#mermaid-svg-pGgar8wOyt0BW1y6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pGgar8wOyt0BW1y6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pGgar8wOyt0BW1y6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pGgar8wOyt0BW1y6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Satisfy
Unsatisfy
State Start
Node: Planner
Node: Searcher
Node: Critic
End
核心特点
① 图结构(Graph-based)
- Node(节点)
- Edge(边)
- 支持任意拓扑结构
② 支持循环(Loop Native)
#mermaid-svg-nImLWEMnz6KTRyuE{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nImLWEMnz6KTRyuE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nImLWEMnz6KTRyuE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nImLWEMnz6KTRyuE .error-icon{fill:#552222;}#mermaid-svg-nImLWEMnz6KTRyuE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nImLWEMnz6KTRyuE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nImLWEMnz6KTRyuE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nImLWEMnz6KTRyuE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nImLWEMnz6KTRyuE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nImLWEMnz6KTRyuE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nImLWEMnz6KTRyuE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nImLWEMnz6KTRyuE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nImLWEMnz6KTRyuE .marker.cross{stroke:#333333;}#mermaid-svg-nImLWEMnz6KTRyuE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nImLWEMnz6KTRyuE p{margin:0;}#mermaid-svg-nImLWEMnz6KTRyuE .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-nImLWEMnz6KTRyuE .cluster-label text{fill:#333;}#mermaid-svg-nImLWEMnz6KTRyuE .cluster-label span{color:#333;}#mermaid-svg-nImLWEMnz6KTRyuE .cluster-label span p{background-color:transparent;}#mermaid-svg-nImLWEMnz6KTRyuE .label text,#mermaid-svg-nImLWEMnz6KTRyuE span{fill:#333;color:#333;}#mermaid-svg-nImLWEMnz6KTRyuE .node rect,#mermaid-svg-nImLWEMnz6KTRyuE .node circle,#mermaid-svg-nImLWEMnz6KTRyuE .node ellipse,#mermaid-svg-nImLWEMnz6KTRyuE .node polygon,#mermaid-svg-nImLWEMnz6KTRyuE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nImLWEMnz6KTRyuE .rough-node .label text,#mermaid-svg-nImLWEMnz6KTRyuE .node .label text,#mermaid-svg-nImLWEMnz6KTRyuE .image-shape .label,#mermaid-svg-nImLWEMnz6KTRyuE .icon-shape .label{text-anchor:middle;}#mermaid-svg-nImLWEMnz6KTRyuE .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-nImLWEMnz6KTRyuE .rough-node .label,#mermaid-svg-nImLWEMnz6KTRyuE .node .label,#mermaid-svg-nImLWEMnz6KTRyuE .image-shape .label,#mermaid-svg-nImLWEMnz6KTRyuE .icon-shape .label{text-align:center;}#mermaid-svg-nImLWEMnz6KTRyuE .node.clickable{cursor:pointer;}#mermaid-svg-nImLWEMnz6KTRyuE .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-nImLWEMnz6KTRyuE .arrowheadPath{fill:#333333;}#mermaid-svg-nImLWEMnz6KTRyuE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nImLWEMnz6KTRyuE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nImLWEMnz6KTRyuE .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nImLWEMnz6KTRyuE .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-nImLWEMnz6KTRyuE .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nImLWEMnz6KTRyuE .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-nImLWEMnz6KTRyuE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nImLWEMnz6KTRyuE .cluster text{fill:#333;}#mermaid-svg-nImLWEMnz6KTRyuE .cluster span{color:#333;}#mermaid-svg-nImLWEMnz6KTRyuE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nImLWEMnz6KTRyuE .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nImLWEMnz6KTRyuE rect.text{fill:none;stroke-width:0;}#mermaid-svg-nImLWEMnz6KTRyuE .icon-shape,#mermaid-svg-nImLWEMnz6KTRyuE .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nImLWEMnz6KTRyuE .icon-shape p,#mermaid-svg-nImLWEMnz6KTRyuE .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-nImLWEMnz6KTRyuE .icon-shape .label rect,#mermaid-svg-nImLWEMnz6KTRyuE .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nImLWEMnz6KTRyuE .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nImLWEMnz6KTRyuE .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nImLWEMnz6KTRyuE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} loop
Node A
Node B
Node C
③ 支持条件路由(Conditional Edge)
text
if result == good → End
if result == bad → Retry
④ 全局状态(Global State)
核心特征:
python
state = {
"messages": [],
"plan": [],
"iterations": 3
}
- 所有节点共享 state
- state 在图中流动
- state 是一等公民
⑤ 可控执行流(Explicit Control Flow)
Graph 的控制流是:
显式定义,而非隐式执行
本质总结
Graph 模型本质是:
显式状态机执行模型(Explicit State Machine Execution Model)
优势
✅ 1. 支持复杂流程
- 分支
- 循环
- 多路径
- 回退
✅ 2. 原生支持 Agent Loop
例如:
text
Search → Evaluate → Improve → Search
3. 强状态建模能力
- State first design
- 可持久化
- 可恢复
4. 支持多 Agent 系统
#mermaid-svg-kXFUSNTqOCMfFFHK{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kXFUSNTqOCMfFFHK .error-icon{fill:#552222;}#mermaid-svg-kXFUSNTqOCMfFFHK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kXFUSNTqOCMfFFHK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kXFUSNTqOCMfFFHK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kXFUSNTqOCMfFFHK .marker.cross{stroke:#333333;}#mermaid-svg-kXFUSNTqOCMfFFHK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kXFUSNTqOCMfFFHK p{margin:0;}#mermaid-svg-kXFUSNTqOCMfFFHK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kXFUSNTqOCMfFFHK .cluster-label text{fill:#333;}#mermaid-svg-kXFUSNTqOCMfFFHK .cluster-label span{color:#333;}#mermaid-svg-kXFUSNTqOCMfFFHK .cluster-label span p{background-color:transparent;}#mermaid-svg-kXFUSNTqOCMfFFHK .label text,#mermaid-svg-kXFUSNTqOCMfFFHK span{fill:#333;color:#333;}#mermaid-svg-kXFUSNTqOCMfFFHK .node rect,#mermaid-svg-kXFUSNTqOCMfFFHK .node circle,#mermaid-svg-kXFUSNTqOCMfFFHK .node ellipse,#mermaid-svg-kXFUSNTqOCMfFFHK .node polygon,#mermaid-svg-kXFUSNTqOCMfFFHK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kXFUSNTqOCMfFFHK .rough-node .label text,#mermaid-svg-kXFUSNTqOCMfFFHK .node .label text,#mermaid-svg-kXFUSNTqOCMfFFHK .image-shape .label,#mermaid-svg-kXFUSNTqOCMfFFHK .icon-shape .label{text-anchor:middle;}#mermaid-svg-kXFUSNTqOCMfFFHK .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kXFUSNTqOCMfFFHK .rough-node .label,#mermaid-svg-kXFUSNTqOCMfFFHK .node .label,#mermaid-svg-kXFUSNTqOCMfFFHK .image-shape .label,#mermaid-svg-kXFUSNTqOCMfFFHK .icon-shape .label{text-align:center;}#mermaid-svg-kXFUSNTqOCMfFFHK .node.clickable{cursor:pointer;}#mermaid-svg-kXFUSNTqOCMfFFHK .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kXFUSNTqOCMfFFHK .arrowheadPath{fill:#333333;}#mermaid-svg-kXFUSNTqOCMfFFHK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kXFUSNTqOCMfFFHK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kXFUSNTqOCMfFFHK .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kXFUSNTqOCMfFFHK .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kXFUSNTqOCMfFFHK .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kXFUSNTqOCMfFFHK .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kXFUSNTqOCMfFFHK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kXFUSNTqOCMfFFHK .cluster text{fill:#333;}#mermaid-svg-kXFUSNTqOCMfFFHK .cluster span{color:#333;}#mermaid-svg-kXFUSNTqOCMfFFHK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kXFUSNTqOCMfFFHK .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kXFUSNTqOCMfFFHK rect.text{fill:none;stroke-width:0;}#mermaid-svg-kXFUSNTqOCMfFFHK .icon-shape,#mermaid-svg-kXFUSNTqOCMfFFHK .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kXFUSNTqOCMfFFHK .icon-shape p,#mermaid-svg-kXFUSNTqOCMfFFHK .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kXFUSNTqOCMfFFHK .icon-shape .label rect,#mermaid-svg-kXFUSNTqOCMfFFHK .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kXFUSNTqOCMfFFHK .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kXFUSNTqOCMfFFHK .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kXFUSNTqOCMfFFHK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Supervisor
Agent A
Agent B
Agent C
Reducer
局限性
❌ 1. 学习成本更高
- 需要理解 graph model
- 需要 state 思维
❌ 2. 结构复杂
- 小任务显得"过度设计"
❌ 3. 对简单任务不必要
- ChatBot 用 Graph 属于"杀鸡用牛刀"
结论
Graph 的设计本质是:
text
"可控的动态决策系统"
4.3 Pipeline vs State Machine(核心本质对比)
这一节是本章最关键部分。
① LangChain = Pipeline Model
#mermaid-svg-3ggP4IdNI8nik1We{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3ggP4IdNI8nik1We .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3ggP4IdNI8nik1We .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3ggP4IdNI8nik1We .error-icon{fill:#552222;}#mermaid-svg-3ggP4IdNI8nik1We .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3ggP4IdNI8nik1We .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3ggP4IdNI8nik1We .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3ggP4IdNI8nik1We .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3ggP4IdNI8nik1We .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3ggP4IdNI8nik1We .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3ggP4IdNI8nik1We .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3ggP4IdNI8nik1We .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3ggP4IdNI8nik1We .marker.cross{stroke:#333333;}#mermaid-svg-3ggP4IdNI8nik1We svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3ggP4IdNI8nik1We p{margin:0;}#mermaid-svg-3ggP4IdNI8nik1We .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3ggP4IdNI8nik1We .cluster-label text{fill:#333;}#mermaid-svg-3ggP4IdNI8nik1We .cluster-label span{color:#333;}#mermaid-svg-3ggP4IdNI8nik1We .cluster-label span p{background-color:transparent;}#mermaid-svg-3ggP4IdNI8nik1We .label text,#mermaid-svg-3ggP4IdNI8nik1We span{fill:#333;color:#333;}#mermaid-svg-3ggP4IdNI8nik1We .node rect,#mermaid-svg-3ggP4IdNI8nik1We .node circle,#mermaid-svg-3ggP4IdNI8nik1We .node ellipse,#mermaid-svg-3ggP4IdNI8nik1We .node polygon,#mermaid-svg-3ggP4IdNI8nik1We .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3ggP4IdNI8nik1We .rough-node .label text,#mermaid-svg-3ggP4IdNI8nik1We .node .label text,#mermaid-svg-3ggP4IdNI8nik1We .image-shape .label,#mermaid-svg-3ggP4IdNI8nik1We .icon-shape .label{text-anchor:middle;}#mermaid-svg-3ggP4IdNI8nik1We .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3ggP4IdNI8nik1We .rough-node .label,#mermaid-svg-3ggP4IdNI8nik1We .node .label,#mermaid-svg-3ggP4IdNI8nik1We .image-shape .label,#mermaid-svg-3ggP4IdNI8nik1We .icon-shape .label{text-align:center;}#mermaid-svg-3ggP4IdNI8nik1We .node.clickable{cursor:pointer;}#mermaid-svg-3ggP4IdNI8nik1We .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3ggP4IdNI8nik1We .arrowheadPath{fill:#333333;}#mermaid-svg-3ggP4IdNI8nik1We .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3ggP4IdNI8nik1We .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3ggP4IdNI8nik1We .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3ggP4IdNI8nik1We .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3ggP4IdNI8nik1We .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3ggP4IdNI8nik1We .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3ggP4IdNI8nik1We .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3ggP4IdNI8nik1We .cluster text{fill:#333;}#mermaid-svg-3ggP4IdNI8nik1We .cluster span{color:#333;}#mermaid-svg-3ggP4IdNI8nik1We div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3ggP4IdNI8nik1We .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3ggP4IdNI8nik1We rect.text{fill:none;stroke-width:0;}#mermaid-svg-3ggP4IdNI8nik1We .icon-shape,#mermaid-svg-3ggP4IdNI8nik1We .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3ggP4IdNI8nik1We .icon-shape p,#mermaid-svg-3ggP4IdNI8nik1We .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3ggP4IdNI8nik1We .icon-shape .label rect,#mermaid-svg-3ggP4IdNI8nik1We .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3ggP4IdNI8nik1We .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3ggP4IdNI8nik1We .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3ggP4IdNI8nik1We :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Input
Step 1
Step 2
Step 3
特征:
- 线性
- 确定
- 无回路
- 轻量
② LangGraph = State Machine Model
#mermaid-svg-c8XUvCmpFa86U8yt{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-c8XUvCmpFa86U8yt .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-c8XUvCmpFa86U8yt .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-c8XUvCmpFa86U8yt .error-icon{fill:#552222;}#mermaid-svg-c8XUvCmpFa86U8yt .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-c8XUvCmpFa86U8yt .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-c8XUvCmpFa86U8yt .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-c8XUvCmpFa86U8yt .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-c8XUvCmpFa86U8yt .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-c8XUvCmpFa86U8yt .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-c8XUvCmpFa86U8yt .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-c8XUvCmpFa86U8yt .marker{fill:#333333;stroke:#333333;}#mermaid-svg-c8XUvCmpFa86U8yt .marker.cross{stroke:#333333;}#mermaid-svg-c8XUvCmpFa86U8yt svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-c8XUvCmpFa86U8yt p{margin:0;}#mermaid-svg-c8XUvCmpFa86U8yt .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-c8XUvCmpFa86U8yt .cluster-label text{fill:#333;}#mermaid-svg-c8XUvCmpFa86U8yt .cluster-label span{color:#333;}#mermaid-svg-c8XUvCmpFa86U8yt .cluster-label span p{background-color:transparent;}#mermaid-svg-c8XUvCmpFa86U8yt .label text,#mermaid-svg-c8XUvCmpFa86U8yt span{fill:#333;color:#333;}#mermaid-svg-c8XUvCmpFa86U8yt .node rect,#mermaid-svg-c8XUvCmpFa86U8yt .node circle,#mermaid-svg-c8XUvCmpFa86U8yt .node ellipse,#mermaid-svg-c8XUvCmpFa86U8yt .node polygon,#mermaid-svg-c8XUvCmpFa86U8yt .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-c8XUvCmpFa86U8yt .rough-node .label text,#mermaid-svg-c8XUvCmpFa86U8yt .node .label text,#mermaid-svg-c8XUvCmpFa86U8yt .image-shape .label,#mermaid-svg-c8XUvCmpFa86U8yt .icon-shape .label{text-anchor:middle;}#mermaid-svg-c8XUvCmpFa86U8yt .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-c8XUvCmpFa86U8yt .rough-node .label,#mermaid-svg-c8XUvCmpFa86U8yt .node .label,#mermaid-svg-c8XUvCmpFa86U8yt .image-shape .label,#mermaid-svg-c8XUvCmpFa86U8yt .icon-shape .label{text-align:center;}#mermaid-svg-c8XUvCmpFa86U8yt .node.clickable{cursor:pointer;}#mermaid-svg-c8XUvCmpFa86U8yt .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-c8XUvCmpFa86U8yt .arrowheadPath{fill:#333333;}#mermaid-svg-c8XUvCmpFa86U8yt .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-c8XUvCmpFa86U8yt .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-c8XUvCmpFa86U8yt .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-c8XUvCmpFa86U8yt .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-c8XUvCmpFa86U8yt .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-c8XUvCmpFa86U8yt .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-c8XUvCmpFa86U8yt .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-c8XUvCmpFa86U8yt .cluster text{fill:#333;}#mermaid-svg-c8XUvCmpFa86U8yt .cluster span{color:#333;}#mermaid-svg-c8XUvCmpFa86U8yt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-c8XUvCmpFa86U8yt .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-c8XUvCmpFa86U8yt rect.text{fill:none;stroke-width:0;}#mermaid-svg-c8XUvCmpFa86U8yt .icon-shape,#mermaid-svg-c8XUvCmpFa86U8yt .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-c8XUvCmpFa86U8yt .icon-shape p,#mermaid-svg-c8XUvCmpFa86U8yt .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-c8XUvCmpFa86U8yt .icon-shape .label rect,#mermaid-svg-c8XUvCmpFa86U8yt .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-c8XUvCmpFa86U8yt .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-c8XUvCmpFa86U8yt .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-c8XUvCmpFa86U8yt :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Yes
No
State
Node 1
Condition
Node 2
End
特征:
- 状态驱动
- 可循环
- 可分支
- 可恢复
核心区别
| 维度 | LangChain | LangGraph |
|---|---|---|
| 模型 | Pipeline | State Machine |
| 控制流 | 隐式 | 显式 |
| 状态 | 局部 | 全局 |
| 执行 | 一次性 | 持续性 |
4.4 DAG vs Cyclic Graph(结构能力差异)
LangChain:DAG(有向无环图)
#mermaid-svg-5en6t45VxDmT6CLs{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5en6t45VxDmT6CLs .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5en6t45VxDmT6CLs .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5en6t45VxDmT6CLs .error-icon{fill:#552222;}#mermaid-svg-5en6t45VxDmT6CLs .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5en6t45VxDmT6CLs .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5en6t45VxDmT6CLs .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5en6t45VxDmT6CLs .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5en6t45VxDmT6CLs .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5en6t45VxDmT6CLs .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5en6t45VxDmT6CLs .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5en6t45VxDmT6CLs .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5en6t45VxDmT6CLs .marker.cross{stroke:#333333;}#mermaid-svg-5en6t45VxDmT6CLs svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5en6t45VxDmT6CLs p{margin:0;}#mermaid-svg-5en6t45VxDmT6CLs .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5en6t45VxDmT6CLs .cluster-label text{fill:#333;}#mermaid-svg-5en6t45VxDmT6CLs .cluster-label span{color:#333;}#mermaid-svg-5en6t45VxDmT6CLs .cluster-label span p{background-color:transparent;}#mermaid-svg-5en6t45VxDmT6CLs .label text,#mermaid-svg-5en6t45VxDmT6CLs span{fill:#333;color:#333;}#mermaid-svg-5en6t45VxDmT6CLs .node rect,#mermaid-svg-5en6t45VxDmT6CLs .node circle,#mermaid-svg-5en6t45VxDmT6CLs .node ellipse,#mermaid-svg-5en6t45VxDmT6CLs .node polygon,#mermaid-svg-5en6t45VxDmT6CLs .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5en6t45VxDmT6CLs .rough-node .label text,#mermaid-svg-5en6t45VxDmT6CLs .node .label text,#mermaid-svg-5en6t45VxDmT6CLs .image-shape .label,#mermaid-svg-5en6t45VxDmT6CLs .icon-shape .label{text-anchor:middle;}#mermaid-svg-5en6t45VxDmT6CLs .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5en6t45VxDmT6CLs .rough-node .label,#mermaid-svg-5en6t45VxDmT6CLs .node .label,#mermaid-svg-5en6t45VxDmT6CLs .image-shape .label,#mermaid-svg-5en6t45VxDmT6CLs .icon-shape .label{text-align:center;}#mermaid-svg-5en6t45VxDmT6CLs .node.clickable{cursor:pointer;}#mermaid-svg-5en6t45VxDmT6CLs .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5en6t45VxDmT6CLs .arrowheadPath{fill:#333333;}#mermaid-svg-5en6t45VxDmT6CLs .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5en6t45VxDmT6CLs .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5en6t45VxDmT6CLs .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5en6t45VxDmT6CLs .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5en6t45VxDmT6CLs .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5en6t45VxDmT6CLs .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5en6t45VxDmT6CLs .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5en6t45VxDmT6CLs .cluster text{fill:#333;}#mermaid-svg-5en6t45VxDmT6CLs .cluster span{color:#333;}#mermaid-svg-5en6t45VxDmT6CLs div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5en6t45VxDmT6CLs .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5en6t45VxDmT6CLs rect.text{fill:none;stroke-width:0;}#mermaid-svg-5en6t45VxDmT6CLs .icon-shape,#mermaid-svg-5en6t45VxDmT6CLs .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5en6t45VxDmT6CLs .icon-shape p,#mermaid-svg-5en6t45VxDmT6CLs .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5en6t45VxDmT6CLs .icon-shape .label rect,#mermaid-svg-5en6t45VxDmT6CLs .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5en6t45VxDmT6CLs .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5en6t45VxDmT6CLs .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5en6t45VxDmT6CLs :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} A
B
C
D
特点:
- 无循环
- 单向执行
- 一次性流程
LangGraph:Cyclic Graph(可循环图)
#mermaid-svg-kFaRyneldUPVrcQk{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kFaRyneldUPVrcQk .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kFaRyneldUPVrcQk .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kFaRyneldUPVrcQk .error-icon{fill:#552222;}#mermaid-svg-kFaRyneldUPVrcQk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kFaRyneldUPVrcQk .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kFaRyneldUPVrcQk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kFaRyneldUPVrcQk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kFaRyneldUPVrcQk .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kFaRyneldUPVrcQk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kFaRyneldUPVrcQk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kFaRyneldUPVrcQk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kFaRyneldUPVrcQk .marker.cross{stroke:#333333;}#mermaid-svg-kFaRyneldUPVrcQk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kFaRyneldUPVrcQk p{margin:0;}#mermaid-svg-kFaRyneldUPVrcQk .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kFaRyneldUPVrcQk .cluster-label text{fill:#333;}#mermaid-svg-kFaRyneldUPVrcQk .cluster-label span{color:#333;}#mermaid-svg-kFaRyneldUPVrcQk .cluster-label span p{background-color:transparent;}#mermaid-svg-kFaRyneldUPVrcQk .label text,#mermaid-svg-kFaRyneldUPVrcQk span{fill:#333;color:#333;}#mermaid-svg-kFaRyneldUPVrcQk .node rect,#mermaid-svg-kFaRyneldUPVrcQk .node circle,#mermaid-svg-kFaRyneldUPVrcQk .node ellipse,#mermaid-svg-kFaRyneldUPVrcQk .node polygon,#mermaid-svg-kFaRyneldUPVrcQk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kFaRyneldUPVrcQk .rough-node .label text,#mermaid-svg-kFaRyneldUPVrcQk .node .label text,#mermaid-svg-kFaRyneldUPVrcQk .image-shape .label,#mermaid-svg-kFaRyneldUPVrcQk .icon-shape .label{text-anchor:middle;}#mermaid-svg-kFaRyneldUPVrcQk .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kFaRyneldUPVrcQk .rough-node .label,#mermaid-svg-kFaRyneldUPVrcQk .node .label,#mermaid-svg-kFaRyneldUPVrcQk .image-shape .label,#mermaid-svg-kFaRyneldUPVrcQk .icon-shape .label{text-align:center;}#mermaid-svg-kFaRyneldUPVrcQk .node.clickable{cursor:pointer;}#mermaid-svg-kFaRyneldUPVrcQk .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kFaRyneldUPVrcQk .arrowheadPath{fill:#333333;}#mermaid-svg-kFaRyneldUPVrcQk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kFaRyneldUPVrcQk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kFaRyneldUPVrcQk .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kFaRyneldUPVrcQk .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kFaRyneldUPVrcQk .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kFaRyneldUPVrcQk .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kFaRyneldUPVrcQk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kFaRyneldUPVrcQk .cluster text{fill:#333;}#mermaid-svg-kFaRyneldUPVrcQk .cluster span{color:#333;}#mermaid-svg-kFaRyneldUPVrcQk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kFaRyneldUPVrcQk .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kFaRyneldUPVrcQk rect.text{fill:none;stroke-width:0;}#mermaid-svg-kFaRyneldUPVrcQk .icon-shape,#mermaid-svg-kFaRyneldUPVrcQk .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kFaRyneldUPVrcQk .icon-shape p,#mermaid-svg-kFaRyneldUPVrcQk .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kFaRyneldUPVrcQk .icon-shape .label rect,#mermaid-svg-kFaRyneldUPVrcQk .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kFaRyneldUPVrcQk .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kFaRyneldUPVrcQk .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kFaRyneldUPVrcQk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} A
B
C
D
特点:
- 支持 loop
- 支持 retry
- 支持 agent reasoning loop
关键差异
| 结构 | LangChain | LangGraph |
|---|---|---|
| DAG | ✅ | ✅ |
| Cycle | ❌ | ✅ |
| Self-loop | ❌ | ✅ |
4.5 Agent 为什么天然适合 Graph 模型
Agent 的本质行为是:
不断"观察 → 思考 → 行动 → 修正"
可以抽象为:
text
Observe → Think → Act → Evaluate → Repeat
Graph 结构天然匹配
#mermaid-svg-xhAqmcJ1Uw3DAamX{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-xhAqmcJ1Uw3DAamX .error-icon{fill:#552222;}#mermaid-svg-xhAqmcJ1Uw3DAamX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xhAqmcJ1Uw3DAamX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .marker.cross{stroke:#333333;}#mermaid-svg-xhAqmcJ1Uw3DAamX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xhAqmcJ1Uw3DAamX p{margin:0;}#mermaid-svg-xhAqmcJ1Uw3DAamX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .cluster-label text{fill:#333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .cluster-label span{color:#333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .cluster-label span p{background-color:transparent;}#mermaid-svg-xhAqmcJ1Uw3DAamX .label text,#mermaid-svg-xhAqmcJ1Uw3DAamX span{fill:#333;color:#333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .node rect,#mermaid-svg-xhAqmcJ1Uw3DAamX .node circle,#mermaid-svg-xhAqmcJ1Uw3DAamX .node ellipse,#mermaid-svg-xhAqmcJ1Uw3DAamX .node polygon,#mermaid-svg-xhAqmcJ1Uw3DAamX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xhAqmcJ1Uw3DAamX .rough-node .label text,#mermaid-svg-xhAqmcJ1Uw3DAamX .node .label text,#mermaid-svg-xhAqmcJ1Uw3DAamX .image-shape .label,#mermaid-svg-xhAqmcJ1Uw3DAamX .icon-shape .label{text-anchor:middle;}#mermaid-svg-xhAqmcJ1Uw3DAamX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-xhAqmcJ1Uw3DAamX .rough-node .label,#mermaid-svg-xhAqmcJ1Uw3DAamX .node .label,#mermaid-svg-xhAqmcJ1Uw3DAamX .image-shape .label,#mermaid-svg-xhAqmcJ1Uw3DAamX .icon-shape .label{text-align:center;}#mermaid-svg-xhAqmcJ1Uw3DAamX .node.clickable{cursor:pointer;}#mermaid-svg-xhAqmcJ1Uw3DAamX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .arrowheadPath{fill:#333333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xhAqmcJ1Uw3DAamX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xhAqmcJ1Uw3DAamX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-xhAqmcJ1Uw3DAamX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xhAqmcJ1Uw3DAamX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-xhAqmcJ1Uw3DAamX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xhAqmcJ1Uw3DAamX .cluster text{fill:#333;}#mermaid-svg-xhAqmcJ1Uw3DAamX .cluster span{color:#333;}#mermaid-svg-xhAqmcJ1Uw3DAamX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xhAqmcJ1Uw3DAamX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-xhAqmcJ1Uw3DAamX rect.text{fill:none;stroke-width:0;}#mermaid-svg-xhAqmcJ1Uw3DAamX .icon-shape,#mermaid-svg-xhAqmcJ1Uw3DAamX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xhAqmcJ1Uw3DAamX .icon-shape p,#mermaid-svg-xhAqmcJ1Uw3DAamX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-xhAqmcJ1Uw3DAamX .icon-shape .label rect,#mermaid-svg-xhAqmcJ1Uw3DAamX .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xhAqmcJ1Uw3DAamX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-xhAqmcJ1Uw3DAamX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-xhAqmcJ1Uw3DAamX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 不满意
满意
Observe
观察
Think
思考
Act
行动
Evaluate
评估
Finish
完成
为什么 Chain 不适合 Agent?
Chain 无法表达:
- retry
- reflection
- multi-step planning
- dynamic decision
Graph 的优势
Graph 提供:
- loop
- state
- branching
- conditional routing
→ 完全匹配 Agent 行为模式
4.6 本章总结(核心结论)
① 两种模型的本质差异
text
LangChain = Pipeline Execution Model
LangGraph = State Machine Execution Model
② 控制方式差异
| 类型 | LangChain | LangGraph |
|---|---|---|
| 控制流 | 隐式 | 显式 |
| 执行路径 | 固定 | 动态 |
| 状态 | 弱 | 强 |
③ 设计哲学差异
- LangChain:How to execute a pipeline
- LangGraph:How to control an agent system
5. 执行模型对比:顺序执行 vs 动态决策执行
在 LangChain 与 LangGraph 的差异中,"执行模型(Execution Model)"是最关键的分水岭之一。
如果说第4章讨论的是结构(Structure),那么本章讨论的就是:
系统在运行时"如何思考与行动"
5.1 LangChain 执行模型:顺序驱动(Sequential Execution)
LangChain 的执行模型本质是:
Pipeline-based Sequential Execution(流水线式顺序执行)
基本执行流程
#mermaid-svg-nbsZc6io1v52qwwh{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nbsZc6io1v52qwwh .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nbsZc6io1v52qwwh .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nbsZc6io1v52qwwh .error-icon{fill:#552222;}#mermaid-svg-nbsZc6io1v52qwwh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nbsZc6io1v52qwwh .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nbsZc6io1v52qwwh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nbsZc6io1v52qwwh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nbsZc6io1v52qwwh .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nbsZc6io1v52qwwh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nbsZc6io1v52qwwh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nbsZc6io1v52qwwh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nbsZc6io1v52qwwh .marker.cross{stroke:#333333;}#mermaid-svg-nbsZc6io1v52qwwh svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nbsZc6io1v52qwwh p{margin:0;}#mermaid-svg-nbsZc6io1v52qwwh .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-nbsZc6io1v52qwwh .cluster-label text{fill:#333;}#mermaid-svg-nbsZc6io1v52qwwh .cluster-label span{color:#333;}#mermaid-svg-nbsZc6io1v52qwwh .cluster-label span p{background-color:transparent;}#mermaid-svg-nbsZc6io1v52qwwh .label text,#mermaid-svg-nbsZc6io1v52qwwh span{fill:#333;color:#333;}#mermaid-svg-nbsZc6io1v52qwwh .node rect,#mermaid-svg-nbsZc6io1v52qwwh .node circle,#mermaid-svg-nbsZc6io1v52qwwh .node ellipse,#mermaid-svg-nbsZc6io1v52qwwh .node polygon,#mermaid-svg-nbsZc6io1v52qwwh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nbsZc6io1v52qwwh .rough-node .label text,#mermaid-svg-nbsZc6io1v52qwwh .node .label text,#mermaid-svg-nbsZc6io1v52qwwh .image-shape .label,#mermaid-svg-nbsZc6io1v52qwwh .icon-shape .label{text-anchor:middle;}#mermaid-svg-nbsZc6io1v52qwwh .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-nbsZc6io1v52qwwh .rough-node .label,#mermaid-svg-nbsZc6io1v52qwwh .node .label,#mermaid-svg-nbsZc6io1v52qwwh .image-shape .label,#mermaid-svg-nbsZc6io1v52qwwh .icon-shape .label{text-align:center;}#mermaid-svg-nbsZc6io1v52qwwh .node.clickable{cursor:pointer;}#mermaid-svg-nbsZc6io1v52qwwh .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-nbsZc6io1v52qwwh .arrowheadPath{fill:#333333;}#mermaid-svg-nbsZc6io1v52qwwh .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nbsZc6io1v52qwwh .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nbsZc6io1v52qwwh .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nbsZc6io1v52qwwh .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-nbsZc6io1v52qwwh .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nbsZc6io1v52qwwh .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-nbsZc6io1v52qwwh .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nbsZc6io1v52qwwh .cluster text{fill:#333;}#mermaid-svg-nbsZc6io1v52qwwh .cluster span{color:#333;}#mermaid-svg-nbsZc6io1v52qwwh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nbsZc6io1v52qwwh .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nbsZc6io1v52qwwh rect.text{fill:none;stroke-width:0;}#mermaid-svg-nbsZc6io1v52qwwh .icon-shape,#mermaid-svg-nbsZc6io1v52qwwh .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nbsZc6io1v52qwwh .icon-shape p,#mermaid-svg-nbsZc6io1v52qwwh .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-nbsZc6io1v52qwwh .icon-shape .label rect,#mermaid-svg-nbsZc6io1v52qwwh .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nbsZc6io1v52qwwh .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nbsZc6io1v52qwwh .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nbsZc6io1v52qwwh :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户输入
Prompt构建
LLM调用
Tool / Retriever
结果输出
核心特点
① 严格顺序执行
每一步依赖上一步输出:
text
Step1 → Step2 → Step3 → Step4
② 执行路径固定
在运行前:
- 流程已确定
- 路径不可动态改变
③ 无显式控制流
控制逻辑通常隐藏在:
- Chain 组合
- Agent loop(有限支持)
- Prompt 逻辑
典型执行模式
① Chain 模式
#mermaid-svg-5xE3DM8mZbHOFPaC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5xE3DM8mZbHOFPaC .error-icon{fill:#552222;}#mermaid-svg-5xE3DM8mZbHOFPaC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5xE3DM8mZbHOFPaC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5xE3DM8mZbHOFPaC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5xE3DM8mZbHOFPaC .marker.cross{stroke:#333333;}#mermaid-svg-5xE3DM8mZbHOFPaC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5xE3DM8mZbHOFPaC p{margin:0;}#mermaid-svg-5xE3DM8mZbHOFPaC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5xE3DM8mZbHOFPaC .cluster-label text{fill:#333;}#mermaid-svg-5xE3DM8mZbHOFPaC .cluster-label span{color:#333;}#mermaid-svg-5xE3DM8mZbHOFPaC .cluster-label span p{background-color:transparent;}#mermaid-svg-5xE3DM8mZbHOFPaC .label text,#mermaid-svg-5xE3DM8mZbHOFPaC span{fill:#333;color:#333;}#mermaid-svg-5xE3DM8mZbHOFPaC .node rect,#mermaid-svg-5xE3DM8mZbHOFPaC .node circle,#mermaid-svg-5xE3DM8mZbHOFPaC .node ellipse,#mermaid-svg-5xE3DM8mZbHOFPaC .node polygon,#mermaid-svg-5xE3DM8mZbHOFPaC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5xE3DM8mZbHOFPaC .rough-node .label text,#mermaid-svg-5xE3DM8mZbHOFPaC .node .label text,#mermaid-svg-5xE3DM8mZbHOFPaC .image-shape .label,#mermaid-svg-5xE3DM8mZbHOFPaC .icon-shape .label{text-anchor:middle;}#mermaid-svg-5xE3DM8mZbHOFPaC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5xE3DM8mZbHOFPaC .rough-node .label,#mermaid-svg-5xE3DM8mZbHOFPaC .node .label,#mermaid-svg-5xE3DM8mZbHOFPaC .image-shape .label,#mermaid-svg-5xE3DM8mZbHOFPaC .icon-shape .label{text-align:center;}#mermaid-svg-5xE3DM8mZbHOFPaC .node.clickable{cursor:pointer;}#mermaid-svg-5xE3DM8mZbHOFPaC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5xE3DM8mZbHOFPaC .arrowheadPath{fill:#333333;}#mermaid-svg-5xE3DM8mZbHOFPaC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5xE3DM8mZbHOFPaC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5xE3DM8mZbHOFPaC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5xE3DM8mZbHOFPaC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5xE3DM8mZbHOFPaC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5xE3DM8mZbHOFPaC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5xE3DM8mZbHOFPaC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5xE3DM8mZbHOFPaC .cluster text{fill:#333;}#mermaid-svg-5xE3DM8mZbHOFPaC .cluster span{color:#333;}#mermaid-svg-5xE3DM8mZbHOFPaC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5xE3DM8mZbHOFPaC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5xE3DM8mZbHOFPaC rect.text{fill:none;stroke-width:0;}#mermaid-svg-5xE3DM8mZbHOFPaC .icon-shape,#mermaid-svg-5xE3DM8mZbHOFPaC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5xE3DM8mZbHOFPaC .icon-shape p,#mermaid-svg-5xE3DM8mZbHOFPaC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5xE3DM8mZbHOFPaC .icon-shape .label rect,#mermaid-svg-5xE3DM8mZbHOFPaC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5xE3DM8mZbHOFPaC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5xE3DM8mZbHOFPaC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5xE3DM8mZbHOFPaC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 输入
LLM
输出
② RAG 模式
#mermaid-svg-5jPbBfBvpzEFoAhs{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5jPbBfBvpzEFoAhs .error-icon{fill:#552222;}#mermaid-svg-5jPbBfBvpzEFoAhs .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5jPbBfBvpzEFoAhs .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5jPbBfBvpzEFoAhs .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5jPbBfBvpzEFoAhs .marker.cross{stroke:#333333;}#mermaid-svg-5jPbBfBvpzEFoAhs svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5jPbBfBvpzEFoAhs p{margin:0;}#mermaid-svg-5jPbBfBvpzEFoAhs .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5jPbBfBvpzEFoAhs .cluster-label text{fill:#333;}#mermaid-svg-5jPbBfBvpzEFoAhs .cluster-label span{color:#333;}#mermaid-svg-5jPbBfBvpzEFoAhs .cluster-label span p{background-color:transparent;}#mermaid-svg-5jPbBfBvpzEFoAhs .label text,#mermaid-svg-5jPbBfBvpzEFoAhs span{fill:#333;color:#333;}#mermaid-svg-5jPbBfBvpzEFoAhs .node rect,#mermaid-svg-5jPbBfBvpzEFoAhs .node circle,#mermaid-svg-5jPbBfBvpzEFoAhs .node ellipse,#mermaid-svg-5jPbBfBvpzEFoAhs .node polygon,#mermaid-svg-5jPbBfBvpzEFoAhs .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5jPbBfBvpzEFoAhs .rough-node .label text,#mermaid-svg-5jPbBfBvpzEFoAhs .node .label text,#mermaid-svg-5jPbBfBvpzEFoAhs .image-shape .label,#mermaid-svg-5jPbBfBvpzEFoAhs .icon-shape .label{text-anchor:middle;}#mermaid-svg-5jPbBfBvpzEFoAhs .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5jPbBfBvpzEFoAhs .rough-node .label,#mermaid-svg-5jPbBfBvpzEFoAhs .node .label,#mermaid-svg-5jPbBfBvpzEFoAhs .image-shape .label,#mermaid-svg-5jPbBfBvpzEFoAhs .icon-shape .label{text-align:center;}#mermaid-svg-5jPbBfBvpzEFoAhs .node.clickable{cursor:pointer;}#mermaid-svg-5jPbBfBvpzEFoAhs .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5jPbBfBvpzEFoAhs .arrowheadPath{fill:#333333;}#mermaid-svg-5jPbBfBvpzEFoAhs .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5jPbBfBvpzEFoAhs .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5jPbBfBvpzEFoAhs .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5jPbBfBvpzEFoAhs .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5jPbBfBvpzEFoAhs .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5jPbBfBvpzEFoAhs .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5jPbBfBvpzEFoAhs .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5jPbBfBvpzEFoAhs .cluster text{fill:#333;}#mermaid-svg-5jPbBfBvpzEFoAhs .cluster span{color:#333;}#mermaid-svg-5jPbBfBvpzEFoAhs div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5jPbBfBvpzEFoAhs .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5jPbBfBvpzEFoAhs rect.text{fill:none;stroke-width:0;}#mermaid-svg-5jPbBfBvpzEFoAhs .icon-shape,#mermaid-svg-5jPbBfBvpzEFoAhs .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5jPbBfBvpzEFoAhs .icon-shape p,#mermaid-svg-5jPbBfBvpzEFoAhs .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5jPbBfBvpzEFoAhs .icon-shape .label rect,#mermaid-svg-5jPbBfBvpzEFoAhs .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5jPbBfBvpzEFoAhs .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5jPbBfBvpzEFoAhs .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5jPbBfBvpzEFoAhs :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 问题
检索 Retriever
上下文拼接
LLM生成
回答
③ Tool Calling(受限循环)
#mermaid-svg-97xhYZcIxOStIg6W{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-97xhYZcIxOStIg6W .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-97xhYZcIxOStIg6W .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-97xhYZcIxOStIg6W .error-icon{fill:#552222;}#mermaid-svg-97xhYZcIxOStIg6W .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-97xhYZcIxOStIg6W .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-97xhYZcIxOStIg6W .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-97xhYZcIxOStIg6W .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-97xhYZcIxOStIg6W .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-97xhYZcIxOStIg6W .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-97xhYZcIxOStIg6W .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-97xhYZcIxOStIg6W .marker{fill:#333333;stroke:#333333;}#mermaid-svg-97xhYZcIxOStIg6W .marker.cross{stroke:#333333;}#mermaid-svg-97xhYZcIxOStIg6W svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-97xhYZcIxOStIg6W p{margin:0;}#mermaid-svg-97xhYZcIxOStIg6W .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-97xhYZcIxOStIg6W .cluster-label text{fill:#333;}#mermaid-svg-97xhYZcIxOStIg6W .cluster-label span{color:#333;}#mermaid-svg-97xhYZcIxOStIg6W .cluster-label span p{background-color:transparent;}#mermaid-svg-97xhYZcIxOStIg6W .label text,#mermaid-svg-97xhYZcIxOStIg6W span{fill:#333;color:#333;}#mermaid-svg-97xhYZcIxOStIg6W .node rect,#mermaid-svg-97xhYZcIxOStIg6W .node circle,#mermaid-svg-97xhYZcIxOStIg6W .node ellipse,#mermaid-svg-97xhYZcIxOStIg6W .node polygon,#mermaid-svg-97xhYZcIxOStIg6W .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-97xhYZcIxOStIg6W .rough-node .label text,#mermaid-svg-97xhYZcIxOStIg6W .node .label text,#mermaid-svg-97xhYZcIxOStIg6W .image-shape .label,#mermaid-svg-97xhYZcIxOStIg6W .icon-shape .label{text-anchor:middle;}#mermaid-svg-97xhYZcIxOStIg6W .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-97xhYZcIxOStIg6W .rough-node .label,#mermaid-svg-97xhYZcIxOStIg6W .node .label,#mermaid-svg-97xhYZcIxOStIg6W .image-shape .label,#mermaid-svg-97xhYZcIxOStIg6W .icon-shape .label{text-align:center;}#mermaid-svg-97xhYZcIxOStIg6W .node.clickable{cursor:pointer;}#mermaid-svg-97xhYZcIxOStIg6W .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-97xhYZcIxOStIg6W .arrowheadPath{fill:#333333;}#mermaid-svg-97xhYZcIxOStIg6W .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-97xhYZcIxOStIg6W .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-97xhYZcIxOStIg6W .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-97xhYZcIxOStIg6W .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-97xhYZcIxOStIg6W .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-97xhYZcIxOStIg6W .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-97xhYZcIxOStIg6W .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-97xhYZcIxOStIg6W .cluster text{fill:#333;}#mermaid-svg-97xhYZcIxOStIg6W .cluster span{color:#333;}#mermaid-svg-97xhYZcIxOStIg6W div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-97xhYZcIxOStIg6W .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-97xhYZcIxOStIg6W rect.text{fill:none;stroke-width:0;}#mermaid-svg-97xhYZcIxOStIg6W .icon-shape,#mermaid-svg-97xhYZcIxOStIg6W .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-97xhYZcIxOStIg6W .icon-shape p,#mermaid-svg-97xhYZcIxOStIg6W .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-97xhYZcIxOStIg6W .icon-shape .label rect,#mermaid-svg-97xhYZcIxOStIg6W .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-97xhYZcIxOStIg6W .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-97xhYZcIxOStIg6W .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-97xhYZcIxOStIg6W :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
用户问题
LLM判断
是否调用工具?
Tool执行
直接回答
本质总结
LangChain 执行模型本质是:
确定性流程执行(Deterministic Execution Pipeline)
优点
- 简单清晰
- 易调试
- 易组合
- 非常适合标准任务
缺点
- 无法表达复杂决策
- 无法支持长期循环任务
- 状态能力较弱
- 动态路径能力不足
5.2 LangGraph 执行模型:状态驱动(Stateful Execution)
LangGraph 的执行模型本质是:
State Machine + Graph-based Dynamic Execution
基本执行结构
#mermaid-svg-bD4VTZ8UlHKmDlch{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bD4VTZ8UlHKmDlch .error-icon{fill:#552222;}#mermaid-svg-bD4VTZ8UlHKmDlch .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bD4VTZ8UlHKmDlch .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bD4VTZ8UlHKmDlch .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bD4VTZ8UlHKmDlch .marker.cross{stroke:#333333;}#mermaid-svg-bD4VTZ8UlHKmDlch svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bD4VTZ8UlHKmDlch p{margin:0;}#mermaid-svg-bD4VTZ8UlHKmDlch .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bD4VTZ8UlHKmDlch .cluster-label text{fill:#333;}#mermaid-svg-bD4VTZ8UlHKmDlch .cluster-label span{color:#333;}#mermaid-svg-bD4VTZ8UlHKmDlch .cluster-label span p{background-color:transparent;}#mermaid-svg-bD4VTZ8UlHKmDlch .label text,#mermaid-svg-bD4VTZ8UlHKmDlch span{fill:#333;color:#333;}#mermaid-svg-bD4VTZ8UlHKmDlch .node rect,#mermaid-svg-bD4VTZ8UlHKmDlch .node circle,#mermaid-svg-bD4VTZ8UlHKmDlch .node ellipse,#mermaid-svg-bD4VTZ8UlHKmDlch .node polygon,#mermaid-svg-bD4VTZ8UlHKmDlch .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bD4VTZ8UlHKmDlch .rough-node .label text,#mermaid-svg-bD4VTZ8UlHKmDlch .node .label text,#mermaid-svg-bD4VTZ8UlHKmDlch .image-shape .label,#mermaid-svg-bD4VTZ8UlHKmDlch .icon-shape .label{text-anchor:middle;}#mermaid-svg-bD4VTZ8UlHKmDlch .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bD4VTZ8UlHKmDlch .rough-node .label,#mermaid-svg-bD4VTZ8UlHKmDlch .node .label,#mermaid-svg-bD4VTZ8UlHKmDlch .image-shape .label,#mermaid-svg-bD4VTZ8UlHKmDlch .icon-shape .label{text-align:center;}#mermaid-svg-bD4VTZ8UlHKmDlch .node.clickable{cursor:pointer;}#mermaid-svg-bD4VTZ8UlHKmDlch .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bD4VTZ8UlHKmDlch .arrowheadPath{fill:#333333;}#mermaid-svg-bD4VTZ8UlHKmDlch .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bD4VTZ8UlHKmDlch .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bD4VTZ8UlHKmDlch .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bD4VTZ8UlHKmDlch .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bD4VTZ8UlHKmDlch .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bD4VTZ8UlHKmDlch .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bD4VTZ8UlHKmDlch .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bD4VTZ8UlHKmDlch .cluster text{fill:#333;}#mermaid-svg-bD4VTZ8UlHKmDlch .cluster span{color:#333;}#mermaid-svg-bD4VTZ8UlHKmDlch div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bD4VTZ8UlHKmDlch .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bD4VTZ8UlHKmDlch rect.text{fill:none;stroke-width:0;}#mermaid-svg-bD4VTZ8UlHKmDlch .icon-shape,#mermaid-svg-bD4VTZ8UlHKmDlch .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bD4VTZ8UlHKmDlch .icon-shape p,#mermaid-svg-bD4VTZ8UlHKmDlch .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bD4VTZ8UlHKmDlch .icon-shape .label rect,#mermaid-svg-bD4VTZ8UlHKmDlch .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bD4VTZ8UlHKmDlch .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bD4VTZ8UlHKmDlch .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bD4VTZ8UlHKmDlch :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 通过
不通过
State初始化
Node: Planner
Node: Searcher
Node: Critic
结束 End
核心特点
① 状态驱动执行(State-driven)
每一步执行依赖:
text
state → node → updated state → next node
② 动态路径选择(Dynamic Routing)
执行路径不是固定的:
#mermaid-svg-5hFwIp6GwMezWWIE{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5hFwIp6GwMezWWIE .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5hFwIp6GwMezWWIE .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5hFwIp6GwMezWWIE .error-icon{fill:#552222;}#mermaid-svg-5hFwIp6GwMezWWIE .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5hFwIp6GwMezWWIE .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5hFwIp6GwMezWWIE .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5hFwIp6GwMezWWIE .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5hFwIp6GwMezWWIE .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5hFwIp6GwMezWWIE .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5hFwIp6GwMezWWIE .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5hFwIp6GwMezWWIE .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5hFwIp6GwMezWWIE .marker.cross{stroke:#333333;}#mermaid-svg-5hFwIp6GwMezWWIE svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5hFwIp6GwMezWWIE p{margin:0;}#mermaid-svg-5hFwIp6GwMezWWIE .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5hFwIp6GwMezWWIE .cluster-label text{fill:#333;}#mermaid-svg-5hFwIp6GwMezWWIE .cluster-label span{color:#333;}#mermaid-svg-5hFwIp6GwMezWWIE .cluster-label span p{background-color:transparent;}#mermaid-svg-5hFwIp6GwMezWWIE .label text,#mermaid-svg-5hFwIp6GwMezWWIE span{fill:#333;color:#333;}#mermaid-svg-5hFwIp6GwMezWWIE .node rect,#mermaid-svg-5hFwIp6GwMezWWIE .node circle,#mermaid-svg-5hFwIp6GwMezWWIE .node ellipse,#mermaid-svg-5hFwIp6GwMezWWIE .node polygon,#mermaid-svg-5hFwIp6GwMezWWIE .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5hFwIp6GwMezWWIE .rough-node .label text,#mermaid-svg-5hFwIp6GwMezWWIE .node .label text,#mermaid-svg-5hFwIp6GwMezWWIE .image-shape .label,#mermaid-svg-5hFwIp6GwMezWWIE .icon-shape .label{text-anchor:middle;}#mermaid-svg-5hFwIp6GwMezWWIE .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5hFwIp6GwMezWWIE .rough-node .label,#mermaid-svg-5hFwIp6GwMezWWIE .node .label,#mermaid-svg-5hFwIp6GwMezWWIE .image-shape .label,#mermaid-svg-5hFwIp6GwMezWWIE .icon-shape .label{text-align:center;}#mermaid-svg-5hFwIp6GwMezWWIE .node.clickable{cursor:pointer;}#mermaid-svg-5hFwIp6GwMezWWIE .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5hFwIp6GwMezWWIE .arrowheadPath{fill:#333333;}#mermaid-svg-5hFwIp6GwMezWWIE .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5hFwIp6GwMezWWIE .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5hFwIp6GwMezWWIE .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5hFwIp6GwMezWWIE .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5hFwIp6GwMezWWIE .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5hFwIp6GwMezWWIE .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5hFwIp6GwMezWWIE .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5hFwIp6GwMezWWIE .cluster text{fill:#333;}#mermaid-svg-5hFwIp6GwMezWWIE .cluster span{color:#333;}#mermaid-svg-5hFwIp6GwMezWWIE div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5hFwIp6GwMezWWIE .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5hFwIp6GwMezWWIE rect.text{fill:none;stroke-width:0;}#mermaid-svg-5hFwIp6GwMezWWIE .icon-shape,#mermaid-svg-5hFwIp6GwMezWWIE .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5hFwIp6GwMezWWIE .icon-shape p,#mermaid-svg-5hFwIp6GwMezWWIE .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5hFwIp6GwMezWWIE .icon-shape .label rect,#mermaid-svg-5hFwIp6GwMezWWIE .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5hFwIp6GwMezWWIE .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5hFwIp6GwMezWWIE .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5hFwIp6GwMezWWIE :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 条件1
条件2
Node A
条件判断
Node B
Node C
End
③ 支持循环(Native Loop)
LangGraph 原生支持:
#mermaid-svg-CXGQICIlM128gpEG{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CXGQICIlM128gpEG .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CXGQICIlM128gpEG .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CXGQICIlM128gpEG .error-icon{fill:#552222;}#mermaid-svg-CXGQICIlM128gpEG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CXGQICIlM128gpEG .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CXGQICIlM128gpEG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CXGQICIlM128gpEG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CXGQICIlM128gpEG .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CXGQICIlM128gpEG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CXGQICIlM128gpEG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CXGQICIlM128gpEG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CXGQICIlM128gpEG .marker.cross{stroke:#333333;}#mermaid-svg-CXGQICIlM128gpEG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CXGQICIlM128gpEG p{margin:0;}#mermaid-svg-CXGQICIlM128gpEG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-CXGQICIlM128gpEG .cluster-label text{fill:#333;}#mermaid-svg-CXGQICIlM128gpEG .cluster-label span{color:#333;}#mermaid-svg-CXGQICIlM128gpEG .cluster-label span p{background-color:transparent;}#mermaid-svg-CXGQICIlM128gpEG .label text,#mermaid-svg-CXGQICIlM128gpEG span{fill:#333;color:#333;}#mermaid-svg-CXGQICIlM128gpEG .node rect,#mermaid-svg-CXGQICIlM128gpEG .node circle,#mermaid-svg-CXGQICIlM128gpEG .node ellipse,#mermaid-svg-CXGQICIlM128gpEG .node polygon,#mermaid-svg-CXGQICIlM128gpEG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CXGQICIlM128gpEG .rough-node .label text,#mermaid-svg-CXGQICIlM128gpEG .node .label text,#mermaid-svg-CXGQICIlM128gpEG .image-shape .label,#mermaid-svg-CXGQICIlM128gpEG .icon-shape .label{text-anchor:middle;}#mermaid-svg-CXGQICIlM128gpEG .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CXGQICIlM128gpEG .rough-node .label,#mermaid-svg-CXGQICIlM128gpEG .node .label,#mermaid-svg-CXGQICIlM128gpEG .image-shape .label,#mermaid-svg-CXGQICIlM128gpEG .icon-shape .label{text-align:center;}#mermaid-svg-CXGQICIlM128gpEG .node.clickable{cursor:pointer;}#mermaid-svg-CXGQICIlM128gpEG .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CXGQICIlM128gpEG .arrowheadPath{fill:#333333;}#mermaid-svg-CXGQICIlM128gpEG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CXGQICIlM128gpEG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CXGQICIlM128gpEG .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CXGQICIlM128gpEG .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CXGQICIlM128gpEG .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CXGQICIlM128gpEG .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CXGQICIlM128gpEG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CXGQICIlM128gpEG .cluster text{fill:#333;}#mermaid-svg-CXGQICIlM128gpEG .cluster span{color:#333;}#mermaid-svg-CXGQICIlM128gpEG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CXGQICIlM128gpEG .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CXGQICIlM128gpEG rect.text{fill:none;stroke-width:0;}#mermaid-svg-CXGQICIlM128gpEG .icon-shape,#mermaid-svg-CXGQICIlM128gpEG .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CXGQICIlM128gpEG .icon-shape p,#mermaid-svg-CXGQICIlM128gpEG .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CXGQICIlM128gpEG .icon-shape .label rect,#mermaid-svg-CXGQICIlM128gpEG .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CXGQICIlM128gpEG .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CXGQICIlM128gpEG .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CXGQICIlM128gpEG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
Search
Evaluate
是否足够?
输出结果
④ 全局状态共享(Global State)
python
state = {
"messages": [],
"plan": [],
"results": [],
"iteration": 0
}
所有 Node 共享并修改 state。
本质总结
LangGraph 执行模型本质是:
显式状态机执行系统(Explicit Stateful Execution System)
优点
- 支持复杂决策流程
- 支持循环与回溯
- 支持长期任务
- 支持多 Agent 协作
- 支持状态恢复(Checkpoint)
缺点
- 学习成本更高
- 结构更复杂
- 小任务显得"过重"
5.3 顺序执行 vs 动态执行(核心差异)
LangChain:顺序执行模型
#mermaid-svg-a3k4pP8JgyWI0tlj{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-a3k4pP8JgyWI0tlj .error-icon{fill:#552222;}#mermaid-svg-a3k4pP8JgyWI0tlj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-a3k4pP8JgyWI0tlj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-a3k4pP8JgyWI0tlj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-a3k4pP8JgyWI0tlj .marker.cross{stroke:#333333;}#mermaid-svg-a3k4pP8JgyWI0tlj svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-a3k4pP8JgyWI0tlj p{margin:0;}#mermaid-svg-a3k4pP8JgyWI0tlj .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-a3k4pP8JgyWI0tlj .cluster-label text{fill:#333;}#mermaid-svg-a3k4pP8JgyWI0tlj .cluster-label span{color:#333;}#mermaid-svg-a3k4pP8JgyWI0tlj .cluster-label span p{background-color:transparent;}#mermaid-svg-a3k4pP8JgyWI0tlj .label text,#mermaid-svg-a3k4pP8JgyWI0tlj span{fill:#333;color:#333;}#mermaid-svg-a3k4pP8JgyWI0tlj .node rect,#mermaid-svg-a3k4pP8JgyWI0tlj .node circle,#mermaid-svg-a3k4pP8JgyWI0tlj .node ellipse,#mermaid-svg-a3k4pP8JgyWI0tlj .node polygon,#mermaid-svg-a3k4pP8JgyWI0tlj .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-a3k4pP8JgyWI0tlj .rough-node .label text,#mermaid-svg-a3k4pP8JgyWI0tlj .node .label text,#mermaid-svg-a3k4pP8JgyWI0tlj .image-shape .label,#mermaid-svg-a3k4pP8JgyWI0tlj .icon-shape .label{text-anchor:middle;}#mermaid-svg-a3k4pP8JgyWI0tlj .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-a3k4pP8JgyWI0tlj .rough-node .label,#mermaid-svg-a3k4pP8JgyWI0tlj .node .label,#mermaid-svg-a3k4pP8JgyWI0tlj .image-shape .label,#mermaid-svg-a3k4pP8JgyWI0tlj .icon-shape .label{text-align:center;}#mermaid-svg-a3k4pP8JgyWI0tlj .node.clickable{cursor:pointer;}#mermaid-svg-a3k4pP8JgyWI0tlj .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-a3k4pP8JgyWI0tlj .arrowheadPath{fill:#333333;}#mermaid-svg-a3k4pP8JgyWI0tlj .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-a3k4pP8JgyWI0tlj .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-a3k4pP8JgyWI0tlj .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-a3k4pP8JgyWI0tlj .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-a3k4pP8JgyWI0tlj .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-a3k4pP8JgyWI0tlj .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-a3k4pP8JgyWI0tlj .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-a3k4pP8JgyWI0tlj .cluster text{fill:#333;}#mermaid-svg-a3k4pP8JgyWI0tlj .cluster span{color:#333;}#mermaid-svg-a3k4pP8JgyWI0tlj div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-a3k4pP8JgyWI0tlj .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-a3k4pP8JgyWI0tlj rect.text{fill:none;stroke-width:0;}#mermaid-svg-a3k4pP8JgyWI0tlj .icon-shape,#mermaid-svg-a3k4pP8JgyWI0tlj .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-a3k4pP8JgyWI0tlj .icon-shape p,#mermaid-svg-a3k4pP8JgyWI0tlj .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-a3k4pP8JgyWI0tlj .icon-shape .label rect,#mermaid-svg-a3k4pP8JgyWI0tlj .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-a3k4pP8JgyWI0tlj .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-a3k4pP8JgyWI0tlj .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-a3k4pP8JgyWI0tlj :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Input
Step1
Step2
Step3
Output
特征:
- Linear
- Static
- One-pass
LangGraph:动态执行模型
#mermaid-svg-oZlp9sKrnTu9DJma{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-oZlp9sKrnTu9DJma .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-oZlp9sKrnTu9DJma .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-oZlp9sKrnTu9DJma .error-icon{fill:#552222;}#mermaid-svg-oZlp9sKrnTu9DJma .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oZlp9sKrnTu9DJma .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-oZlp9sKrnTu9DJma .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oZlp9sKrnTu9DJma .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oZlp9sKrnTu9DJma .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-oZlp9sKrnTu9DJma .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oZlp9sKrnTu9DJma .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oZlp9sKrnTu9DJma .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oZlp9sKrnTu9DJma .marker.cross{stroke:#333333;}#mermaid-svg-oZlp9sKrnTu9DJma svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oZlp9sKrnTu9DJma p{margin:0;}#mermaid-svg-oZlp9sKrnTu9DJma .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-oZlp9sKrnTu9DJma .cluster-label text{fill:#333;}#mermaid-svg-oZlp9sKrnTu9DJma .cluster-label span{color:#333;}#mermaid-svg-oZlp9sKrnTu9DJma .cluster-label span p{background-color:transparent;}#mermaid-svg-oZlp9sKrnTu9DJma .label text,#mermaid-svg-oZlp9sKrnTu9DJma span{fill:#333;color:#333;}#mermaid-svg-oZlp9sKrnTu9DJma .node rect,#mermaid-svg-oZlp9sKrnTu9DJma .node circle,#mermaid-svg-oZlp9sKrnTu9DJma .node ellipse,#mermaid-svg-oZlp9sKrnTu9DJma .node polygon,#mermaid-svg-oZlp9sKrnTu9DJma .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oZlp9sKrnTu9DJma .rough-node .label text,#mermaid-svg-oZlp9sKrnTu9DJma .node .label text,#mermaid-svg-oZlp9sKrnTu9DJma .image-shape .label,#mermaid-svg-oZlp9sKrnTu9DJma .icon-shape .label{text-anchor:middle;}#mermaid-svg-oZlp9sKrnTu9DJma .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-oZlp9sKrnTu9DJma .rough-node .label,#mermaid-svg-oZlp9sKrnTu9DJma .node .label,#mermaid-svg-oZlp9sKrnTu9DJma .image-shape .label,#mermaid-svg-oZlp9sKrnTu9DJma .icon-shape .label{text-align:center;}#mermaid-svg-oZlp9sKrnTu9DJma .node.clickable{cursor:pointer;}#mermaid-svg-oZlp9sKrnTu9DJma .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-oZlp9sKrnTu9DJma .arrowheadPath{fill:#333333;}#mermaid-svg-oZlp9sKrnTu9DJma .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oZlp9sKrnTu9DJma .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oZlp9sKrnTu9DJma .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oZlp9sKrnTu9DJma .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-oZlp9sKrnTu9DJma .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oZlp9sKrnTu9DJma .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-oZlp9sKrnTu9DJma .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oZlp9sKrnTu9DJma .cluster text{fill:#333;}#mermaid-svg-oZlp9sKrnTu9DJma .cluster span{color:#333;}#mermaid-svg-oZlp9sKrnTu9DJma div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oZlp9sKrnTu9DJma .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-oZlp9sKrnTu9DJma rect.text{fill:none;stroke-width:0;}#mermaid-svg-oZlp9sKrnTu9DJma .icon-shape,#mermaid-svg-oZlp9sKrnTu9DJma .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-oZlp9sKrnTu9DJma .icon-shape p,#mermaid-svg-oZlp9sKrnTu9DJma .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-oZlp9sKrnTu9DJma .icon-shape .label rect,#mermaid-svg-oZlp9sKrnTu9DJma .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-oZlp9sKrnTu9DJma .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-oZlp9sKrnTu9DJma .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-oZlp9sKrnTu9DJma :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 路径1
路径2
是
否
State
Node1
Decision
Node2
Node3
是否继续?
End
特征:
- Dynamic
- Stateful
- Cyclic
核心差异总结
| 维度 | LangChain | LangGraph |
|---|---|---|
| 执行方式 | 顺序执行 | 状态驱动 |
| 控制流 | 隐式 | 显式 |
| 路径 | 固定 | 动态 |
| 循环 | 不支持 | 原生支持 |
5.4 ReAct / Planning / Reflection 执行机制对比
这一节是 Agent 执行模型的核心。
① ReAct(LangChain 典型)
ReAct = Reason + Act
#mermaid-svg-7o70foegj29HJHxV{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7o70foegj29HJHxV .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7o70foegj29HJHxV .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7o70foegj29HJHxV .error-icon{fill:#552222;}#mermaid-svg-7o70foegj29HJHxV .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7o70foegj29HJHxV .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7o70foegj29HJHxV .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7o70foegj29HJHxV .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7o70foegj29HJHxV .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7o70foegj29HJHxV .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7o70foegj29HJHxV .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7o70foegj29HJHxV .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7o70foegj29HJHxV .marker.cross{stroke:#333333;}#mermaid-svg-7o70foegj29HJHxV svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7o70foegj29HJHxV p{margin:0;}#mermaid-svg-7o70foegj29HJHxV .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7o70foegj29HJHxV .cluster-label text{fill:#333;}#mermaid-svg-7o70foegj29HJHxV .cluster-label span{color:#333;}#mermaid-svg-7o70foegj29HJHxV .cluster-label span p{background-color:transparent;}#mermaid-svg-7o70foegj29HJHxV .label text,#mermaid-svg-7o70foegj29HJHxV span{fill:#333;color:#333;}#mermaid-svg-7o70foegj29HJHxV .node rect,#mermaid-svg-7o70foegj29HJHxV .node circle,#mermaid-svg-7o70foegj29HJHxV .node ellipse,#mermaid-svg-7o70foegj29HJHxV .node polygon,#mermaid-svg-7o70foegj29HJHxV .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7o70foegj29HJHxV .rough-node .label text,#mermaid-svg-7o70foegj29HJHxV .node .label text,#mermaid-svg-7o70foegj29HJHxV .image-shape .label,#mermaid-svg-7o70foegj29HJHxV .icon-shape .label{text-anchor:middle;}#mermaid-svg-7o70foegj29HJHxV .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7o70foegj29HJHxV .rough-node .label,#mermaid-svg-7o70foegj29HJHxV .node .label,#mermaid-svg-7o70foegj29HJHxV .image-shape .label,#mermaid-svg-7o70foegj29HJHxV .icon-shape .label{text-align:center;}#mermaid-svg-7o70foegj29HJHxV .node.clickable{cursor:pointer;}#mermaid-svg-7o70foegj29HJHxV .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7o70foegj29HJHxV .arrowheadPath{fill:#333333;}#mermaid-svg-7o70foegj29HJHxV .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7o70foegj29HJHxV .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7o70foegj29HJHxV .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7o70foegj29HJHxV .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7o70foegj29HJHxV .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7o70foegj29HJHxV .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7o70foegj29HJHxV .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7o70foegj29HJHxV .cluster text{fill:#333;}#mermaid-svg-7o70foegj29HJHxV .cluster span{color:#333;}#mermaid-svg-7o70foegj29HJHxV div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7o70foegj29HJHxV .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7o70foegj29HJHxV rect.text{fill:none;stroke-width:0;}#mermaid-svg-7o70foegj29HJHxV .icon-shape,#mermaid-svg-7o70foegj29HJHxV .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7o70foegj29HJHxV .icon-shape p,#mermaid-svg-7o70foegj29HJHxV .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7o70foegj29HJHxV .icon-shape .label rect,#mermaid-svg-7o70foegj29HJHxV .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7o70foegj29HJHxV .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7o70foegj29HJHxV .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7o70foegj29HJHxV :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 问题输入
Reasoning
Action选择
Tool执行
Observation
特点
- 思考 + 行动交替
- 轻量 loop
- 依赖 prompt 控制
局限
- loop 不稳定
- 控制能力弱
- 状态不结构化
② Planning Agent(规划型)
#mermaid-svg-kngAXqgUyOaCSKir{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kngAXqgUyOaCSKir .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kngAXqgUyOaCSKir .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kngAXqgUyOaCSKir .error-icon{fill:#552222;}#mermaid-svg-kngAXqgUyOaCSKir .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kngAXqgUyOaCSKir .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kngAXqgUyOaCSKir .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kngAXqgUyOaCSKir .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kngAXqgUyOaCSKir .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kngAXqgUyOaCSKir .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kngAXqgUyOaCSKir .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kngAXqgUyOaCSKir .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kngAXqgUyOaCSKir .marker.cross{stroke:#333333;}#mermaid-svg-kngAXqgUyOaCSKir svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kngAXqgUyOaCSKir p{margin:0;}#mermaid-svg-kngAXqgUyOaCSKir .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kngAXqgUyOaCSKir .cluster-label text{fill:#333;}#mermaid-svg-kngAXqgUyOaCSKir .cluster-label span{color:#333;}#mermaid-svg-kngAXqgUyOaCSKir .cluster-label span p{background-color:transparent;}#mermaid-svg-kngAXqgUyOaCSKir .label text,#mermaid-svg-kngAXqgUyOaCSKir span{fill:#333;color:#333;}#mermaid-svg-kngAXqgUyOaCSKir .node rect,#mermaid-svg-kngAXqgUyOaCSKir .node circle,#mermaid-svg-kngAXqgUyOaCSKir .node ellipse,#mermaid-svg-kngAXqgUyOaCSKir .node polygon,#mermaid-svg-kngAXqgUyOaCSKir .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kngAXqgUyOaCSKir .rough-node .label text,#mermaid-svg-kngAXqgUyOaCSKir .node .label text,#mermaid-svg-kngAXqgUyOaCSKir .image-shape .label,#mermaid-svg-kngAXqgUyOaCSKir .icon-shape .label{text-anchor:middle;}#mermaid-svg-kngAXqgUyOaCSKir .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kngAXqgUyOaCSKir .rough-node .label,#mermaid-svg-kngAXqgUyOaCSKir .node .label,#mermaid-svg-kngAXqgUyOaCSKir .image-shape .label,#mermaid-svg-kngAXqgUyOaCSKir .icon-shape .label{text-align:center;}#mermaid-svg-kngAXqgUyOaCSKir .node.clickable{cursor:pointer;}#mermaid-svg-kngAXqgUyOaCSKir .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kngAXqgUyOaCSKir .arrowheadPath{fill:#333333;}#mermaid-svg-kngAXqgUyOaCSKir .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kngAXqgUyOaCSKir .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kngAXqgUyOaCSKir .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kngAXqgUyOaCSKir .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kngAXqgUyOaCSKir .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kngAXqgUyOaCSKir .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kngAXqgUyOaCSKir .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kngAXqgUyOaCSKir .cluster text{fill:#333;}#mermaid-svg-kngAXqgUyOaCSKir .cluster span{color:#333;}#mermaid-svg-kngAXqgUyOaCSKir div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kngAXqgUyOaCSKir .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kngAXqgUyOaCSKir rect.text{fill:none;stroke-width:0;}#mermaid-svg-kngAXqgUyOaCSKir .icon-shape,#mermaid-svg-kngAXqgUyOaCSKir .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kngAXqgUyOaCSKir .icon-shape p,#mermaid-svg-kngAXqgUyOaCSKir .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kngAXqgUyOaCSKir .icon-shape .label rect,#mermaid-svg-kngAXqgUyOaCSKir .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kngAXqgUyOaCSKir .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kngAXqgUyOaCSKir .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kngAXqgUyOaCSKir :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 任务输入
生成Plan
执行Step1
执行Step2
执行Step3
总结输出
特点
- 先规划后执行
- 执行流程较稳定
局限
- plan 不可动态调整
- 遇到变化难适配
③ Reflection Agent(反思型)
#mermaid-svg-kVMdgl9auT3xhXbu{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kVMdgl9auT3xhXbu .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kVMdgl9auT3xhXbu .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kVMdgl9auT3xhXbu .error-icon{fill:#552222;}#mermaid-svg-kVMdgl9auT3xhXbu .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kVMdgl9auT3xhXbu .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kVMdgl9auT3xhXbu .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kVMdgl9auT3xhXbu .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kVMdgl9auT3xhXbu .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kVMdgl9auT3xhXbu .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kVMdgl9auT3xhXbu .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kVMdgl9auT3xhXbu .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kVMdgl9auT3xhXbu .marker.cross{stroke:#333333;}#mermaid-svg-kVMdgl9auT3xhXbu svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kVMdgl9auT3xhXbu p{margin:0;}#mermaid-svg-kVMdgl9auT3xhXbu .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kVMdgl9auT3xhXbu .cluster-label text{fill:#333;}#mermaid-svg-kVMdgl9auT3xhXbu .cluster-label span{color:#333;}#mermaid-svg-kVMdgl9auT3xhXbu .cluster-label span p{background-color:transparent;}#mermaid-svg-kVMdgl9auT3xhXbu .label text,#mermaid-svg-kVMdgl9auT3xhXbu span{fill:#333;color:#333;}#mermaid-svg-kVMdgl9auT3xhXbu .node rect,#mermaid-svg-kVMdgl9auT3xhXbu .node circle,#mermaid-svg-kVMdgl9auT3xhXbu .node ellipse,#mermaid-svg-kVMdgl9auT3xhXbu .node polygon,#mermaid-svg-kVMdgl9auT3xhXbu .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kVMdgl9auT3xhXbu .rough-node .label text,#mermaid-svg-kVMdgl9auT3xhXbu .node .label text,#mermaid-svg-kVMdgl9auT3xhXbu .image-shape .label,#mermaid-svg-kVMdgl9auT3xhXbu .icon-shape .label{text-anchor:middle;}#mermaid-svg-kVMdgl9auT3xhXbu .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kVMdgl9auT3xhXbu .rough-node .label,#mermaid-svg-kVMdgl9auT3xhXbu .node .label,#mermaid-svg-kVMdgl9auT3xhXbu .image-shape .label,#mermaid-svg-kVMdgl9auT3xhXbu .icon-shape .label{text-align:center;}#mermaid-svg-kVMdgl9auT3xhXbu .node.clickable{cursor:pointer;}#mermaid-svg-kVMdgl9auT3xhXbu .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kVMdgl9auT3xhXbu .arrowheadPath{fill:#333333;}#mermaid-svg-kVMdgl9auT3xhXbu .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kVMdgl9auT3xhXbu .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kVMdgl9auT3xhXbu .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kVMdgl9auT3xhXbu .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kVMdgl9auT3xhXbu .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kVMdgl9auT3xhXbu .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kVMdgl9auT3xhXbu .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kVMdgl9auT3xhXbu .cluster text{fill:#333;}#mermaid-svg-kVMdgl9auT3xhXbu .cluster span{color:#333;}#mermaid-svg-kVMdgl9auT3xhXbu div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kVMdgl9auT3xhXbu .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kVMdgl9auT3xhXbu rect.text{fill:none;stroke-width:0;}#mermaid-svg-kVMdgl9auT3xhXbu .icon-shape,#mermaid-svg-kVMdgl9auT3xhXbu .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kVMdgl9auT3xhXbu .icon-shape p,#mermaid-svg-kVMdgl9auT3xhXbu .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kVMdgl9auT3xhXbu .icon-shape .label rect,#mermaid-svg-kVMdgl9auT3xhXbu .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kVMdgl9auT3xhXbu .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kVMdgl9auT3xhXbu .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kVMdgl9auT3xhXbu :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
生成结果
自我评估
是否合格?
修正
输出
特点
- 自我优化能力
- loop-based improvement
LangGraph 的优势
LangGraph 可以原生表达所有这些模式:
| 模型 | LangChain | LangGraph |
|---|---|---|
| ReAct | ✅(prompt实现) | ✅(结构化) |
| Planning | ⚠️ | ✅ |
| Reflection | ⚠️ | ✅ |
| Hybrid | ❌ | ✅ |
5.5 动态决策能力对比(核心差异)
LangChain:隐式决策
#mermaid-svg-3Q07qiayw8gMEchi{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3Q07qiayw8gMEchi .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3Q07qiayw8gMEchi .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3Q07qiayw8gMEchi .error-icon{fill:#552222;}#mermaid-svg-3Q07qiayw8gMEchi .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3Q07qiayw8gMEchi .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3Q07qiayw8gMEchi .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3Q07qiayw8gMEchi .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3Q07qiayw8gMEchi .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3Q07qiayw8gMEchi .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3Q07qiayw8gMEchi .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3Q07qiayw8gMEchi .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3Q07qiayw8gMEchi .marker.cross{stroke:#333333;}#mermaid-svg-3Q07qiayw8gMEchi svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3Q07qiayw8gMEchi p{margin:0;}#mermaid-svg-3Q07qiayw8gMEchi .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3Q07qiayw8gMEchi .cluster-label text{fill:#333;}#mermaid-svg-3Q07qiayw8gMEchi .cluster-label span{color:#333;}#mermaid-svg-3Q07qiayw8gMEchi .cluster-label span p{background-color:transparent;}#mermaid-svg-3Q07qiayw8gMEchi .label text,#mermaid-svg-3Q07qiayw8gMEchi span{fill:#333;color:#333;}#mermaid-svg-3Q07qiayw8gMEchi .node rect,#mermaid-svg-3Q07qiayw8gMEchi .node circle,#mermaid-svg-3Q07qiayw8gMEchi .node ellipse,#mermaid-svg-3Q07qiayw8gMEchi .node polygon,#mermaid-svg-3Q07qiayw8gMEchi .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3Q07qiayw8gMEchi .rough-node .label text,#mermaid-svg-3Q07qiayw8gMEchi .node .label text,#mermaid-svg-3Q07qiayw8gMEchi .image-shape .label,#mermaid-svg-3Q07qiayw8gMEchi .icon-shape .label{text-anchor:middle;}#mermaid-svg-3Q07qiayw8gMEchi .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3Q07qiayw8gMEchi .rough-node .label,#mermaid-svg-3Q07qiayw8gMEchi .node .label,#mermaid-svg-3Q07qiayw8gMEchi .image-shape .label,#mermaid-svg-3Q07qiayw8gMEchi .icon-shape .label{text-align:center;}#mermaid-svg-3Q07qiayw8gMEchi .node.clickable{cursor:pointer;}#mermaid-svg-3Q07qiayw8gMEchi .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3Q07qiayw8gMEchi .arrowheadPath{fill:#333333;}#mermaid-svg-3Q07qiayw8gMEchi .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3Q07qiayw8gMEchi .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3Q07qiayw8gMEchi .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3Q07qiayw8gMEchi .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3Q07qiayw8gMEchi .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3Q07qiayw8gMEchi .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3Q07qiayw8gMEchi .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3Q07qiayw8gMEchi .cluster text{fill:#333;}#mermaid-svg-3Q07qiayw8gMEchi .cluster span{color:#333;}#mermaid-svg-3Q07qiayw8gMEchi div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3Q07qiayw8gMEchi .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3Q07qiayw8gMEchi rect.text{fill:none;stroke-width:0;}#mermaid-svg-3Q07qiayw8gMEchi .icon-shape,#mermaid-svg-3Q07qiayw8gMEchi .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3Q07qiayw8gMEchi .icon-shape p,#mermaid-svg-3Q07qiayw8gMEchi .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3Q07qiayw8gMEchi .icon-shape .label rect,#mermaid-svg-3Q07qiayw8gMEchi .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3Q07qiayw8gMEchi .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3Q07qiayw8gMEchi .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3Q07qiayw8gMEchi :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} LLM
Prompt决定
Tool A
Tool B
特点:
- 决策依赖 Prompt
- 不可控
- 不可观测
LangGraph:显式决策
#mermaid-svg-w5JRdyUZfnRWAM9j{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-w5JRdyUZfnRWAM9j .error-icon{fill:#552222;}#mermaid-svg-w5JRdyUZfnRWAM9j .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-w5JRdyUZfnRWAM9j .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-w5JRdyUZfnRWAM9j .marker{fill:#333333;stroke:#333333;}#mermaid-svg-w5JRdyUZfnRWAM9j .marker.cross{stroke:#333333;}#mermaid-svg-w5JRdyUZfnRWAM9j svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-w5JRdyUZfnRWAM9j p{margin:0;}#mermaid-svg-w5JRdyUZfnRWAM9j .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-w5JRdyUZfnRWAM9j .cluster-label text{fill:#333;}#mermaid-svg-w5JRdyUZfnRWAM9j .cluster-label span{color:#333;}#mermaid-svg-w5JRdyUZfnRWAM9j .cluster-label span p{background-color:transparent;}#mermaid-svg-w5JRdyUZfnRWAM9j .label text,#mermaid-svg-w5JRdyUZfnRWAM9j span{fill:#333;color:#333;}#mermaid-svg-w5JRdyUZfnRWAM9j .node rect,#mermaid-svg-w5JRdyUZfnRWAM9j .node circle,#mermaid-svg-w5JRdyUZfnRWAM9j .node ellipse,#mermaid-svg-w5JRdyUZfnRWAM9j .node polygon,#mermaid-svg-w5JRdyUZfnRWAM9j .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-w5JRdyUZfnRWAM9j .rough-node .label text,#mermaid-svg-w5JRdyUZfnRWAM9j .node .label text,#mermaid-svg-w5JRdyUZfnRWAM9j .image-shape .label,#mermaid-svg-w5JRdyUZfnRWAM9j .icon-shape .label{text-anchor:middle;}#mermaid-svg-w5JRdyUZfnRWAM9j .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-w5JRdyUZfnRWAM9j .rough-node .label,#mermaid-svg-w5JRdyUZfnRWAM9j .node .label,#mermaid-svg-w5JRdyUZfnRWAM9j .image-shape .label,#mermaid-svg-w5JRdyUZfnRWAM9j .icon-shape .label{text-align:center;}#mermaid-svg-w5JRdyUZfnRWAM9j .node.clickable{cursor:pointer;}#mermaid-svg-w5JRdyUZfnRWAM9j .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-w5JRdyUZfnRWAM9j .arrowheadPath{fill:#333333;}#mermaid-svg-w5JRdyUZfnRWAM9j .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-w5JRdyUZfnRWAM9j .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-w5JRdyUZfnRWAM9j .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-w5JRdyUZfnRWAM9j .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-w5JRdyUZfnRWAM9j .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-w5JRdyUZfnRWAM9j .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-w5JRdyUZfnRWAM9j .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-w5JRdyUZfnRWAM9j .cluster text{fill:#333;}#mermaid-svg-w5JRdyUZfnRWAM9j .cluster span{color:#333;}#mermaid-svg-w5JRdyUZfnRWAM9j div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-w5JRdyUZfnRWAM9j .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-w5JRdyUZfnRWAM9j rect.text{fill:none;stroke-width:0;}#mermaid-svg-w5JRdyUZfnRWAM9j .icon-shape,#mermaid-svg-w5JRdyUZfnRWAM9j .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-w5JRdyUZfnRWAM9j .icon-shape p,#mermaid-svg-w5JRdyUZfnRWAM9j .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-w5JRdyUZfnRWAM9j .icon-shape .label rect,#mermaid-svg-w5JRdyUZfnRWAM9j .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-w5JRdyUZfnRWAM9j .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-w5JRdyUZfnRWAM9j .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-w5JRdyUZfnRWAM9j :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} A
B
C
State
Decision Node
条件判断
Node A
Node B
Node C
特点:
- 决策结构化
- 可调试
- 可追踪
5.6 执行模型本质对比(总结)
① 模型定义
text
LangChain = Sequential Execution Model
LangGraph = Stateful Graph Execution Model
② 控制方式
| 维度 | LangChain | LangGraph |
|---|---|---|
| 控制流 | 隐式 | 显式 |
| 决策点 | Prompt内部 | Graph节点 |
| 可调试性 | 弱 | 强 |
③ 系统行为
| 行为 | LangChain | LangGraph |
|---|---|---|
| 单轮任务 | 强 | 强 |
| 多轮推理 | 弱 | 强 |
| 长任务 | 不适合 | 原生支持 |
| 动态路径 | 不支持 | 支持 |
6. 状态管理机制对比:Memory vs State vs Checkpoint
在 LangChain 与 LangGraph 的体系中,"状态管理能力"是决定系统是否能够从"对话工具"升级为"Agent 系统"的关键因素。
本章重点分析三种核心机制:
- LangChain Memory(记忆机制)
- LangGraph State(状态机制)
- Checkpoint(持久化与恢复机制)
6.1 LangChain Memory:局部记忆模型
LangChain 的 Memory 机制本质是:
对话上下文增强机制(Context Augmentation Layer)
基本结构
#mermaid-svg-B10ERyjK9nlJbPdI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-B10ERyjK9nlJbPdI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-B10ERyjK9nlJbPdI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-B10ERyjK9nlJbPdI .error-icon{fill:#552222;}#mermaid-svg-B10ERyjK9nlJbPdI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-B10ERyjK9nlJbPdI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-B10ERyjK9nlJbPdI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-B10ERyjK9nlJbPdI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-B10ERyjK9nlJbPdI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-B10ERyjK9nlJbPdI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-B10ERyjK9nlJbPdI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-B10ERyjK9nlJbPdI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-B10ERyjK9nlJbPdI .marker.cross{stroke:#333333;}#mermaid-svg-B10ERyjK9nlJbPdI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-B10ERyjK9nlJbPdI p{margin:0;}#mermaid-svg-B10ERyjK9nlJbPdI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-B10ERyjK9nlJbPdI .cluster-label text{fill:#333;}#mermaid-svg-B10ERyjK9nlJbPdI .cluster-label span{color:#333;}#mermaid-svg-B10ERyjK9nlJbPdI .cluster-label span p{background-color:transparent;}#mermaid-svg-B10ERyjK9nlJbPdI .label text,#mermaid-svg-B10ERyjK9nlJbPdI span{fill:#333;color:#333;}#mermaid-svg-B10ERyjK9nlJbPdI .node rect,#mermaid-svg-B10ERyjK9nlJbPdI .node circle,#mermaid-svg-B10ERyjK9nlJbPdI .node ellipse,#mermaid-svg-B10ERyjK9nlJbPdI .node polygon,#mermaid-svg-B10ERyjK9nlJbPdI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-B10ERyjK9nlJbPdI .rough-node .label text,#mermaid-svg-B10ERyjK9nlJbPdI .node .label text,#mermaid-svg-B10ERyjK9nlJbPdI .image-shape .label,#mermaid-svg-B10ERyjK9nlJbPdI .icon-shape .label{text-anchor:middle;}#mermaid-svg-B10ERyjK9nlJbPdI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-B10ERyjK9nlJbPdI .rough-node .label,#mermaid-svg-B10ERyjK9nlJbPdI .node .label,#mermaid-svg-B10ERyjK9nlJbPdI .image-shape .label,#mermaid-svg-B10ERyjK9nlJbPdI .icon-shape .label{text-align:center;}#mermaid-svg-B10ERyjK9nlJbPdI .node.clickable{cursor:pointer;}#mermaid-svg-B10ERyjK9nlJbPdI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-B10ERyjK9nlJbPdI .arrowheadPath{fill:#333333;}#mermaid-svg-B10ERyjK9nlJbPdI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-B10ERyjK9nlJbPdI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-B10ERyjK9nlJbPdI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-B10ERyjK9nlJbPdI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-B10ERyjK9nlJbPdI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-B10ERyjK9nlJbPdI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-B10ERyjK9nlJbPdI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-B10ERyjK9nlJbPdI .cluster text{fill:#333;}#mermaid-svg-B10ERyjK9nlJbPdI .cluster span{color:#333;}#mermaid-svg-B10ERyjK9nlJbPdI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-B10ERyjK9nlJbPdI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-B10ERyjK9nlJbPdI rect.text{fill:none;stroke-width:0;}#mermaid-svg-B10ERyjK9nlJbPdI .icon-shape,#mermaid-svg-B10ERyjK9nlJbPdI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-B10ERyjK9nlJbPdI .icon-shape p,#mermaid-svg-B10ERyjK9nlJbPdI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-B10ERyjK9nlJbPdI .icon-shape .label rect,#mermaid-svg-B10ERyjK9nlJbPdI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-B10ERyjK9nlJbPdI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-B10ERyjK9nlJbPdI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-B10ERyjK9nlJbPdI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} User Input
Memory读取
Prompt拼接
LLM
Memory更新
常见 Memory 类型
- ConversationBufferMemory
- ConversationSummaryMemory
- WindowMemory
- EntityMemory
核心特点
① 局部性(Local Scope)
Memory 通常绑定在:
- 单个 Chain
- 单个 Agent 会话
② 非结构化(Unstructured)
Memory 内容通常是:
text
聊天记录 / summary / text blob
而不是结构化 state。
③ 被动更新
Memory 更新通常发生在:
- prompt之后
- LLM输出之后
本质总结
LangChain Memory 本质是:
"增强上下文的文本缓存系统"
局限性
- ❌ 无全局状态概念
- ❌ 不适合复杂流程管理
- ❌ 不支持流程级恢复
- ❌ 状态不可拆分控制
6.2 LangGraph State:全局状态模型
LangGraph 引入了完全不同的设计:
State First Design(状态即一等公民)
基本结构
#mermaid-svg-N1i1Mh8OoTpIiqIU{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-N1i1Mh8OoTpIiqIU .error-icon{fill:#552222;}#mermaid-svg-N1i1Mh8OoTpIiqIU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-N1i1Mh8OoTpIiqIU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .marker.cross{stroke:#333333;}#mermaid-svg-N1i1Mh8OoTpIiqIU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-N1i1Mh8OoTpIiqIU p{margin:0;}#mermaid-svg-N1i1Mh8OoTpIiqIU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .cluster-label text{fill:#333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .cluster-label span{color:#333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .cluster-label span p{background-color:transparent;}#mermaid-svg-N1i1Mh8OoTpIiqIU .label text,#mermaid-svg-N1i1Mh8OoTpIiqIU span{fill:#333;color:#333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .node rect,#mermaid-svg-N1i1Mh8OoTpIiqIU .node circle,#mermaid-svg-N1i1Mh8OoTpIiqIU .node ellipse,#mermaid-svg-N1i1Mh8OoTpIiqIU .node polygon,#mermaid-svg-N1i1Mh8OoTpIiqIU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-N1i1Mh8OoTpIiqIU .rough-node .label text,#mermaid-svg-N1i1Mh8OoTpIiqIU .node .label text,#mermaid-svg-N1i1Mh8OoTpIiqIU .image-shape .label,#mermaid-svg-N1i1Mh8OoTpIiqIU .icon-shape .label{text-anchor:middle;}#mermaid-svg-N1i1Mh8OoTpIiqIU .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-N1i1Mh8OoTpIiqIU .rough-node .label,#mermaid-svg-N1i1Mh8OoTpIiqIU .node .label,#mermaid-svg-N1i1Mh8OoTpIiqIU .image-shape .label,#mermaid-svg-N1i1Mh8OoTpIiqIU .icon-shape .label{text-align:center;}#mermaid-svg-N1i1Mh8OoTpIiqIU .node.clickable{cursor:pointer;}#mermaid-svg-N1i1Mh8OoTpIiqIU .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .arrowheadPath{fill:#333333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-N1i1Mh8OoTpIiqIU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-N1i1Mh8OoTpIiqIU .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-N1i1Mh8OoTpIiqIU .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-N1i1Mh8OoTpIiqIU .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-N1i1Mh8OoTpIiqIU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-N1i1Mh8OoTpIiqIU .cluster text{fill:#333;}#mermaid-svg-N1i1Mh8OoTpIiqIU .cluster span{color:#333;}#mermaid-svg-N1i1Mh8OoTpIiqIU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-N1i1Mh8OoTpIiqIU .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-N1i1Mh8OoTpIiqIU rect.text{fill:none;stroke-width:0;}#mermaid-svg-N1i1Mh8OoTpIiqIU .icon-shape,#mermaid-svg-N1i1Mh8OoTpIiqIU .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-N1i1Mh8OoTpIiqIU .icon-shape p,#mermaid-svg-N1i1Mh8OoTpIiqIU .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-N1i1Mh8OoTpIiqIU .icon-shape .label rect,#mermaid-svg-N1i1Mh8OoTpIiqIU .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-N1i1Mh8OoTpIiqIU .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-N1i1Mh8OoTpIiqIU .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-N1i1Mh8OoTpIiqIU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Node A
State Update
Node B
State Update
State 示例
python
state = {
"messages": [],
"plan": [],
"results": [],
"current_step": 0,
"final_answer": None
}
核心特点
① 全局共享(Global State)
所有节点:
- 读取 state
- 修改 state
- 推进 state
② 结构化(Structured State)
State 是:
- 明确 schema
- 可控字段
- 可追踪变化
③ 显式流动(Explicit Flow)
text
Node → State Update → Node → State Update
本质总结
LangGraph State 本质是:
"流动的数据中心(Data-centric Execution Model)"
6.3 Checkpoint 机制:任务恢复核心能力
Checkpoint 是 LangGraph 与 LangChain 最大差异之一。
基本结构
#mermaid-svg-zxv2BwstiaMsQcCQ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-zxv2BwstiaMsQcCQ .error-icon{fill:#552222;}#mermaid-svg-zxv2BwstiaMsQcCQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zxv2BwstiaMsQcCQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zxv2BwstiaMsQcCQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zxv2BwstiaMsQcCQ .marker.cross{stroke:#333333;}#mermaid-svg-zxv2BwstiaMsQcCQ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zxv2BwstiaMsQcCQ p{margin:0;}#mermaid-svg-zxv2BwstiaMsQcCQ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-zxv2BwstiaMsQcCQ .cluster-label text{fill:#333;}#mermaid-svg-zxv2BwstiaMsQcCQ .cluster-label span{color:#333;}#mermaid-svg-zxv2BwstiaMsQcCQ .cluster-label span p{background-color:transparent;}#mermaid-svg-zxv2BwstiaMsQcCQ .label text,#mermaid-svg-zxv2BwstiaMsQcCQ span{fill:#333;color:#333;}#mermaid-svg-zxv2BwstiaMsQcCQ .node rect,#mermaid-svg-zxv2BwstiaMsQcCQ .node circle,#mermaid-svg-zxv2BwstiaMsQcCQ .node ellipse,#mermaid-svg-zxv2BwstiaMsQcCQ .node polygon,#mermaid-svg-zxv2BwstiaMsQcCQ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zxv2BwstiaMsQcCQ .rough-node .label text,#mermaid-svg-zxv2BwstiaMsQcCQ .node .label text,#mermaid-svg-zxv2BwstiaMsQcCQ .image-shape .label,#mermaid-svg-zxv2BwstiaMsQcCQ .icon-shape .label{text-anchor:middle;}#mermaid-svg-zxv2BwstiaMsQcCQ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-zxv2BwstiaMsQcCQ .rough-node .label,#mermaid-svg-zxv2BwstiaMsQcCQ .node .label,#mermaid-svg-zxv2BwstiaMsQcCQ .image-shape .label,#mermaid-svg-zxv2BwstiaMsQcCQ .icon-shape .label{text-align:center;}#mermaid-svg-zxv2BwstiaMsQcCQ .node.clickable{cursor:pointer;}#mermaid-svg-zxv2BwstiaMsQcCQ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-zxv2BwstiaMsQcCQ .arrowheadPath{fill:#333333;}#mermaid-svg-zxv2BwstiaMsQcCQ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zxv2BwstiaMsQcCQ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zxv2BwstiaMsQcCQ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zxv2BwstiaMsQcCQ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-zxv2BwstiaMsQcCQ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zxv2BwstiaMsQcCQ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-zxv2BwstiaMsQcCQ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zxv2BwstiaMsQcCQ .cluster text{fill:#333;}#mermaid-svg-zxv2BwstiaMsQcCQ .cluster span{color:#333;}#mermaid-svg-zxv2BwstiaMsQcCQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zxv2BwstiaMsQcCQ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-zxv2BwstiaMsQcCQ rect.text{fill:none;stroke-width:0;}#mermaid-svg-zxv2BwstiaMsQcCQ .icon-shape,#mermaid-svg-zxv2BwstiaMsQcCQ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zxv2BwstiaMsQcCQ .icon-shape p,#mermaid-svg-zxv2BwstiaMsQcCQ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-zxv2BwstiaMsQcCQ .icon-shape .label rect,#mermaid-svg-zxv2BwstiaMsQcCQ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zxv2BwstiaMsQcCQ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-zxv2BwstiaMsQcCQ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-zxv2BwstiaMsQcCQ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 执行Node1
Checkpoint保存
Node2
Checkpoint保存
恢复点
核心能力
① 状态持久化
- Redis
- Database
- File system
② 断点续跑(Resume Execution)
text
Task执行到50%
→ 系统崩溃
→ 从Checkpoint恢复继续执行
③ 多轮恢复能力
支持:
- 长任务恢复
- Agent中断恢复
- 外部触发恢复
本质总结
Checkpoint =
"Execution State Snapshot System(执行状态快照系统)"
6.4 Memory vs State vs Checkpoint 对比
总体对比
| 维度 | LangChain Memory | LangGraph State | Checkpoint |
|---|---|---|---|
| 层级 | 应用层 | 运行时层 | 系统层 |
| 结构 | 非结构化 | 结构化 | 持久化 |
| 生命周期 | 会话级 | 任务级 | 系统级 |
| 是否可恢复 | ❌ | ⚠️ | ✅ |
| 控制能力 | 弱 | 强 | 强 |
架构关系图
#mermaid-svg-rylnwVnuXCudV67b{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-rylnwVnuXCudV67b .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-rylnwVnuXCudV67b .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-rylnwVnuXCudV67b .error-icon{fill:#552222;}#mermaid-svg-rylnwVnuXCudV67b .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rylnwVnuXCudV67b .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-rylnwVnuXCudV67b .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rylnwVnuXCudV67b .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rylnwVnuXCudV67b .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-rylnwVnuXCudV67b .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rylnwVnuXCudV67b .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rylnwVnuXCudV67b .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rylnwVnuXCudV67b .marker.cross{stroke:#333333;}#mermaid-svg-rylnwVnuXCudV67b svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rylnwVnuXCudV67b p{margin:0;}#mermaid-svg-rylnwVnuXCudV67b .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rylnwVnuXCudV67b .cluster-label text{fill:#333;}#mermaid-svg-rylnwVnuXCudV67b .cluster-label span{color:#333;}#mermaid-svg-rylnwVnuXCudV67b .cluster-label span p{background-color:transparent;}#mermaid-svg-rylnwVnuXCudV67b .label text,#mermaid-svg-rylnwVnuXCudV67b span{fill:#333;color:#333;}#mermaid-svg-rylnwVnuXCudV67b .node rect,#mermaid-svg-rylnwVnuXCudV67b .node circle,#mermaid-svg-rylnwVnuXCudV67b .node ellipse,#mermaid-svg-rylnwVnuXCudV67b .node polygon,#mermaid-svg-rylnwVnuXCudV67b .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rylnwVnuXCudV67b .rough-node .label text,#mermaid-svg-rylnwVnuXCudV67b .node .label text,#mermaid-svg-rylnwVnuXCudV67b .image-shape .label,#mermaid-svg-rylnwVnuXCudV67b .icon-shape .label{text-anchor:middle;}#mermaid-svg-rylnwVnuXCudV67b .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-rylnwVnuXCudV67b .rough-node .label,#mermaid-svg-rylnwVnuXCudV67b .node .label,#mermaid-svg-rylnwVnuXCudV67b .image-shape .label,#mermaid-svg-rylnwVnuXCudV67b .icon-shape .label{text-align:center;}#mermaid-svg-rylnwVnuXCudV67b .node.clickable{cursor:pointer;}#mermaid-svg-rylnwVnuXCudV67b .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-rylnwVnuXCudV67b .arrowheadPath{fill:#333333;}#mermaid-svg-rylnwVnuXCudV67b .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rylnwVnuXCudV67b .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rylnwVnuXCudV67b .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rylnwVnuXCudV67b .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-rylnwVnuXCudV67b .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rylnwVnuXCudV67b .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-rylnwVnuXCudV67b .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rylnwVnuXCudV67b .cluster text{fill:#333;}#mermaid-svg-rylnwVnuXCudV67b .cluster span{color:#333;}#mermaid-svg-rylnwVnuXCudV67b div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rylnwVnuXCudV67b .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-rylnwVnuXCudV67b rect.text{fill:none;stroke-width:0;}#mermaid-svg-rylnwVnuXCudV67b .icon-shape,#mermaid-svg-rylnwVnuXCudV67b .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rylnwVnuXCudV67b .icon-shape p,#mermaid-svg-rylnwVnuXCudV67b .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-rylnwVnuXCudV67b .icon-shape .label rect,#mermaid-svg-rylnwVnuXCudV67b .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rylnwVnuXCudV67b .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-rylnwVnuXCudV67b .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-rylnwVnuXCudV67b :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} User Input
LangChain Memory
LLM Prompt
LangGraph State
Node Execution
Checkpoint
Resume Execution
6.5 核心本质差异总结
LangChain
text
Memory = 上下文增强机制
特点:
- 轻量
- 非结构化
- 会话导向
LangGraph
text
State + Checkpoint = 状态化执行系统
特点:
- 结构化
- 可恢复
- 系统级
一句话总结
LangChain 通过 Memory 机制增强对话上下文,而 LangGraph 引入结构化、可持久化的状态系统,实现对 Agent 执行全生命周期的管理。
6.6 本章总结
状态管理的本质差异可以归纳为:
① 抽象层级不同
- LangChain → 会话增强
- LangGraph → 执行系统状态
② 控制能力不同
- LangChain → 被动记忆
- LangGraph → 主动状态驱动
③ 系统能力不同
- LangChain → 单轮/短任务
- LangGraph → 长任务/复杂流程
核心结论
text
Memory → 记忆系统(辅助)
State → 执行核心(主系统)
Checkpoint → 系统级恢复能力(工程级关键)
7. Agent 构建能力对比:从组件组合到系统化 Agent
在 LangChain 与 LangGraph 的对比中,"Agent 构建能力"是最直接体现两者工程能力差异的一层。
本章关注的问题是:
如何从 LLM + Tools 构建一个"可执行的智能体系统"
7.1 LangChain Agent:组件驱动型 Agent
LangChain 的 Agent 构建方式本质是:
Prompt + Tool + Loop 的组合模型
基本结构
#mermaid-svg-BsX9FiNpv3m6q5q3{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-BsX9FiNpv3m6q5q3 .error-icon{fill:#552222;}#mermaid-svg-BsX9FiNpv3m6q5q3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-BsX9FiNpv3m6q5q3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .marker.cross{stroke:#333333;}#mermaid-svg-BsX9FiNpv3m6q5q3 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-BsX9FiNpv3m6q5q3 p{margin:0;}#mermaid-svg-BsX9FiNpv3m6q5q3 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .cluster-label text{fill:#333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .cluster-label span{color:#333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .cluster-label span p{background-color:transparent;}#mermaid-svg-BsX9FiNpv3m6q5q3 .label text,#mermaid-svg-BsX9FiNpv3m6q5q3 span{fill:#333;color:#333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .node rect,#mermaid-svg-BsX9FiNpv3m6q5q3 .node circle,#mermaid-svg-BsX9FiNpv3m6q5q3 .node ellipse,#mermaid-svg-BsX9FiNpv3m6q5q3 .node polygon,#mermaid-svg-BsX9FiNpv3m6q5q3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-BsX9FiNpv3m6q5q3 .rough-node .label text,#mermaid-svg-BsX9FiNpv3m6q5q3 .node .label text,#mermaid-svg-BsX9FiNpv3m6q5q3 .image-shape .label,#mermaid-svg-BsX9FiNpv3m6q5q3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-BsX9FiNpv3m6q5q3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-BsX9FiNpv3m6q5q3 .rough-node .label,#mermaid-svg-BsX9FiNpv3m6q5q3 .node .label,#mermaid-svg-BsX9FiNpv3m6q5q3 .image-shape .label,#mermaid-svg-BsX9FiNpv3m6q5q3 .icon-shape .label{text-align:center;}#mermaid-svg-BsX9FiNpv3m6q5q3 .node.clickable{cursor:pointer;}#mermaid-svg-BsX9FiNpv3m6q5q3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .arrowheadPath{fill:#333333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-BsX9FiNpv3m6q5q3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BsX9FiNpv3m6q5q3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-BsX9FiNpv3m6q5q3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BsX9FiNpv3m6q5q3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-BsX9FiNpv3m6q5q3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-BsX9FiNpv3m6q5q3 .cluster text{fill:#333;}#mermaid-svg-BsX9FiNpv3m6q5q3 .cluster span{color:#333;}#mermaid-svg-BsX9FiNpv3m6q5q3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-BsX9FiNpv3m6q5q3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-BsX9FiNpv3m6q5q3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-BsX9FiNpv3m6q5q3 .icon-shape,#mermaid-svg-BsX9FiNpv3m6q5q3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BsX9FiNpv3m6q5q3 .icon-shape p,#mermaid-svg-BsX9FiNpv3m6q5q3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-BsX9FiNpv3m6q5q3 .icon-shape .label rect,#mermaid-svg-BsX9FiNpv3m6q5q3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BsX9FiNpv3m6q5q3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-BsX9FiNpv3m6q5q3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-BsX9FiNpv3m6q5q3 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
User Input
Agent Prompt
LLM Reasoning
是否调用工具
Tool Execution
Final Answer
核心特点
① Prompt 驱动决策
Agent 的行为主要依赖:
- ReAct Prompt
- Tool description
- Few-shot examples
② 运行时弱结构化
- 没有显式状态图
- loop 由框架隐式控制
- execution flow 不透明
③ 工具调用是核心扩展方式
Agent 能力扩展依赖:
text
Tool = 外部能力接口
本质总结
LangChain Agent 是:
Prompt-driven Reactive Agent(提示驱动反应式智能体)
局限性
- ❌ loop 不可控
- ❌ 状态不可结构化管理
- ❌ 多 Agent 协作困难
- ❌ 行为不可预测性较高
7.2 LangGraph Agent:系统化 Agent 构建模型
LangGraph 将 Agent 构建方式升级为:
Graph-based Stateful Agent System
基本结构
#mermaid-svg-i4qtXmzAGCkCOWcx{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-i4qtXmzAGCkCOWcx .error-icon{fill:#552222;}#mermaid-svg-i4qtXmzAGCkCOWcx .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-i4qtXmzAGCkCOWcx .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-i4qtXmzAGCkCOWcx .marker{fill:#333333;stroke:#333333;}#mermaid-svg-i4qtXmzAGCkCOWcx .marker.cross{stroke:#333333;}#mermaid-svg-i4qtXmzAGCkCOWcx svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-i4qtXmzAGCkCOWcx p{margin:0;}#mermaid-svg-i4qtXmzAGCkCOWcx .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-i4qtXmzAGCkCOWcx .cluster-label text{fill:#333;}#mermaid-svg-i4qtXmzAGCkCOWcx .cluster-label span{color:#333;}#mermaid-svg-i4qtXmzAGCkCOWcx .cluster-label span p{background-color:transparent;}#mermaid-svg-i4qtXmzAGCkCOWcx .label text,#mermaid-svg-i4qtXmzAGCkCOWcx span{fill:#333;color:#333;}#mermaid-svg-i4qtXmzAGCkCOWcx .node rect,#mermaid-svg-i4qtXmzAGCkCOWcx .node circle,#mermaid-svg-i4qtXmzAGCkCOWcx .node ellipse,#mermaid-svg-i4qtXmzAGCkCOWcx .node polygon,#mermaid-svg-i4qtXmzAGCkCOWcx .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-i4qtXmzAGCkCOWcx .rough-node .label text,#mermaid-svg-i4qtXmzAGCkCOWcx .node .label text,#mermaid-svg-i4qtXmzAGCkCOWcx .image-shape .label,#mermaid-svg-i4qtXmzAGCkCOWcx .icon-shape .label{text-anchor:middle;}#mermaid-svg-i4qtXmzAGCkCOWcx .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-i4qtXmzAGCkCOWcx .rough-node .label,#mermaid-svg-i4qtXmzAGCkCOWcx .node .label,#mermaid-svg-i4qtXmzAGCkCOWcx .image-shape .label,#mermaid-svg-i4qtXmzAGCkCOWcx .icon-shape .label{text-align:center;}#mermaid-svg-i4qtXmzAGCkCOWcx .node.clickable{cursor:pointer;}#mermaid-svg-i4qtXmzAGCkCOWcx .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-i4qtXmzAGCkCOWcx .arrowheadPath{fill:#333333;}#mermaid-svg-i4qtXmzAGCkCOWcx .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-i4qtXmzAGCkCOWcx .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-i4qtXmzAGCkCOWcx .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-i4qtXmzAGCkCOWcx .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-i4qtXmzAGCkCOWcx .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-i4qtXmzAGCkCOWcx .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-i4qtXmzAGCkCOWcx .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-i4qtXmzAGCkCOWcx .cluster text{fill:#333;}#mermaid-svg-i4qtXmzAGCkCOWcx .cluster span{color:#333;}#mermaid-svg-i4qtXmzAGCkCOWcx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-i4qtXmzAGCkCOWcx .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-i4qtXmzAGCkCOWcx rect.text{fill:none;stroke-width:0;}#mermaid-svg-i4qtXmzAGCkCOWcx .icon-shape,#mermaid-svg-i4qtXmzAGCkCOWcx .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-i4qtXmzAGCkCOWcx .icon-shape p,#mermaid-svg-i4qtXmzAGCkCOWcx .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-i4qtXmzAGCkCOWcx .icon-shape .label rect,#mermaid-svg-i4qtXmzAGCkCOWcx .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-i4qtXmzAGCkCOWcx .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-i4qtXmzAGCkCOWcx .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-i4qtXmzAGCkCOWcx :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 需要优化
完成
State Input
Planner Node
Executor Node
Tool Node
Evaluator Node
Final Output
核心特点
① Node 化 Agent 逻辑
Agent 被拆解为多个 Node:
- Planner
- Executor
- Critic
- Tool Caller
② State 驱动执行
每个 Node:
- 读取 State
- 修改 State
- 决定下一步
③ 显式控制流
text
Node → Edge → Node
所有流程可定义。
本质总结
LangGraph Agent 是:
Stateful Graph-based Agent System(状态图智能体系统)
优势
- ✔ 行为可控
- ✔ 流程可解释
- ✔ 支持复杂决策链
- ✔ 支持循环与回溯
7.3 ReAct Agent 对比
LangChain ReAct(典型实现)
#mermaid-svg-mcuXQTwbeQICMMcb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-mcuXQTwbeQICMMcb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-mcuXQTwbeQICMMcb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-mcuXQTwbeQICMMcb .error-icon{fill:#552222;}#mermaid-svg-mcuXQTwbeQICMMcb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-mcuXQTwbeQICMMcb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-mcuXQTwbeQICMMcb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-mcuXQTwbeQICMMcb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-mcuXQTwbeQICMMcb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-mcuXQTwbeQICMMcb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-mcuXQTwbeQICMMcb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-mcuXQTwbeQICMMcb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-mcuXQTwbeQICMMcb .marker.cross{stroke:#333333;}#mermaid-svg-mcuXQTwbeQICMMcb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-mcuXQTwbeQICMMcb p{margin:0;}#mermaid-svg-mcuXQTwbeQICMMcb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-mcuXQTwbeQICMMcb .cluster-label text{fill:#333;}#mermaid-svg-mcuXQTwbeQICMMcb .cluster-label span{color:#333;}#mermaid-svg-mcuXQTwbeQICMMcb .cluster-label span p{background-color:transparent;}#mermaid-svg-mcuXQTwbeQICMMcb .label text,#mermaid-svg-mcuXQTwbeQICMMcb span{fill:#333;color:#333;}#mermaid-svg-mcuXQTwbeQICMMcb .node rect,#mermaid-svg-mcuXQTwbeQICMMcb .node circle,#mermaid-svg-mcuXQTwbeQICMMcb .node ellipse,#mermaid-svg-mcuXQTwbeQICMMcb .node polygon,#mermaid-svg-mcuXQTwbeQICMMcb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-mcuXQTwbeQICMMcb .rough-node .label text,#mermaid-svg-mcuXQTwbeQICMMcb .node .label text,#mermaid-svg-mcuXQTwbeQICMMcb .image-shape .label,#mermaid-svg-mcuXQTwbeQICMMcb .icon-shape .label{text-anchor:middle;}#mermaid-svg-mcuXQTwbeQICMMcb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-mcuXQTwbeQICMMcb .rough-node .label,#mermaid-svg-mcuXQTwbeQICMMcb .node .label,#mermaid-svg-mcuXQTwbeQICMMcb .image-shape .label,#mermaid-svg-mcuXQTwbeQICMMcb .icon-shape .label{text-align:center;}#mermaid-svg-mcuXQTwbeQICMMcb .node.clickable{cursor:pointer;}#mermaid-svg-mcuXQTwbeQICMMcb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-mcuXQTwbeQICMMcb .arrowheadPath{fill:#333333;}#mermaid-svg-mcuXQTwbeQICMMcb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-mcuXQTwbeQICMMcb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-mcuXQTwbeQICMMcb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mcuXQTwbeQICMMcb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-mcuXQTwbeQICMMcb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mcuXQTwbeQICMMcb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-mcuXQTwbeQICMMcb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-mcuXQTwbeQICMMcb .cluster text{fill:#333;}#mermaid-svg-mcuXQTwbeQICMMcb .cluster span{color:#333;}#mermaid-svg-mcuXQTwbeQICMMcb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-mcuXQTwbeQICMMcb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-mcuXQTwbeQICMMcb rect.text{fill:none;stroke-width:0;}#mermaid-svg-mcuXQTwbeQICMMcb .icon-shape,#mermaid-svg-mcuXQTwbeQICMMcb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mcuXQTwbeQICMMcb .icon-shape p,#mermaid-svg-mcuXQTwbeQICMMcb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-mcuXQTwbeQICMMcb .icon-shape .label rect,#mermaid-svg-mcuXQTwbeQICMMcb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mcuXQTwbeQICMMcb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-mcuXQTwbeQICMMcb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-mcuXQTwbeQICMMcb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Question
Thought
Action
Observation
特点
- Prompt 控制循环
- Reason + Act 交替
- 依赖 LLM 自主推理
问题
- loop 不稳定
- 容易 hallucination
- 无结构化控制
LangGraph ReAct(结构化版本)
#mermaid-svg-aw6GEtxE6VZEYgsB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-aw6GEtxE6VZEYgsB .error-icon{fill:#552222;}#mermaid-svg-aw6GEtxE6VZEYgsB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-aw6GEtxE6VZEYgsB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-aw6GEtxE6VZEYgsB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-aw6GEtxE6VZEYgsB .marker.cross{stroke:#333333;}#mermaid-svg-aw6GEtxE6VZEYgsB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-aw6GEtxE6VZEYgsB p{margin:0;}#mermaid-svg-aw6GEtxE6VZEYgsB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-aw6GEtxE6VZEYgsB .cluster-label text{fill:#333;}#mermaid-svg-aw6GEtxE6VZEYgsB .cluster-label span{color:#333;}#mermaid-svg-aw6GEtxE6VZEYgsB .cluster-label span p{background-color:transparent;}#mermaid-svg-aw6GEtxE6VZEYgsB .label text,#mermaid-svg-aw6GEtxE6VZEYgsB span{fill:#333;color:#333;}#mermaid-svg-aw6GEtxE6VZEYgsB .node rect,#mermaid-svg-aw6GEtxE6VZEYgsB .node circle,#mermaid-svg-aw6GEtxE6VZEYgsB .node ellipse,#mermaid-svg-aw6GEtxE6VZEYgsB .node polygon,#mermaid-svg-aw6GEtxE6VZEYgsB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-aw6GEtxE6VZEYgsB .rough-node .label text,#mermaid-svg-aw6GEtxE6VZEYgsB .node .label text,#mermaid-svg-aw6GEtxE6VZEYgsB .image-shape .label,#mermaid-svg-aw6GEtxE6VZEYgsB .icon-shape .label{text-anchor:middle;}#mermaid-svg-aw6GEtxE6VZEYgsB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-aw6GEtxE6VZEYgsB .rough-node .label,#mermaid-svg-aw6GEtxE6VZEYgsB .node .label,#mermaid-svg-aw6GEtxE6VZEYgsB .image-shape .label,#mermaid-svg-aw6GEtxE6VZEYgsB .icon-shape .label{text-align:center;}#mermaid-svg-aw6GEtxE6VZEYgsB .node.clickable{cursor:pointer;}#mermaid-svg-aw6GEtxE6VZEYgsB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-aw6GEtxE6VZEYgsB .arrowheadPath{fill:#333333;}#mermaid-svg-aw6GEtxE6VZEYgsB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-aw6GEtxE6VZEYgsB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-aw6GEtxE6VZEYgsB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aw6GEtxE6VZEYgsB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-aw6GEtxE6VZEYgsB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aw6GEtxE6VZEYgsB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-aw6GEtxE6VZEYgsB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-aw6GEtxE6VZEYgsB .cluster text{fill:#333;}#mermaid-svg-aw6GEtxE6VZEYgsB .cluster span{color:#333;}#mermaid-svg-aw6GEtxE6VZEYgsB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-aw6GEtxE6VZEYgsB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-aw6GEtxE6VZEYgsB rect.text{fill:none;stroke-width:0;}#mermaid-svg-aw6GEtxE6VZEYgsB .icon-shape,#mermaid-svg-aw6GEtxE6VZEYgsB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aw6GEtxE6VZEYgsB .icon-shape p,#mermaid-svg-aw6GEtxE6VZEYgsB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-aw6GEtxE6VZEYgsB .icon-shape .label rect,#mermaid-svg-aw6GEtxE6VZEYgsB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aw6GEtxE6VZEYgsB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-aw6GEtxE6VZEYgsB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-aw6GEtxE6VZEYgsB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
State
Reason Node
Action Node
Tool Node
Observation Node
Stop?
Output
改进点
- loop 可控
- 状态可追踪
- 每一步显式化
7.4 Planning Agent 对比
LangChain Planning Agent
#mermaid-svg-ij8EcIWXDUPWVmqW{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ij8EcIWXDUPWVmqW .error-icon{fill:#552222;}#mermaid-svg-ij8EcIWXDUPWVmqW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ij8EcIWXDUPWVmqW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ij8EcIWXDUPWVmqW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ij8EcIWXDUPWVmqW .marker.cross{stroke:#333333;}#mermaid-svg-ij8EcIWXDUPWVmqW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ij8EcIWXDUPWVmqW p{margin:0;}#mermaid-svg-ij8EcIWXDUPWVmqW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ij8EcIWXDUPWVmqW .cluster-label text{fill:#333;}#mermaid-svg-ij8EcIWXDUPWVmqW .cluster-label span{color:#333;}#mermaid-svg-ij8EcIWXDUPWVmqW .cluster-label span p{background-color:transparent;}#mermaid-svg-ij8EcIWXDUPWVmqW .label text,#mermaid-svg-ij8EcIWXDUPWVmqW span{fill:#333;color:#333;}#mermaid-svg-ij8EcIWXDUPWVmqW .node rect,#mermaid-svg-ij8EcIWXDUPWVmqW .node circle,#mermaid-svg-ij8EcIWXDUPWVmqW .node ellipse,#mermaid-svg-ij8EcIWXDUPWVmqW .node polygon,#mermaid-svg-ij8EcIWXDUPWVmqW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ij8EcIWXDUPWVmqW .rough-node .label text,#mermaid-svg-ij8EcIWXDUPWVmqW .node .label text,#mermaid-svg-ij8EcIWXDUPWVmqW .image-shape .label,#mermaid-svg-ij8EcIWXDUPWVmqW .icon-shape .label{text-anchor:middle;}#mermaid-svg-ij8EcIWXDUPWVmqW .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ij8EcIWXDUPWVmqW .rough-node .label,#mermaid-svg-ij8EcIWXDUPWVmqW .node .label,#mermaid-svg-ij8EcIWXDUPWVmqW .image-shape .label,#mermaid-svg-ij8EcIWXDUPWVmqW .icon-shape .label{text-align:center;}#mermaid-svg-ij8EcIWXDUPWVmqW .node.clickable{cursor:pointer;}#mermaid-svg-ij8EcIWXDUPWVmqW .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ij8EcIWXDUPWVmqW .arrowheadPath{fill:#333333;}#mermaid-svg-ij8EcIWXDUPWVmqW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ij8EcIWXDUPWVmqW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ij8EcIWXDUPWVmqW .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ij8EcIWXDUPWVmqW .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ij8EcIWXDUPWVmqW .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ij8EcIWXDUPWVmqW .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ij8EcIWXDUPWVmqW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ij8EcIWXDUPWVmqW .cluster text{fill:#333;}#mermaid-svg-ij8EcIWXDUPWVmqW .cluster span{color:#333;}#mermaid-svg-ij8EcIWXDUPWVmqW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ij8EcIWXDUPWVmqW .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ij8EcIWXDUPWVmqW rect.text{fill:none;stroke-width:0;}#mermaid-svg-ij8EcIWXDUPWVmqW .icon-shape,#mermaid-svg-ij8EcIWXDUPWVmqW .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ij8EcIWXDUPWVmqW .icon-shape p,#mermaid-svg-ij8EcIWXDUPWVmqW .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ij8EcIWXDUPWVmqW .icon-shape .label rect,#mermaid-svg-ij8EcIWXDUPWVmqW .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ij8EcIWXDUPWVmqW .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ij8EcIWXDUPWVmqW .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ij8EcIWXDUPWVmqW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Goal
Plan生成
Step1
Step2
Step3
Result
问题
- plan 固定
- 无动态调整能力
- 遇到失败难以修正
LangGraph Planning Agent
#mermaid-svg-ubb6634F99nb7uYA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ubb6634F99nb7uYA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ubb6634F99nb7uYA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ubb6634F99nb7uYA .error-icon{fill:#552222;}#mermaid-svg-ubb6634F99nb7uYA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ubb6634F99nb7uYA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ubb6634F99nb7uYA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ubb6634F99nb7uYA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ubb6634F99nb7uYA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ubb6634F99nb7uYA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ubb6634F99nb7uYA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ubb6634F99nb7uYA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ubb6634F99nb7uYA .marker.cross{stroke:#333333;}#mermaid-svg-ubb6634F99nb7uYA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ubb6634F99nb7uYA p{margin:0;}#mermaid-svg-ubb6634F99nb7uYA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ubb6634F99nb7uYA .cluster-label text{fill:#333;}#mermaid-svg-ubb6634F99nb7uYA .cluster-label span{color:#333;}#mermaid-svg-ubb6634F99nb7uYA .cluster-label span p{background-color:transparent;}#mermaid-svg-ubb6634F99nb7uYA .label text,#mermaid-svg-ubb6634F99nb7uYA span{fill:#333;color:#333;}#mermaid-svg-ubb6634F99nb7uYA .node rect,#mermaid-svg-ubb6634F99nb7uYA .node circle,#mermaid-svg-ubb6634F99nb7uYA .node ellipse,#mermaid-svg-ubb6634F99nb7uYA .node polygon,#mermaid-svg-ubb6634F99nb7uYA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ubb6634F99nb7uYA .rough-node .label text,#mermaid-svg-ubb6634F99nb7uYA .node .label text,#mermaid-svg-ubb6634F99nb7uYA .image-shape .label,#mermaid-svg-ubb6634F99nb7uYA .icon-shape .label{text-anchor:middle;}#mermaid-svg-ubb6634F99nb7uYA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ubb6634F99nb7uYA .rough-node .label,#mermaid-svg-ubb6634F99nb7uYA .node .label,#mermaid-svg-ubb6634F99nb7uYA .image-shape .label,#mermaid-svg-ubb6634F99nb7uYA .icon-shape .label{text-align:center;}#mermaid-svg-ubb6634F99nb7uYA .node.clickable{cursor:pointer;}#mermaid-svg-ubb6634F99nb7uYA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ubb6634F99nb7uYA .arrowheadPath{fill:#333333;}#mermaid-svg-ubb6634F99nb7uYA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ubb6634F99nb7uYA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ubb6634F99nb7uYA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ubb6634F99nb7uYA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ubb6634F99nb7uYA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ubb6634F99nb7uYA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ubb6634F99nb7uYA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ubb6634F99nb7uYA .cluster text{fill:#333;}#mermaid-svg-ubb6634F99nb7uYA .cluster span{color:#333;}#mermaid-svg-ubb6634F99nb7uYA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ubb6634F99nb7uYA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ubb6634F99nb7uYA rect.text{fill:none;stroke-width:0;}#mermaid-svg-ubb6634F99nb7uYA .icon-shape,#mermaid-svg-ubb6634F99nb7uYA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ubb6634F99nb7uYA .icon-shape p,#mermaid-svg-ubb6634F99nb7uYA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ubb6634F99nb7uYA .icon-shape .label rect,#mermaid-svg-ubb6634F99nb7uYA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ubb6634F99nb7uYA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ubb6634F99nb7uYA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ubb6634F99nb7uYA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
Goal
Planner Node
State Plan生成
Executor Node
Step执行
是否成功?
Next Step
优势
- plan 可动态更新
- 支持中途修正
- 可结合 feedback loop
7.5 Reflection Agent 对比
LangChain Reflection Agent
#mermaid-svg-bhwslkfSVmwLSam4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bhwslkfSVmwLSam4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bhwslkfSVmwLSam4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bhwslkfSVmwLSam4 .error-icon{fill:#552222;}#mermaid-svg-bhwslkfSVmwLSam4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bhwslkfSVmwLSam4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bhwslkfSVmwLSam4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bhwslkfSVmwLSam4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bhwslkfSVmwLSam4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bhwslkfSVmwLSam4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bhwslkfSVmwLSam4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bhwslkfSVmwLSam4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bhwslkfSVmwLSam4 .marker.cross{stroke:#333333;}#mermaid-svg-bhwslkfSVmwLSam4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bhwslkfSVmwLSam4 p{margin:0;}#mermaid-svg-bhwslkfSVmwLSam4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bhwslkfSVmwLSam4 .cluster-label text{fill:#333;}#mermaid-svg-bhwslkfSVmwLSam4 .cluster-label span{color:#333;}#mermaid-svg-bhwslkfSVmwLSam4 .cluster-label span p{background-color:transparent;}#mermaid-svg-bhwslkfSVmwLSam4 .label text,#mermaid-svg-bhwslkfSVmwLSam4 span{fill:#333;color:#333;}#mermaid-svg-bhwslkfSVmwLSam4 .node rect,#mermaid-svg-bhwslkfSVmwLSam4 .node circle,#mermaid-svg-bhwslkfSVmwLSam4 .node ellipse,#mermaid-svg-bhwslkfSVmwLSam4 .node polygon,#mermaid-svg-bhwslkfSVmwLSam4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bhwslkfSVmwLSam4 .rough-node .label text,#mermaid-svg-bhwslkfSVmwLSam4 .node .label text,#mermaid-svg-bhwslkfSVmwLSam4 .image-shape .label,#mermaid-svg-bhwslkfSVmwLSam4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-bhwslkfSVmwLSam4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bhwslkfSVmwLSam4 .rough-node .label,#mermaid-svg-bhwslkfSVmwLSam4 .node .label,#mermaid-svg-bhwslkfSVmwLSam4 .image-shape .label,#mermaid-svg-bhwslkfSVmwLSam4 .icon-shape .label{text-align:center;}#mermaid-svg-bhwslkfSVmwLSam4 .node.clickable{cursor:pointer;}#mermaid-svg-bhwslkfSVmwLSam4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bhwslkfSVmwLSam4 .arrowheadPath{fill:#333333;}#mermaid-svg-bhwslkfSVmwLSam4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bhwslkfSVmwLSam4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bhwslkfSVmwLSam4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bhwslkfSVmwLSam4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bhwslkfSVmwLSam4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bhwslkfSVmwLSam4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bhwslkfSVmwLSam4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bhwslkfSVmwLSam4 .cluster text{fill:#333;}#mermaid-svg-bhwslkfSVmwLSam4 .cluster span{color:#333;}#mermaid-svg-bhwslkfSVmwLSam4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bhwslkfSVmwLSam4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bhwslkfSVmwLSam4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-bhwslkfSVmwLSam4 .icon-shape,#mermaid-svg-bhwslkfSVmwLSam4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bhwslkfSVmwLSam4 .icon-shape p,#mermaid-svg-bhwslkfSVmwLSam4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bhwslkfSVmwLSam4 .icon-shape .label rect,#mermaid-svg-bhwslkfSVmwLSam4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bhwslkfSVmwLSam4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bhwslkfSVmwLSam4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bhwslkfSVmwLSam4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} No
Yes
Generate
Self Evaluate
Good?
Regenerate
Final Output
问题
- reflection 依赖 prompt
- 无结构化评价体系
LangGraph Reflection Agent
#mermaid-svg-8ok59HH1KKoUDRAr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-8ok59HH1KKoUDRAr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-8ok59HH1KKoUDRAr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-8ok59HH1KKoUDRAr .error-icon{fill:#552222;}#mermaid-svg-8ok59HH1KKoUDRAr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8ok59HH1KKoUDRAr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-8ok59HH1KKoUDRAr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8ok59HH1KKoUDRAr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8ok59HH1KKoUDRAr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-8ok59HH1KKoUDRAr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8ok59HH1KKoUDRAr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8ok59HH1KKoUDRAr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8ok59HH1KKoUDRAr .marker.cross{stroke:#333333;}#mermaid-svg-8ok59HH1KKoUDRAr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8ok59HH1KKoUDRAr p{margin:0;}#mermaid-svg-8ok59HH1KKoUDRAr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8ok59HH1KKoUDRAr .cluster-label text{fill:#333;}#mermaid-svg-8ok59HH1KKoUDRAr .cluster-label span{color:#333;}#mermaid-svg-8ok59HH1KKoUDRAr .cluster-label span p{background-color:transparent;}#mermaid-svg-8ok59HH1KKoUDRAr .label text,#mermaid-svg-8ok59HH1KKoUDRAr span{fill:#333;color:#333;}#mermaid-svg-8ok59HH1KKoUDRAr .node rect,#mermaid-svg-8ok59HH1KKoUDRAr .node circle,#mermaid-svg-8ok59HH1KKoUDRAr .node ellipse,#mermaid-svg-8ok59HH1KKoUDRAr .node polygon,#mermaid-svg-8ok59HH1KKoUDRAr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8ok59HH1KKoUDRAr .rough-node .label text,#mermaid-svg-8ok59HH1KKoUDRAr .node .label text,#mermaid-svg-8ok59HH1KKoUDRAr .image-shape .label,#mermaid-svg-8ok59HH1KKoUDRAr .icon-shape .label{text-anchor:middle;}#mermaid-svg-8ok59HH1KKoUDRAr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-8ok59HH1KKoUDRAr .rough-node .label,#mermaid-svg-8ok59HH1KKoUDRAr .node .label,#mermaid-svg-8ok59HH1KKoUDRAr .image-shape .label,#mermaid-svg-8ok59HH1KKoUDRAr .icon-shape .label{text-align:center;}#mermaid-svg-8ok59HH1KKoUDRAr .node.clickable{cursor:pointer;}#mermaid-svg-8ok59HH1KKoUDRAr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-8ok59HH1KKoUDRAr .arrowheadPath{fill:#333333;}#mermaid-svg-8ok59HH1KKoUDRAr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8ok59HH1KKoUDRAr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8ok59HH1KKoUDRAr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8ok59HH1KKoUDRAr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-8ok59HH1KKoUDRAr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8ok59HH1KKoUDRAr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-8ok59HH1KKoUDRAr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8ok59HH1KKoUDRAr .cluster text{fill:#333;}#mermaid-svg-8ok59HH1KKoUDRAr .cluster span{color:#333;}#mermaid-svg-8ok59HH1KKoUDRAr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8ok59HH1KKoUDRAr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-8ok59HH1KKoUDRAr rect.text{fill:none;stroke-width:0;}#mermaid-svg-8ok59HH1KKoUDRAr .icon-shape,#mermaid-svg-8ok59HH1KKoUDRAr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8ok59HH1KKoUDRAr .icon-shape p,#mermaid-svg-8ok59HH1KKoUDRAr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-8ok59HH1KKoUDRAr .icon-shape .label rect,#mermaid-svg-8ok59HH1KKoUDRAr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8ok59HH1KKoUDRAr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-8ok59HH1KKoUDRAr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-8ok59HH1KKoUDRAr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Low
低
High
高
State Input
Generate Node
Evaluation Node
Score Check
评分检查
Finalize
完成
改进点
- evaluation 独立 node
- 可插入多 evaluator
- 支持多轮优化策略
7.6 Multi-Agent 系统对比
LangChain Multi-Agent(弱编排)
#mermaid-svg-d5xDtXBYbMqZ3WEC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-d5xDtXBYbMqZ3WEC .error-icon{fill:#552222;}#mermaid-svg-d5xDtXBYbMqZ3WEC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-d5xDtXBYbMqZ3WEC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .marker.cross{stroke:#333333;}#mermaid-svg-d5xDtXBYbMqZ3WEC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-d5xDtXBYbMqZ3WEC p{margin:0;}#mermaid-svg-d5xDtXBYbMqZ3WEC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .cluster-label text{fill:#333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .cluster-label span{color:#333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .cluster-label span p{background-color:transparent;}#mermaid-svg-d5xDtXBYbMqZ3WEC .label text,#mermaid-svg-d5xDtXBYbMqZ3WEC span{fill:#333;color:#333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .node rect,#mermaid-svg-d5xDtXBYbMqZ3WEC .node circle,#mermaid-svg-d5xDtXBYbMqZ3WEC .node ellipse,#mermaid-svg-d5xDtXBYbMqZ3WEC .node polygon,#mermaid-svg-d5xDtXBYbMqZ3WEC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-d5xDtXBYbMqZ3WEC .rough-node .label text,#mermaid-svg-d5xDtXBYbMqZ3WEC .node .label text,#mermaid-svg-d5xDtXBYbMqZ3WEC .image-shape .label,#mermaid-svg-d5xDtXBYbMqZ3WEC .icon-shape .label{text-anchor:middle;}#mermaid-svg-d5xDtXBYbMqZ3WEC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-d5xDtXBYbMqZ3WEC .rough-node .label,#mermaid-svg-d5xDtXBYbMqZ3WEC .node .label,#mermaid-svg-d5xDtXBYbMqZ3WEC .image-shape .label,#mermaid-svg-d5xDtXBYbMqZ3WEC .icon-shape .label{text-align:center;}#mermaid-svg-d5xDtXBYbMqZ3WEC .node.clickable{cursor:pointer;}#mermaid-svg-d5xDtXBYbMqZ3WEC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .arrowheadPath{fill:#333333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-d5xDtXBYbMqZ3WEC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d5xDtXBYbMqZ3WEC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-d5xDtXBYbMqZ3WEC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d5xDtXBYbMqZ3WEC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-d5xDtXBYbMqZ3WEC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-d5xDtXBYbMqZ3WEC .cluster text{fill:#333;}#mermaid-svg-d5xDtXBYbMqZ3WEC .cluster span{color:#333;}#mermaid-svg-d5xDtXBYbMqZ3WEC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-d5xDtXBYbMqZ3WEC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-d5xDtXBYbMqZ3WEC rect.text{fill:none;stroke-width:0;}#mermaid-svg-d5xDtXBYbMqZ3WEC .icon-shape,#mermaid-svg-d5xDtXBYbMqZ3WEC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d5xDtXBYbMqZ3WEC .icon-shape p,#mermaid-svg-d5xDtXBYbMqZ3WEC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-d5xDtXBYbMqZ3WEC .icon-shape .label rect,#mermaid-svg-d5xDtXBYbMqZ3WEC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d5xDtXBYbMqZ3WEC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-d5xDtXBYbMqZ3WEC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-d5xDtXBYbMqZ3WEC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Agent A
Coordinator Prompt
Agent B
LLM Aggregation
Result
局限
- 无统一状态
- 协作逻辑依赖 prompt
- 难扩展
LangGraph Multi-Agent(原生支持)
#mermaid-svg-PeWcCwOXFWL1COX3{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-PeWcCwOXFWL1COX3 .error-icon{fill:#552222;}#mermaid-svg-PeWcCwOXFWL1COX3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-PeWcCwOXFWL1COX3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-PeWcCwOXFWL1COX3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-PeWcCwOXFWL1COX3 .marker.cross{stroke:#333333;}#mermaid-svg-PeWcCwOXFWL1COX3 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-PeWcCwOXFWL1COX3 p{margin:0;}#mermaid-svg-PeWcCwOXFWL1COX3 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-PeWcCwOXFWL1COX3 .cluster-label text{fill:#333;}#mermaid-svg-PeWcCwOXFWL1COX3 .cluster-label span{color:#333;}#mermaid-svg-PeWcCwOXFWL1COX3 .cluster-label span p{background-color:transparent;}#mermaid-svg-PeWcCwOXFWL1COX3 .label text,#mermaid-svg-PeWcCwOXFWL1COX3 span{fill:#333;color:#333;}#mermaid-svg-PeWcCwOXFWL1COX3 .node rect,#mermaid-svg-PeWcCwOXFWL1COX3 .node circle,#mermaid-svg-PeWcCwOXFWL1COX3 .node ellipse,#mermaid-svg-PeWcCwOXFWL1COX3 .node polygon,#mermaid-svg-PeWcCwOXFWL1COX3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-PeWcCwOXFWL1COX3 .rough-node .label text,#mermaid-svg-PeWcCwOXFWL1COX3 .node .label text,#mermaid-svg-PeWcCwOXFWL1COX3 .image-shape .label,#mermaid-svg-PeWcCwOXFWL1COX3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-PeWcCwOXFWL1COX3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-PeWcCwOXFWL1COX3 .rough-node .label,#mermaid-svg-PeWcCwOXFWL1COX3 .node .label,#mermaid-svg-PeWcCwOXFWL1COX3 .image-shape .label,#mermaid-svg-PeWcCwOXFWL1COX3 .icon-shape .label{text-align:center;}#mermaid-svg-PeWcCwOXFWL1COX3 .node.clickable{cursor:pointer;}#mermaid-svg-PeWcCwOXFWL1COX3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-PeWcCwOXFWL1COX3 .arrowheadPath{fill:#333333;}#mermaid-svg-PeWcCwOXFWL1COX3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-PeWcCwOXFWL1COX3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-PeWcCwOXFWL1COX3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-PeWcCwOXFWL1COX3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-PeWcCwOXFWL1COX3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-PeWcCwOXFWL1COX3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-PeWcCwOXFWL1COX3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-PeWcCwOXFWL1COX3 .cluster text{fill:#333;}#mermaid-svg-PeWcCwOXFWL1COX3 .cluster span{color:#333;}#mermaid-svg-PeWcCwOXFWL1COX3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-PeWcCwOXFWL1COX3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-PeWcCwOXFWL1COX3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-PeWcCwOXFWL1COX3 .icon-shape,#mermaid-svg-PeWcCwOXFWL1COX3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-PeWcCwOXFWL1COX3 .icon-shape p,#mermaid-svg-PeWcCwOXFWL1COX3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-PeWcCwOXFWL1COX3 .icon-shape .label rect,#mermaid-svg-PeWcCwOXFWL1COX3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-PeWcCwOXFWL1COX3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-PeWcCwOXFWL1COX3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-PeWcCwOXFWL1COX3 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Supervisor Node
Agent A
Agent B
Agent C
Reducer Node
优势
- 统一 state
- 可控调度
- 支持任务分发与回收
- 支持 hierarchical agent system
7.7 Agent 生命周期对比
LangChain Agent 生命周期
#mermaid-svg-zkqdegMi0zMaxtdF{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-zkqdegMi0zMaxtdF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-zkqdegMi0zMaxtdF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-zkqdegMi0zMaxtdF .error-icon{fill:#552222;}#mermaid-svg-zkqdegMi0zMaxtdF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zkqdegMi0zMaxtdF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-zkqdegMi0zMaxtdF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zkqdegMi0zMaxtdF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zkqdegMi0zMaxtdF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-zkqdegMi0zMaxtdF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zkqdegMi0zMaxtdF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zkqdegMi0zMaxtdF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zkqdegMi0zMaxtdF .marker.cross{stroke:#333333;}#mermaid-svg-zkqdegMi0zMaxtdF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zkqdegMi0zMaxtdF p{margin:0;}#mermaid-svg-zkqdegMi0zMaxtdF .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-zkqdegMi0zMaxtdF .cluster-label text{fill:#333;}#mermaid-svg-zkqdegMi0zMaxtdF .cluster-label span{color:#333;}#mermaid-svg-zkqdegMi0zMaxtdF .cluster-label span p{background-color:transparent;}#mermaid-svg-zkqdegMi0zMaxtdF .label text,#mermaid-svg-zkqdegMi0zMaxtdF span{fill:#333;color:#333;}#mermaid-svg-zkqdegMi0zMaxtdF .node rect,#mermaid-svg-zkqdegMi0zMaxtdF .node circle,#mermaid-svg-zkqdegMi0zMaxtdF .node ellipse,#mermaid-svg-zkqdegMi0zMaxtdF .node polygon,#mermaid-svg-zkqdegMi0zMaxtdF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zkqdegMi0zMaxtdF .rough-node .label text,#mermaid-svg-zkqdegMi0zMaxtdF .node .label text,#mermaid-svg-zkqdegMi0zMaxtdF .image-shape .label,#mermaid-svg-zkqdegMi0zMaxtdF .icon-shape .label{text-anchor:middle;}#mermaid-svg-zkqdegMi0zMaxtdF .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-zkqdegMi0zMaxtdF .rough-node .label,#mermaid-svg-zkqdegMi0zMaxtdF .node .label,#mermaid-svg-zkqdegMi0zMaxtdF .image-shape .label,#mermaid-svg-zkqdegMi0zMaxtdF .icon-shape .label{text-align:center;}#mermaid-svg-zkqdegMi0zMaxtdF .node.clickable{cursor:pointer;}#mermaid-svg-zkqdegMi0zMaxtdF .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-zkqdegMi0zMaxtdF .arrowheadPath{fill:#333333;}#mermaid-svg-zkqdegMi0zMaxtdF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zkqdegMi0zMaxtdF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zkqdegMi0zMaxtdF .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zkqdegMi0zMaxtdF .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-zkqdegMi0zMaxtdF .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zkqdegMi0zMaxtdF .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-zkqdegMi0zMaxtdF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zkqdegMi0zMaxtdF .cluster text{fill:#333;}#mermaid-svg-zkqdegMi0zMaxtdF .cluster span{color:#333;}#mermaid-svg-zkqdegMi0zMaxtdF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zkqdegMi0zMaxtdF .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-zkqdegMi0zMaxtdF rect.text{fill:none;stroke-width:0;}#mermaid-svg-zkqdegMi0zMaxtdF .icon-shape,#mermaid-svg-zkqdegMi0zMaxtdF .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zkqdegMi0zMaxtdF .icon-shape p,#mermaid-svg-zkqdegMi0zMaxtdF .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-zkqdegMi0zMaxtdF .icon-shape .label rect,#mermaid-svg-zkqdegMi0zMaxtdF .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zkqdegMi0zMaxtdF .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-zkqdegMi0zMaxtdF .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-zkqdegMi0zMaxtdF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Input
Single Loop Execution
Output
特点:
- 短生命周期
- 一次性执行
- session-based
LangGraph Agent 生命周期
#mermaid-svg-A1bRRrUoiuiqSbTP{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-A1bRRrUoiuiqSbTP .error-icon{fill:#552222;}#mermaid-svg-A1bRRrUoiuiqSbTP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-A1bRRrUoiuiqSbTP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-A1bRRrUoiuiqSbTP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-A1bRRrUoiuiqSbTP .marker.cross{stroke:#333333;}#mermaid-svg-A1bRRrUoiuiqSbTP svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-A1bRRrUoiuiqSbTP p{margin:0;}#mermaid-svg-A1bRRrUoiuiqSbTP .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-A1bRRrUoiuiqSbTP .cluster-label text{fill:#333;}#mermaid-svg-A1bRRrUoiuiqSbTP .cluster-label span{color:#333;}#mermaid-svg-A1bRRrUoiuiqSbTP .cluster-label span p{background-color:transparent;}#mermaid-svg-A1bRRrUoiuiqSbTP .label text,#mermaid-svg-A1bRRrUoiuiqSbTP span{fill:#333;color:#333;}#mermaid-svg-A1bRRrUoiuiqSbTP .node rect,#mermaid-svg-A1bRRrUoiuiqSbTP .node circle,#mermaid-svg-A1bRRrUoiuiqSbTP .node ellipse,#mermaid-svg-A1bRRrUoiuiqSbTP .node polygon,#mermaid-svg-A1bRRrUoiuiqSbTP .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-A1bRRrUoiuiqSbTP .rough-node .label text,#mermaid-svg-A1bRRrUoiuiqSbTP .node .label text,#mermaid-svg-A1bRRrUoiuiqSbTP .image-shape .label,#mermaid-svg-A1bRRrUoiuiqSbTP .icon-shape .label{text-anchor:middle;}#mermaid-svg-A1bRRrUoiuiqSbTP .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-A1bRRrUoiuiqSbTP .rough-node .label,#mermaid-svg-A1bRRrUoiuiqSbTP .node .label,#mermaid-svg-A1bRRrUoiuiqSbTP .image-shape .label,#mermaid-svg-A1bRRrUoiuiqSbTP .icon-shape .label{text-align:center;}#mermaid-svg-A1bRRrUoiuiqSbTP .node.clickable{cursor:pointer;}#mermaid-svg-A1bRRrUoiuiqSbTP .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-A1bRRrUoiuiqSbTP .arrowheadPath{fill:#333333;}#mermaid-svg-A1bRRrUoiuiqSbTP .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-A1bRRrUoiuiqSbTP .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-A1bRRrUoiuiqSbTP .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-A1bRRrUoiuiqSbTP .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-A1bRRrUoiuiqSbTP .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-A1bRRrUoiuiqSbTP .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-A1bRRrUoiuiqSbTP .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-A1bRRrUoiuiqSbTP .cluster text{fill:#333;}#mermaid-svg-A1bRRrUoiuiqSbTP .cluster span{color:#333;}#mermaid-svg-A1bRRrUoiuiqSbTP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-A1bRRrUoiuiqSbTP .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-A1bRRrUoiuiqSbTP rect.text{fill:none;stroke-width:0;}#mermaid-svg-A1bRRrUoiuiqSbTP .icon-shape,#mermaid-svg-A1bRRrUoiuiqSbTP .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-A1bRRrUoiuiqSbTP .icon-shape p,#mermaid-svg-A1bRRrUoiuiqSbTP .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-A1bRRrUoiuiqSbTP .icon-shape .label rect,#mermaid-svg-A1bRRrUoiuiqSbTP .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-A1bRRrUoiuiqSbTP .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-A1bRRrUoiuiqSbTP .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-A1bRRrUoiuiqSbTP :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Start
State Init
Multi-step Execution
Checkpoint
Resume
Finish
特点:
- 长生命周期
- 可中断恢复
- workflow-based
7.8 本章总结
① Agent 构建方式差异
| 维度 | LangChain | LangGraph |
|---|---|---|
| 构建方式 | Prompt组合 | Graph建模 |
| 控制方式 | 隐式 | 显式 |
| 状态 | 弱 | 强 |
| 扩展性 | 中 | 强 |
② 核心范式差异
text
LangChain = Prompt-driven Agent
LangGraph = State-driven System Agent
③ 架构本质总结
LangChain 侧重通过"以提示词为中心"的组合方式来构建智能代理,而 LangGraph 则将代理构建为显式的状态机,并通过基于图的执行逻辑进行编排
下篇预告: 本文上篇从框架定位、架构设计、执行模型、状态管理到 Agent 构建,完整梳理了 LangChain 与 LangGraph 在设计层面 的核心差异。下篇将从工程落地视角出发,继续分析工作流编排、容错恢复、可观测性、性能扩展等企业级能力,并给出典型场景的技术选型建议。详见《LangChain vs LangGraph 深度对比(下):从工作流编排到企业级落地的工程篇》。