Skip to content
Agent 经典范式

Agent 经典范式

Agent 的"思考-行动"模式有三种经典范式:ReAct、Plan-and-Solve、Reflection。它们并不互斥,实际项目中经常组合使用。

参考:hello-agents 第 4 章 — 三大经典范式的"原理 + 代码 + 实战"

ReAct(推理 + 行动)

🕵️ 类比:侦探查案 — 边做边调整,一步一个脚印

核心思想

ReAct(Reasoning + Acting)由 Shunyu Yao 于 2022 年提出,将推理行动显式结合,形成 Thought → Action → Observation 的协同循环。

┌──────────┐     ┌──────────┐     ┌─────────────┐
│ Thought  │ ──→ │  Action  │ ──→ │ Observation │
│  思考     │     │   行动    │     │    观察      │
└──────────┘     └──────────┘     └──────┬──────┘
      ↑                                  │
      └──────────── 循环 ◄───────────────┘
                  (直到 Finish)

形式化

(th_t, a_t) = π(q, (a_1, o_1), ..., (a_{t-1}, o_{t-1}))
o_t = T(a_t)
  • th_t:第 t 步的思考
  • a_t:第 t 步的行动
  • o_t:行动后的观察
  • π:LLM 决策策略
  • T:工具执行函数

核心组件

  • ToolExecutor:管理工具注册/获取/描述格式化。三要素:Name(唯一标识)、Description(自然语言描述)、Execution Logic(实际执行函数)
  • ReActAgent:循环执行 → 格式化提示词 → 调用 LLM → 解析 Thought/Action → 执行工具 → 追加 Observation → 继续
  • 安全机制max_steps 防止无限循环

优缺点

  • ✅ 动态规划与纠错、工具协同能力强、高可解释性
  • ❌ 对 LLM 能力强依赖、多次调用效率低、提示词格式脆弱

Plan-and-Solve(先规划后执行)

🏗️ 类比:建筑师建房 — 先画蓝图再施工,逻辑清晰

核心思想

由 Lei Wang 于 2023 年提出。将任务明确分为两个阶段:先规划(Plan),后执行(Solve),解决思维链在复杂任务中易"偏离轨道"的问题。

问题 → [Planner] → 计划 [Step1, Step2, Step3]
                         ↓
                    [Executor]
                    Step1 → Result1
                    Step2 → Result2  (含前面所有结果)
                    Step3 → Result3
                         ↓
                      最终答案

形式化

P = π_plan(q)                              # 规划:生成步骤列表
s_i = π_solve(q, P, (s_1, ..., s_{i-1}))   # 执行:逐步执行

核心组件

  • Planner:强制输出结构化计划(如 Python 列表 format)
  • Executor:每步将原始问题 + 完整计划 + 历史结果作为上下文
  • PlanAndSolveAgent:组合 Planner 和 Executor 的协调者

优缺点

  • ✅ 结构清晰、目标一致性强、避免中间步骤迷失
  • ❌ 计划静态(缺乏动态调整)、强依赖初始规划质量

Reflection(自我反思)

✍️ 类比:作家改稿 — 写初稿 → 审阅 → 优化 → 反复迭代

核心思想

引入事后自我校正循环,通过"执行 → 反思 → 优化"的迭代闭环,赋予 Agent 自我进化能力。

初始执行 (O₁)
    ↓
反思: 分析问题/瓶颈 (F₁)
    ↓
判断: F₁ 包含"无需改进"? → Yes → 返回结果
    ↓ No
优化: 根据反馈重写 (O₂)
    ↓
反思: (F₂) ...
    ↓
(迭代直到收敛或达到最大次数)

形式化

F_i = π_reflect(Task, O_i)       # 反思:评审上一轮结果
O_{i+1} = π_refine(Task, O_i, F_i)  # 优化:根据反馈重写

角色分离设计

通过三个不同的提示词模板,让 LLM 分别扮演:

角色 职责
执行者 (Executor) 生成初始方案
评审员 (Reviewer) “极其严格的代码评审专家”,找瓶颈
优化者 (Refiner) “资深程序员”,根据反馈重写

优缺点

  • ✅ 显著提升解决方案质量、增强鲁棒性、形成短期记忆
  • ❌ Token 消耗倍增(每轮至少 2 次 LLM 调用)、延迟显著增加

范式选择与组合

三种范式并非互斥,实际项目中可组合使用:

Plan-and-Solve(全局规划)
      ↓
ReAct(执行需要工具调用的步骤)
      ↓
Reflection(对最终结果进行质量审查)
场景需求 推荐范式
需要外部信息/实时查询 ReAct
结构化多步骤复杂任务 Plan-and-Solve
对结果精度/质量要求极高 Reflection
综合场景 Plan → ReAct → Reflect