吴师兄大模型
实战项目 · 面试解析

请解释ReAct(Reasoning + Acting)框架的核心设计理念,并分析其在解决复杂推理与交互任务时相比单纯提示工程的优势。

Agent 智能体高难
← 返回列表
核心概念

ReAct(Reasoning + Acting)是目前工业界最主流的 Agent 推理范式,通过交替的推理-行动-观察循环解决复杂任务。核心优势:强制 LLM 基于真实工具返回的数据推理,而不是凭训练记忆瞎编,大幅降低幻觉。相比单纯的 Chain-of-Thought(CoT),ReAct 能与外部环境真实交互。

面试答题思路
4步拆解
1
说清 ReAct 三步循环
Thought(分析)-> Action(调用工具)-> Observation(接收结果),强调「Observation」步骤是关键,它强制 LLM 面对真实数据。
2
对比 CoT 的优势
CoT 是纯内部推理,ReAct 能与外部世界真实交互,获取实时信息,这是解决 LLM 知识截止问题的根本方法。
3
指出 ReAct 的局限
上下文线性增长是 ReAct 的最大缺陷,引出 IterResearch 的「演进报告」机制,体现你对技术的深度理解。
4
说工程化容错机制
工具超时处理、重复检测、提前终止、max_steps 限制。这些是区分「了解原理」和「真正做过项目」的关键。
详细解析

ReAct 三步循环

输入:用户问题

->

Thought(思考):分析当前情况,决定下一步行动

->

Action(行动):调用具体工具(search / calculator / text2sql / code_executor)

->

Observation(观察):接收工具真实返回结果

->

判断:信息够了吗?

|- 否 -> 返回 Thought,继续循环

|- 是 -> 生成 Final Answer

完整代码实现

python
class ReActInference:

def __init__(self, model, tools, max_steps=30):

self.model = model

self.tools = tools

self.max_steps = max_steps

def run(self, question: str) -> dict:

messages = [

{"role": "system", "content": self._get_system_prompt()},

{"role": "user", "content": question}

]

for step in range(self.max_steps):

response = self.model.generate(messages)

messages.append({"role": "assistant", "content": response})

if "<answer>" in response:

return {"answer": self._extract_answer(response), "steps": step + 1}

tool_call = self._parse_tool_call(response)

if tool_call:

try:

observation = self.tools.execute(tool_call)

except TimeoutError:

observation = "工具调用超时,请尝试其他方法"

except Exception as e:

observation = f"工具调用失败: {str(e)}"

messages.append({

"role": "user",

"content": f"<tool_response>{observation}</tool_response>"

})

return {"answer": "达到最大步数,无法完成", "status": "max_steps_exceeded"}

ReAct vs CoT vs IterResearch

框架核心思路上下文增长适用场景
CoT纯内部推理链线性增长数学推理、逻辑题
ReAct推理+工具调用交替线性增长多工具任务、信息检索
IterResearch演进报告作为中央记忆恒定不变深度研究、长 horizon 任务
## IterResearch 的核心创新
ReAct(累积式):

Round N: [Q, T1, A1, O1, T2, A2, O2, ..., Tn, An, On] <- 上下文线性增长!

IterResearch(常量式):

Round N: [Q, Report_{N-1}, Action_{N-1}, Observation_{N-1}] <- 大小恒定!

关键:用「演进报告 Report」压缩整合前轮信息,每轮只保留固定大小的工作空间

重点提示
ReAct 为什么重要:通过「Observation(观察真实工具返回)」步骤,LLM 被迫基于真实数据推理,而不是凭训练记忆编造。这是解决 Agent 幻觉问题最有效的范式,是几乎所有现代 Agent 框架的底层逻辑。
ReAct 的主要缺陷:上下文随推理步数线性增长,20步以上时容易超出窗口。对于需要数十步的深度研究任务,应使用 IterResearch(演进报告机制保持上下文恒定),这是 DeepResearch Agent 的核心创新。
知识卡片
4个知识点
ReAct vs CoT

CoT 是纯内部推理,不与外部环境交互。ReAct 在推理之间插入真实工具调用(搜索/计算/SQL),能获取实时信息和外部数据,解决了 LLM 知识截止和幻觉问题。

重复检测

Agent 可能陷入「循环搜索同一个词」的死循环。解决方案:维护最近 N 条 query 的哈希,检测到重复时提示 LLM 「你已经搜索过这个了,结果是...」,让 LLM 换一个角度。

提前终止

当多个来源的答案高度一致(置信度 > 0.85),可以提前终止,不用跑完 max_steps。提升响应速度,同时避免无效重复检索。

IterResearch 原理

DeepResearch 的核心推理框架。将研究过程建模为 MDP,用「演进报告(Evolving Report)」作为中央记忆,每轮只保留 [问题 + 上轮报告 + 上轮动作 + 上轮观察],上下文大小恒定,支持 100+ 步深度研究。

面试官视角

被问ReAct 和 CoT 的区别,不要只说ReAct 多了 Action 步骤。正确答案:CoT 是模型内部的纯推理链,不与外部环境交互,适合数学推理。ReAct 在推理之间插入真实的工具调用——搜索引擎、SQL 执行器、代码解释器——能获取实时信息和外部数据。本质区别:CoT 解决『如何思考』,ReAct 解决『如何行动』。在我们的 DeepResearch 项目中,ReAct 的 Thought->Action->Observation 循环支撑了整个多轮迭代搜索逻辑,对于需要 100+ 步的深度研究任务,我们用 IterResearch(演进报告机制)解决了上下文溢出问题。