先这样答
ReAct 这个名字来自 Reasoning + Acting,出自 2022 年的同名论文,现在是 Agent 最基础的运行范式。它的做法是在提示词里要求模型按固定格式输出:先写一段 Thought(当前知道什么、下一步为什么这么走),再写一个 Action(调用哪个工具、参数是什么),系统执行工具后把 Observation(结果)拼回上下文,模型接着写下一个 Thought。这样想一步、动一步、看一眼,循环到得出最终答案。
它比单纯的思维链(CoT)好在哪:CoT 只在自己脑子里推,推错了没人拦;ReAct 每一步都能拿到外部世界的真实反馈,走岔了能被 Observation 拉回来。它比单纯调工具好在哪:Thought 把中间推理显式写出来,既提升了决策质量,也让整条轨迹可审计——出问题时你能看到它当时「在想什么」。
工程上要补一句:现在的模型很多已经把这种模式内化了,Function Calling 场景下模型原生输出工具调用,Thought 不一定显式存在,但「行动-观察-再行动」这个循环结构没变。真正落地时要注意的是上下文管理:循环多轮之后轨迹越来越长,要做裁剪或摘要,否则上下文先爆炸。
面试官会怎么追问
- ReAct 有什么明显缺点? 对模型的格式遵从能力有要求,早期模型经常格式跑偏;循环轮数不可控,任务复杂时轮数和成本都涨;一步 Observation 噪音大时容易被带偏。
- 怎么防止它绕着同一个错误打转? 加循环检测(连续几步动作和参数雷同就干预)、设置最大轮数、在关键节点插入反思提示让它评估当前路线。
- ReAct 和 Plan-and-Execute 怎么分工? 边走边看、路径短的用 ReAct;目标明确、步骤多的先整体规划再分步执行,规划的骨架更稳。
回答的坑
- 把 ReAct 讲成「一个框架的名字」。它是提示词层面的运行范式,LangChain 里那个 ReAct Agent 只是它的工程实现之一。
- 不提 Observation 的作用。没有「结果喂回」这个环节,就不叫 ReAct,只是一次普通的工具调用。
同系列的题
—— 本题完 ——