一句话定义
ReAct 是 Reason + Act 的交替循环:模型先写出下一步思考(Thought),调用工具(Action),读取观察(Observation),再决定继续还是给出最终回答。
为什么需要它
纯 CoT 只在模型内部推理,容易凭空编造;纯工具调用又缺少规划。ReAct 把“想”和“做”结合,用外部观察纠正推理,适合搜索、数据库、代码执行等任务。
怎么工作
- 根据目标生成下一步 Thought。
- 选择并调用工具,传入结构化参数。
- 把 Observation 写回上下文。
- 判断证据是否足够;不够则回到 1。
- 足够时输出 Final Answer。
实现上通常用系统提示约束 Thought/Action/Observation 格式,遇到 Final Answer 停止。工具选择靠 function schema/描述,参数校验和错误码要回填。评测看任务成功率、步数、工具调用准确率和成本;生产环境要日志、轨迹和权限。ReAct 与 RAG 结合时,检索本身也是一种 action。
关键取舍
- 外部观察能减少幻觉,但工具错误会污染后续推理。
- 每步都调用模型/工具,延迟和成本高于单次生成。
- 需要最大步数、超时和失败重试,避免死循环。
- 工具描述和返回格式比模型大小更影响成功率。
常见误区
- ReAct 等于 CoT:ReAct 有外部动作和观察。
- ReAct 一定比 CoT 好:没有合适工具时反而更慢。
- 工具返回一定可信:错误/过期数据会被模型当真。
- 步数越多越可靠:更多步骤也意味着更多错误累积。
用在哪里
- 搜索问答、数据分析、代码修复、运维排查。
- 需要外部证据和动态决策的 Agent。
- 工具边界清晰、失败可回滚的场景。
相关概念
- CoT:ReAct 的推理基础之一。
- Agent Workflow:ReAct 的上层编排。
- Agent:执行主体。