定义

ReAct(Reasoning + Acting)是一种将推理(Reasoning)与行动(Acting)结合的提示范式,由 Shunyu Yao 等人于 2022 年提出。核心思想是形成”思考-行动-观察”循环,让推理指导行动、行动结果修正推理。

工作原理

ReAct 模式的核心循环:

  1. 思考(Thought):模型分析当前状态,决定下一步行动
  2. 行动(Action):模型执行具体操作(调用工具、搜索、计算等)
  3. 观察(Observation):获取行动的结果反馈
  4. 循环:基于新观察继续思考,直至达成目标

形式化表达

每个时间步 ,策略 (LLM)根据原始问题 和历史轨迹,生成当前思考 和行动

工具 执行行动并返回观察 ,循环直至任务完成。

ReAct vs CoT

维度Chain of ThoughtReAct
核心机制纯推理链路推理 + 外部交互
信息源仅模型内部知识结合外部工具和数据
适用场景纯逻辑推理、数学信息检索、任务执行
可验证性推理过程可见行动结果可验证
局限容易产生事实幻觉依赖 LLM 格式遵循能力

核心实现结构

ReActAgent:
  循环(最多 max_steps 次):
    1. 格式化提示词(注入工具列表 + 问题 + 历史)
    2. 调用 LLM 生成 Thought + Action
    3. 解析输出(正则提取 Thought 和 Action)
    4. 如果是 Finish[答案] → 返回并终止
    5. 否则执行工具调用 → 获取 Observation
    6. 追加 (Action, Observation) 到历史

提示词模板要素:角色定义、工具清单、格式规约(Thought/Action/Action Input/Observation 标签)、动态上下文(question/history)。

关键解析函数_parse_output 用正则分离 Thought/Action,_parse_action 用正则从 Search[xxx] 中提取工具名和输入。

特点与局限

特点

  • 高可解释性:Thought 链清晰展示每一步决策依据
  • 动态规划与纠错:“走一步,看一步”,根据 Observation 动态调整
  • 工具协同:LLM 负责规划推理,工具负责搜索计算

局限性

  • 对 LLM 自身能力高度依赖:逻辑推理、指令遵循和格式化能力不足时流程易中断
  • 执行效率问题:需多次调用 LLM,网络延迟和计算成本高
  • 提示词脆弱性:模板微小变动可能影响 LLM 行为
  • 可能陷入局部最优:缺乏全局长远规划

适用场景

  • 需要外部信息查询的任务(搜索、数据库查询)
  • 多步骤工具调用工作流
  • 需要与环境交互的代理任务
  • 动态决策制定

与 Plan-and-Solve、Reflection 的关系

ReAct 是 Agent_Paradigms 中的三种经典范式之一:

  • ReAct:边想边做,动态调整(适合探索性任务)
  • Plan-and-Solve:先完整规划,后严格按序执行(适合逻辑确定的任务)
  • Reflection:执行→反思→优化迭代(适合高精度任务)

三者可混合使用,如用 Reflection 作为外层循环包裹 ReAct。

关联连接