4.3 ReAct 的变体与演进:Reflexion、Self-Ask、ReWOO、LATS


4.3 ReAct 的变体与演进:Reflexion、Self-Ask、ReWOO、LATS

ReAct 是 Agent 范式的「原始版」。自它 2022 年提出后,一系列工作针对它的不同短板做了改进:Reflexion 让它学会「吃一堑长一智」、Self-Ask 让它「自己问自己」、ReWOO 让它「先打包再批量跑」、LATS 让它「在树里搜着干」。这些变体构成了 Agent 范式的家族树。

4.3.1 ReAct 的原始短板

回顾 ReAct,它有四个明显短板,每个短板催生了一类变体:

短板 表现 催生的变体
不学习 失败一次下次还会犯 Reflexion
不分解 复杂问题不会拆成子问题 Self-Ask
慢且贵 每步等观察、串行执行 ReWOO
不探索 一条路走到底,走错全废 LATS

下面逐个展开。

4.3.2 Reflexion:让 Agent 从失败中学习

问题:ReAct 在一个任务里能纠错(靠 Observation 反馈),但换一个任务,它又从零开始——上次的失败经验不会带过去。

Reflexion 的解法(Shinn et al. 2023):在 ReAct 基础上加一层反思记忆(Reflective Memory)——任务失败后,让 LLM 写一段「反思笔记」,存进上下文,下次类似任务时调出来用。

Reflexion 的三步循环

步骤 内容
Actor 用 ReAct 执行任务(含 Thought-Action-Observation)
Self-Reflection 任务失败后,LLM 自我分析「为什么失败、下次该怎么改」
Reflective Memory 反思笔记存进记忆,下次任务开始时检索出来

Reflexion 轨迹示例

任务: 把红色杯子端到厨房 [Episode 1 - 失败] Thought 1: 抓杯子 Action 1: grasp("red cup") Observation 1: Grasp failed: cup slipped ... (多次失败,任务未完成) [Self-Reflection] 我刚才抓杯子失败,因为抓得太靠杯口,杯子滑落。 杯子重心在中下部,应该抓中下部更稳。 记忆笔记: "抓杯子要避开杯口,抓中下部。" [Episode 2 - 应用反思] (任务开始时,检索出反思笔记) Thought 1: 根据之前的经验,抓杯子要抓中下部。 Action 1: grasp_middle("red cup") Observation 1: Grasp succeeded ... 任务完成 ✓

💡 Reflexion 的深刻意义:它把「经验学习」引入 LLM Agent。LLM 不再每次从零开始,而是通过语言反思从自己的失败中学习——类似人类的「复盘」。这种「把失败经验显式化为可调用资源」的思路,是 Agent 从「单次任务」走向「持续进化」的关键。具身场景下的 Reflexion 详见《具身智能技术原理》第 4.3 节。

Reflexion vs ReAct

维度 ReAct Reflexion
反思 单次 Thought 跨任务的反思记忆
学习 不学习 从失败中学习
适用 单次任务 多次尝试的复杂任务
上下文 当前任务 当前任务 + 反思记忆

4.3.3 Self-Ask:自问自答的分解式 ReAct

问题:ReAct 面对复杂问题时,会一步直接调工具,但工具返回的信息可能还不够,需要进一步追问。ReAct 不强制 LLM「先把问题拆成子问题」。

Self-Ask 的解法:让 LLM 自己向自己提问,把大问题分解成一串子问题,逐个用工具回答,最后合并。

Self-Ask 的工作流

问题: 雕娥鱼的天敌是什么,这种天敌又吃什么? [Self-Ask 分解] Follow-up 1: 雕娥鱼的天敌是什么? → 工具查 → "鲈鱼" Follow-up 2: 鲈鱼吃什么? → 工具查 → "小鱼、虾、昆虫" 合并: 雕娥鱼的天敌是鲈鱼,鲈鱼吃小鱼、虾、昆虫。

Self-Ask vs ReAct

维度 ReAct Self-Ask
分解 隐式(靠 Thought) 显式(Follow-up 链)
调工具 直接调 先分解再调
适用 通用 多跳问答(multi-hop QA)

💡 Self-Ask 的优势在多跳问答:像「A 的天敌吃啥」这种需要先查 A 再查 A 的天敌的问题,Self-Ask 的显式分解比 ReAct 的隐式 Thought 更稳。但对一般任务,Self-Ask 的强制分解反而累赘。

4.3.4 ReWOO:分离规划与执行的高效 ReAct

问题:ReAct 每步都要等 Observation 才能想下一步——强制串行。如果工具调用之间没有依赖,本来可以并行,但 ReAct 做不到。

ReWOO 的解法(Xu et al. 2023):把规划与执行分离——Plan 阶段一次性把所有工具调用打包出来,Execute 阶段批量并行跑,Solve 阶段合并结果

ReWOO 三阶段

ReWOO 用「占位符」表达依赖,规划阶段不需等待真实结果:

[Plan] Step 1: search("苹果 2024 营收") → #E1 Step 2: search("苹果 2023 营收") → #E2 Step 3: calculate("(#E1 - #E2) / #E2") → #E3 (引用 #E1, #E2) [Execute] Step 1, Step 2 并行跑(无依赖) Step 3 等 Step 1, 2 完成(有依赖) [Solve] 根据 #E1, #E2, #E3 合并出最终答案

ReWOO vs ReAct

维度 ReAct ReWOO
LLM 调用数 N(每步 1 次) 2-3(Plan + Solve)
延迟 高(串行) 低(并行)
鲁棒性 高(边走边调) 低(计划错了全废)
适用 不确定环境 工具结果可预测

⚠️ ReWOO 的硬前提:规划阶段必须能预见所有工具调用。一旦某步工具返回意外(如搜索没结果),后续依赖它的 Step 全部失效,需要重规划。ReWOO 适合「信息检索类」任务(结果可预测),不适合「探索类」任务。

4.3.5 LATS:树搜索式 Agent

问题:ReAct 是一条线——一步走错全链废。复杂任务需要「试几条路、走不通回头」。

LATS 的解法(Zhou et al. 2023):把 ReAct(边想边做)与 ToT(树搜索)+ MCTS(蒙特卡洛树搜索)融合——让 Agent 在「想+做」的复合空间里搜索

LATS 的核心要素

要素 内容
节点 一个 Agent 状态(含完整轨迹)
一次「想+做」(Thought + Action)
评估 LLM 给状态打分(价值函数)
搜索 MCTS(选择-扩展-评估-回溯)

LATS vs ReAct

维度 ReAct LATS
推理结构 线性 树形
回溯
LLM 调用 极多(5-20 倍)
效果上限
适用 一般任务 极难任务

⚠️ LATS 是研究范式:它的效果上限很高(在难任务上显著优于 ReAct),但工程与运行成本极高。生产几乎不用 LATS,而是用「ReAct + 局部回溯 + 任务分解」来近似它的好处。

4.3.6 四种变体的横向对比

变体 改进点 LLM 调用 鲁棒性 适用
ReAct 基础范式 通用
Reflexion + 反思记忆 中(多次尝试) 高(学习) 多次尝试任务
Self-Ask + 显式分解 多跳问答
ReWOO + 分离规划执行 低(计划脆) 工具结果可预测
LATS + 树搜索 极多 极高 极难任务

4.3.7 变体选择的工程指南

场景 推荐变体 理由
通用 Agent ReAct 兜底选择,最通用
多次尝试、需积累经验 Reflexion 跨任务学习
多跳问答 Self-Ask 显式分解更稳
信息检索、可并行 ReWOO 延迟低、成本低
极难任务、不计成本 LATS 效果上限最高
生产主流 ReAct + 局部 Reflexion 平衡效果与成本

💡 变体不是互斥的:生产级 Agent 常组合多种思想。例如「ReAct 主体 + 失败时触发 Reflexion 反思 + 关键节点局部 ToT 搜索」。这种混合范式是工程上的最优解,比单一变体更鲁棒。

4.3.8 从 ReAct 到更远的范式演进

ReAct 系列的演进方向,可以归纳为三条线:

演进线 思想 代表
记忆增强 让 Agent 跨任务积累经验 Reflexion、Generative Agents
效率优化 减少串行等待 ReWOO、Plan-and-Execute
搜索增强 多路探索、回溯 LATS、ToT

这三条线继续往前,就走向第 7 章的多智能体协作——与其让一个 Agent 越来越强,不如让多个 Agent 分工合作。多智能体可以看作 ReAct 范式的「横向扩展」:每个 Agent 内部是 ReAct,Agent 之间通过消息协作。

本节小结

  • ReAct 有四个原始短板:不学习、不分解、慢且贵、不探索,每个短板催生一类变体。
  • Reflexion 加反思记忆:任务失败后让 LLM 写反思笔记,跨任务积累经验。深刻意义是把「经验学习」引入 Agent。
  • Self-Ask 加显式分解:让 LLM 自问自答,把大问题拆成子问题链,适合多跳问答。
  • ReWOO 加分离规划执行:一次性打包所有工具调用,批量并行执行,LLM 调用最少、延迟最低,但要求工具结果可预测。
  • LATS 加树搜索:ReAct + ToT + MCTS,在「想+做」空间搜索,效果上限最高但成本极大,是研究范式而非生产范式。
  • 变体不互斥,生产主流是混合范式:ReAct 主体 + 失败时 Reflexion + 关键节点局部 ToT。
  • 三条演进线:记忆增强、效率优化、搜索增强。继续往前就是第 7 章的多智能体协作——「横向扩展」。

下一节《4.4 ReAct 的适用边界与局限》将坦诚讨论 ReAct 的三大局限(延迟、上下文膨胀、错误累积),回答「什么时候别用 ReAct」。


作者与出处
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 会发光的石头的小龙虾 转发
评论区 (0)
U