什么是 ReAct 框架?它的"推理+行动"交替循环是怎么运转的,相比让模型一次性给出答案好在哪里?
Agent
答案要点 ReAct = Reason(推理)+ Act(行动),让模型"边想边做"而不是一口气答完 核心是循环:Thought(思考)→ Action(调工具)→ Observation(看结果)→ 再思考,直到得出最终答案 对比一次性回答:每一步都有真实反馈兜底,能纠错、能拆解复杂任务、轨迹可解释 它是最经典的 Agent 执行范式,出自 2022 年的论文 ReAct 代价是多轮模型调用,延迟和 token 成本更高,还要防死循环 核心概念 ReAct 是一种让大模型把"推理过程"和"工具行动"交替进行的执行框架:模型先写下思考,再执行一个动作,观察工具返回的结果后继续思考,循环往复直到任务完成。 一个循环长什么样 以"姚明的妻子比他小几岁"为例: Thought:得先查姚明妻子是谁 → Action:搜索"姚明 妻子" → Observation:叶莉,1981 年生 Thought:再确认姚明出生年份 → Action:搜索"姚明 出生年份" → Observation:1980 年 Thought:1981−1980=1,可以作答了 → Final Answer:小 1 岁 为什么比一次性回答强 | 维度 | 一次性回答 | ReAct | |---|---|---| | 事实来源 | 全凭参数记忆,易幻觉 | 每步有真实 Observation 支撑 | | 复杂任务 | 一步到位容易漏 | 自动拆成多个子步骤 | | 出错之后 | 无法挽回 | 下一轮 Thought 可换策略重试 | | 可解释性 | 黑盒 | 思考轨迹全程可见,方便调试 | 本质上,ReAct 把"闭卷考试"变成了"开卷考试加草稿纸":允许查资料、允许打草稿、允许写错了划掉重来。 代价也要心里有数:一个任务要跑多轮模型调用,延迟和费用成倍增加,还可能陷入死循环(反复搜同一个词),所以工程上必须设最大步数和退出条件。入门后可以对比 Plan-and-Execute、Reflexion 等改进范式,再看看 LangGraph 等框架里 ReAct 的真实实现。
口语版讲法(约2分钟)
- 一句话定义:推理和行动交替循环,边想边做
- 循环三件套:Thought、Action、Observation
- 姚明例子:多跳问题被自然拆成小步
- 比喻:闭卷考变开卷考加草稿纸
- 埋钩子:成本与死循环,引出改进范式
ReAct 我会用一句话定义:它是让大模型"边想边做"的执行框架,名字就是 Reason 加 Act 的组合,推理和行动交替循环,直到任务完成。 具体运转是这样的:模型每一轮先输出一个 Thought,写下"我现在知道什么、还缺什么";然后输出一个 Action,比如调用搜索或计算器;外部程序执行完,把结果作为 Observation 喂回去;模型看着新信息继续思考,决定下一步。举个经典例子,问"姚明的妻子比他小几岁",模型第一轮想"我得先知道他妻子是谁",去搜,得到叶莉、1981 年出生;第二轮再搜姚明的出生年份,1980 年;第三轮心算一下,回答小一岁。三步下来,每个事实都有出处,而不是凭记忆硬猜。 我喜欢用考试打比方:一次性回答就像闭卷考,全凭记忆,记错了就错了;ReAct 相当于开卷考还发草稿纸——可以查资料,可以把大题拆成小步,写错了下一步还能换思路重来。所以它有三个明显的好处:一是每一步都有真实观察结果兜底,幻觉大幅减少;二是复杂任务被自然拆解,多跳问题不容易漏;三是整条思考轨迹可见,线上出问题时翻日志就能定位是哪一步想歪了。 当然它不是免费的:一个任务要跑好几轮模型调用,延迟和 token 成本成倍上涨;还可能死循环,比如反复搜同一个关键词出不来,所以工程上一定要设最大步数和退出条件。再往深一步,ReAct 之后还有先做完整规划再执行的 Plan-and-Execute、带自我反思的 Reflexion 这些改进范式,它们各自适合什么任务,我也可以接着展开。
关键一句:ReAct 的核心是 Thought→Action→Observation 循环,每一步都拿真实反馈纠偏,而不是一次性凭记忆作答。
面试官可能的追问
- 【概念辨析】ReAct 和 Chain-of-Thought 都强调"让模型先思考",两者的本质区别在哪?什么样的问题光有 CoT 不够、必须上 ReAct?
- 【追问边界】ReAct 每走一步都要调一次大模型,延迟和成本都上去了。什么样的任务其实不该用 ReAct?你会怎么设计退出条件防止它死循环?