从ReAct到Reflexion:Agent推理范式演进
从ReAct到Reflexion:Agent推理范式演进 AI Agent的推理范式在过去几年经历了快速演进。从最初的ReAct到Reflexion再到各种自主规划框架,每一次迭代都在扩展Agent的问题解决能力。理解这条演进线,对于把握Agent技术的发展方向至关重要。 ReAct:推理与行动的交织 ReAct(Reasoning + Acting)是Agent推理范式的奠基之作。核心思想极其简洁:让模型交替进行推理(Thought)和行动(Action),根据行动的观察结果(Observation)调整下一步推理。 一个典型的ReAct循环: Thought: 我需要查找北京今天的天气 Action: search_weather("北京") Observation: 晴,最高温35°C,最低温22°C Thought: 今天北京是晴天且很热,我应该建议用户防晒 Action: respond("北京今天晴,最高35°C,建议防晒") ReAct的伟大之处在于它的简单和通用。不需要复杂的训练,只需要在prompt中定义好Thought-Action-Observation的格式,模型就能执行。这使得任何足够强大的LLM都可以变成一个Agent。 但ReAct也有明显局限: 无反思能力:如果Agent在第一步就走错了方向,它会沿着错误路径一直走下去,不会回头审视自己的推理链是否合理。 上下文窗口消耗快:每一步的Thought-Action-Observation都占用上下文,长任务很容易耗尽窗口。 错误传播:一步的错误观察会导致后续所有推理基于错误前提。 Reflexion:引入自我反思 Reflexion在ReAct的基础上增加了"反思"环节。当Agent完成任务或遇到失败时,它会回顾整个过程,总结经验教训,并将这些反思存储为"记忆",指导后续尝试。 Reflexion的循环: Attempt 1: Thought → Action → Observation → ... → Failed Reflection: 失败原因是第一步搜索关键词太宽泛,返回了不相关的结果。 下次应该使用更具体的搜索词。 Attempt 2: (使用反思记忆指导) Thought → Action → ... → Success Reflexion的关键创新是引入了"语言强化学习"的概念——用自然语言而非数值梯度来改进Agent的行为。反思生成的文本记忆起到了类似梯度下降中更新方向的作用。 在我们的实践中,Reflexion在多步推理任务上的成功率比ReAct高出15-25%。特别是在调试代码、解数学题等有明确正确答案的任务上,Reflexion的自我纠错能力非常有效。 Reflexion的局限 反思质量依赖模型的自我评估能力。如果模型无法准确判断自己的推理哪里出了问题,反思可能无效甚至误导。在需要专业领域知识的任务上,模型的自我反思往往不够深入。 此外,多次尝试意味着更多的时间和token消耗。在实时性要求高的场景中,Reflexion的开销可能不可接受。 后Reflexion时代的新范式 自主规划 ReAct和Reflexion都是"边想边做"的范式——每一步根据当前状态决定下一步。自主规划范式则将"规划"和"执行"分离:先制定完整计划,再逐步执行,执行中遇到偏差时重新规划。 自主规划的优势在于全局视野——Agent在开始执行前就能看到整个解决方案的结构,避免局部最优的陷阱。劣势是初始计划可能基于不完整信息,执行中发现计划不可行时需要频繁重规划。 树搜索 将推理过程组织为搜索树——每个节点是一个状态,每个边是一个动作。Agent使用启发式函数评估每个状态的价值,选择最有前景的方向探索。 Tree-of-Thoughts和MCTS(蒙特卡洛树搜索)是这一范式的代表。它们在需要深度搜索的任务(如数学证明、博弈)上表现优异,但计算开销远高于线性推理。 多Agent辩论 多个Agent从不同角度分析同一问题,通过辩论达成共识。这种范式利用了多样性——不同Agent有不同的知识和推理偏好,辩论过程可以暴露单个Agent的盲点。 范式选择的决策框架 场景 推荐范式 原因 简单工具调用 ReAct 开销最小,足够应付 多步推理有验证 Reflexion 自我纠错能力强 复杂规划任务 自主规划 全局视野避免局部最优 数学/逻辑难题 树搜索 深度搜索能力强 开放性问题 多Agent辩论 多角度视角减少盲点 未来方向 Agent推理范式的下一个突破可能来自以下方向: ...