Appearance
93. 描述一下 ReAct 模型在解决一个实际问题时的完整动态过程?
难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 7 min
本题阅读地图
- 💡 简要回答
- 📝 详细解析
- 🎯 面试总结
👔面试官:你刚说 ReAct 是「思考-行动-观察」的循环,能给我举一个具体的例子,把整个过程还原出来吗?
🙋♂️我:就是先搜索,然后基于搜索结果得出答案,差不多就是这样。
👔面试官:「差不多就是这样」……多跳问题呢?搜一次不够怎么办?搜到了怎么判断要不要继续搜?搜到内容怎么提取关键信息?
🙋♂️我:那就再搜一次?
👔面试官:你有没有看过论文里的例子?核心是多跳推理,每一步 Thought 的作用,每一步 Action 怎么决定,你能不能系统地还原出来?
好,这道题的关键不是背流程,而是理解「每一步 Thought 在做什么」。
💡 简要回答
ReAct 的完整过程是一个由「思考 → 行动 → 观察」组成的动态迭代闭环,每一步都紧密依赖上一步的结果。
以多跳问答为例:模型拿到问题后不会立刻行动,而是先分析任务结构,判断需要哪些「中间跳」;然后逐跳执行:搜索 → 从结果中提取关键信息 → 更新子目标 → 继续下一跳,直到收集到足够信息才触发终止动作给出最终答案。
整个过程中,Thought 是大脑,Action 是手,Observation 是眼睛,三者缺一不可。
📝 详细解析
以多跳问答为例还原完整过程
我们以 ReAct 论文中的经典例子来还原这个过程,问题是:
科罗拉多造山带东段延伸区域的海拔范围是多少?
这是一个需要两步才能解决的「多跳问题」:先找到造山带东段延伸到了哪里,再查那个地方的海拔。
阶段一:任务解析与初步规划
模型接收到问题之后,第一步不是行动,而是思考:
Thought 1:这是一个多跳问题。要回答它,我需要先搞清楚「科罗拉多造山带东段」延伸到了哪个具体的地理区域,再去查那个区域的海拔。
这一步的价值是把问题拆解成了可执行的子任务,确定了「先查造山带,再查海拔」的路线图,避免了盲目行动。
阶段二:迭代式信息检索与推理更新
有了初步规划,开始第一次行动:
Action 1:
Search[Colorado orogeny]Observation 1:(维基百科返回一段关于科罗拉多造山带的描述文字)
模型读取返回内容,进行关键信息提取:
Thought 2:描述里提到了「东段(eastern sector)」这个概念,但没有直接说明它延伸到了哪里。我需要在页面内专门查找 eastern sector 的相关描述。
基于这个判断,触发更精准的行动:
Action 2:
Lookup[eastern sector]Observation 2:「东段延伸至高平原(High Plains)」
模型立刻进行子目标更新:
Thought 3:关键信息拿到了,东段延伸至 High Plains。现在任务转换了——我需要去查 High Plains 的海拔范围。
阶段三:信息验证与答案合成
Action 3:
Search[High Plains]Observation 3:「海拔从 1800 英尺到 7000 英尺」
模型完成最终推理:
Thought 4:检索到的海拔数据直接回答了原始问题,信息完整,可以得出最终结论。
Action 4:
Finish[1,800 to 7,000 ft]
每步 Thought 的具体作用
还原完流程,你会发现不同阶段的 Thought 承担着完全不同的职责:
| 阶段 | Thought 的作用 |
|---|---|
| 初始 | 任务拆解,制定多跳路线图 |
| 中间 | 关键信息提取,决定下一步搜索什么 |
| 跳转 | 子目标更新,把「找延伸区域」转换为「查海拔」 |
| 最终 | 完备性判断,确认信息足够后触发 Finish |
这不是简单的「想一下然后搜索」,每一步 Thought 都有明确的任务。把这个细节说清楚,面试官就知道你真的理解了 ReAct,而不只是背了个流程。
动态性的关键:每步依赖上步结果
ReAct 的动态性在于,它不是在开始就制定一个完整的计划然后逐步执行。而是每一步的 Action 都取决于上一步的 Observation。
如果 Observation 2 返回的是「东段延伸至落基山脉」,Thought 3 就会更新子目标为「查落基山脉的海拔」。这种动态调整能力,让 ReAct 在面对不确定的信息环境时表现出色。
🎯 面试总结
这道题很容易答得太浅,说完「搜索然后得出答案」就没了。面试官想听的是:
- Thought 在每个阶段做什么——不只是「思考」,而是任务拆解、信息提取、子目标更新、完备性判断,各阶段不一样
- 动态性从哪里体现——每步 Action 依赖上步 Observation,子目标会动态更新,这是 ReAct 区别于固定计划的关键
- 终止条件是什么——模型自己判断信息已完备,触发
Finish动作
能把这三点说清楚,这道题就答满了。