LangChain vs LangGraph 深度对比(上):从框架定位到 Agent 构建的设计篇

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?)
      • [Chain 模型的工作方式](#Chain 模型的工作方式)
      • [当 Agent 开始自主决策](#当 Agent 开始自主决策)
      • [企业级 Agent 的新需求](#企业级 Agent 的新需求)
      • [LangGraph 的出现](#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 的设计目标)
      • [LangGraph 要解决什么?](#LangGraph 要解决什么?)
      • [LangGraph 的核心抽象](#LangGraph 的核心抽象)
      • State
      • Node
      • Edge
      • [LangGraph 的本质](#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(控制层))
      • [------ Agent 的决策系统](#—— Agent 的决策系统)
      • 核心机制
      • 关键能力
      • [① Tool Selection](#① Tool Selection)
      • [② Reasoning Pattern](#② Reasoning Pattern)
      • [③ Routing(路由)](#③ Routing(路由))
      • 本质
      • [LangChain vs LangGraph 对比](#LangChain vs LangGraph 对比)
    • [3.4 Runtime Layer(运行时层)](#3.4 Runtime Layer(运行时层))
      • [------ Agent 的执行系统](#—— Agent 的执行系统)
      • 核心能力
      • 关键能力
      • [① State Management](#① State Management)
      • [② Checkpoint](#② Checkpoint)
      • [③ Persistence](#③ Persistence)
      • [④ Long-running Execution](#④ Long-running Execution)
      • 本质
      • [LangChain vs LangGraph](#LangChain vs LangGraph)
    • [3.5 Orchestration Layer(编排层)](#3.5 Orchestration Layer(编排层))
      • [------ Agent 的流程系统(LangGraph 核心)](#—— Agent 的流程系统(LangGraph 核心))
      • [Graph 执行模型](#Graph 执行模型)
      • 核心能力
      • [① Graph Structure](#① Graph Structure)
      • [② Flow Control](#② Flow Control)
      • [③ Parallel Execution](#③ Parallel Execution)
      • [④ Human-in-the-loop](#④ Human-in-the-loop)
      • 本质
      • [LangGraph 核心优势](#LangGraph 核心优势)
    • [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(结构能力差异))
    • [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))
      • 基本执行流程
      • 核心特点
      • [① 严格顺序执行](#① 严格顺序执行)
      • [② 执行路径固定](#② 执行路径固定)
      • [③ 无显式控制流](#③ 无显式控制流)
      • 典型执行模式
      • [① Chain 模式](#① Chain 模式)
      • [② RAG 模式](#② RAG 模式)
      • [③ Tool Calling(受限循环)](#③ Tool Calling(受限循环))
      • 本质总结
      • 优点
      • 缺点
    • [5.2 LangGraph 执行模型:状态驱动(Stateful Execution)](#5.2 LangGraph 执行模型:状态驱动(Stateful Execution))
      • 基本执行结构
      • 核心特点
      • [① 状态驱动执行(State-driven)](#① 状态驱动执行(State-driven))
      • [② 动态路径选择(Dynamic Routing)](#② 动态路径选择(Dynamic Routing))
      • [③ 支持循环(Native Loop)](#③ 支持循环(Native Loop))
      • [④ 全局状态共享(Global State)](#④ 全局状态共享(Global State))
      • 本质总结
      • 优点
      • 缺点
    • [5.3 顺序执行 vs 动态执行(核心差异)](#5.3 顺序执行 vs 动态执行(核心差异))
    • [5.4 ReAct / Planning / Reflection 执行机制对比](#5.4 ReAct / Planning / Reflection 执行机制对比)
      • [① ReAct(LangChain 典型)](#① ReAct(LangChain 典型))
      • 特点
      • 局限
      • [② Planning Agent(规划型)](#② Planning Agent(规划型))
      • 特点
      • 局限
      • [③ Reflection Agent(反思型)](#③ Reflection Agent(反思型))
      • 特点
      • [LangGraph 的优势](#LangGraph 的优势)
    • [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:局部记忆模型)
      • 基本结构
      • [常见 Memory 类型](#常见 Memory 类型)
      • 核心特点
      • [① 局部性(Local Scope)](#① 局部性(Local Scope))
      • [② 非结构化(Unstructured)](#② 非结构化(Unstructured))
      • [③ 被动更新](#③ 被动更新)
      • 本质总结
      • 局限性
    • [6.2 LangGraph State:全局状态模型](#6.2 LangGraph State:全局状态模型)
      • 基本结构
      • [State 示例](#State 示例)
      • 核心特点
      • [① 全局共享(Global State)](#① 全局共享(Global State))
      • [② 结构化(Structured State)](#② 结构化(Structured State))
      • [③ 显式流动(Explicit Flow)](#③ 显式流动(Explicit Flow))
      • 本质总结
    • [6.3 Checkpoint 机制:任务恢复核心能力](#6.3 Checkpoint 机制:任务恢复核心能力)
      • 基本结构
      • 核心能力
      • [① 状态持久化](#① 状态持久化)
      • [② 断点续跑(Resume Execution)](#② 断点续跑(Resume Execution))
      • [③ 多轮恢复能力](#③ 多轮恢复能力)
      • 本质总结
    • [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)
      • 基本结构
      • 核心特点
      • [① Prompt 驱动决策](#① Prompt 驱动决策)
      • [② 运行时弱结构化](#② 运行时弱结构化)
      • [③ 工具调用是核心扩展方式](#③ 工具调用是核心扩展方式)
      • 本质总结
      • 局限性
    • [7.2 LangGraph Agent:系统化 Agent 构建模型](#7.2 LangGraph Agent:系统化 Agent 构建模型)
    • [7.3 ReAct Agent 对比](#7.3 ReAct Agent 对比)
      • [LangChain ReAct(典型实现)](#LangChain ReAct(典型实现))
      • 特点
      • 问题
      • [LangGraph ReAct(结构化版本)](#LangGraph ReAct(结构化版本))
      • 改进点
    • [7.4 Planning Agent 对比](#7.4 Planning Agent 对比)
      • [LangChain Planning Agent](#LangChain Planning Agent)
      • 问题
      • [LangGraph Planning Agent](#LangGraph Planning Agent)
      • 优势
    • [7.5 Reflection Agent 对比](#7.5 Reflection Agent 对比)
      • [LangChain Reflection Agent](#LangChain Reflection Agent)
      • 问题
      • [LangGraph Reflection Agent](#LangGraph Reflection Agent)
      • 改进点
    • [7.6 Multi-Agent 系统对比](#7.6 Multi-Agent 系统对比)
      • [LangChain Multi-Agent(弱编排)](#LangChain Multi-Agent(弱编排))
      • 局限
      • [LangGraph Multi-Agent(原生支持)](#LangGraph 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 协同?
  • 如何保证任务可恢复与可观测?

在这样的背景下,LangChainLangGraph 逐渐成为当前 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 深度对比(下):从工作流编排到企业级落地的工程篇》。