跳到正文

ReAct 核心思想与多步推理优势

推理与行动结合,对比纯提示方法在多步任务中的优势

原题:ReAct框架结合了推理(Reasoning)与行动(Action)来解决复杂任务。请阐述其核心思想,并解释为何该方法在处理需要多步推理和外部交互的任务时优于传统的纯提示(pure prompting)方法。

Prompt工程 · 高德真题

回答与解析

ReAct核心思想

ReAct(Reasoning + Acting)将**推理(Thought)行动(Action)**交织执行,形成循环:

Thought → Action → Observation → Thought → ...
  • Thought:分析当前状态、规划下一步、总结关键信息
  • Action:调用外部工具(搜索、计算、API等)
  • Observation:获取工具返回结果,作为新的上下文

相比纯提示的优势

维度 纯提示(Zero-shot/CoT) ReAct
知识边界 仅依赖模型参数内知识 动态引入外部知识
错误累积 多步推理易"一步错步步错" 每步有Observation验证,可修正
可解释性 推理过程黑盒 Thought显式展示决策依据
任务分解 一次性生成完整答案 按需分解,复杂任务逐步攻克

关键优势场景

多跳问答:"张三的父亲的妻子是谁" → 需先查"张三父亲",再查其配偶

实时信息:股价、天气等模型训练后变化的数据

精确计算:数学运算避免LLM算术错误

一句话总结

ReAct把LLM从"闭卷考试"变成"开卷考试+允许使用计算器"——推理负责策略,行动负责获取事实,两者互补解决复杂任务。

学习建议

建议系统学习该知识点

口语版讲法(约4分钟)

  • 本质问法是LLM如何突破自身知识边界做多步推理
  • ReAct循环:Thought-Action-Observation
  • 相比纯提示的边界:纯提示适合单步闭卷,ReAct适合多步开卷
  • 业务场景:客服退款多跳查询
  • 风险:工具质量决定上限,推理链过长会发散
  • 可延伸点:ReAct与Tree-of-Thoughts结合

这道题其实问的是,当LLM需要完成一个自己内部知识不够、还得靠外部工具才能搞定的复杂任务时,怎么把推理和行动串起来。ReAct的核心就一句话:让模型一边想一边做,每一步的思考结果都作为下一步行动的输入。具体循环就是 Thought → Action → Observation → Thought,说白了就是模型先分析当前状态、决定下一步干什么,然后去调用工具,比如搜索、计算、查数据库,拿到结果后再基于这个新信息继续想下一步。

那它比纯提示好在哪里?其实不是谁替代谁的关系,而是适用场景不同。纯提示,包括 Chain-of-Thought 那种,适合模型内部知识足够、推理步骤不依赖外部信息的任务,比如写一首诗、做个简单的逻辑推理。但一旦任务需要实时信息,或者需要精确计算,比如查今天的股价、算一个复杂的数学表达式,纯提示就容易瞎编,因为模型参数里没有这些数据。ReAct等于给模型开了个口子,让它能去拿真实数据来验证和支撑推理。

我给你举一个具体的业务例子。客服退款场景里,用户问“我买了个东西,用优惠券后实付80,但退货只退了60,少了20块”。如果纯提示,模型可能直接猜个理由,或者算错。但用ReAct,模型会先想“我要查订单实付金额”,于是调订单系统API拿到实付80;然后想“再查优惠券规则”,调营销系统API发现是“满100减20,但退款时优惠券不退”;最后想“计算应退金额”,得出实付80减未使用的优惠券部分,逻辑上应该退80。这样每步都有工具返回的Observation支撑,不会一步错步步错。

不过落地的时候有个前提:工具本身的质量和响应速度要够。如果搜索API返回一堆噪声,或者计算接口延迟高,那ReAct的推理链会越走越偏。还有一个常见失败场景是推理链太长,模型在中间步骤忘了初衷,比如查了五六个API后,绕到无关问题上去了。所以上线时我会特别关注 最大步数限制 和 每步的置信度阈值,一旦某步Observation和预期偏差太大,就提前终止或回退。

另外,ReAct这种线性链在遇到分支决策时其实有点笨,比如同时有多个搜索方向可选。我更倾向把它和 Tree-of-Thoughts 结合起来,让模型在每一步探索多个可能的行动路径,然后选置信度最高的继续。这样能减少走错路的风险,但也更贵。

所以整体上,我会把ReAct看成是 给LLM配了一个工具箱和一张草稿纸,让它在需要多步推理和外部信息时,能像人一样边想边查。但真正落地,很少只用ReAct,往往是和RAG、Function Calling混着用,根据任务复杂度动态切换。

关键一句:ReAct线性链在分支决策时不够灵活,可以结合Tree-of-Thoughts做多路径探索

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做一个智能客服,用户问“张三的公司地址在哪”,你查到了,接着他又问“那李四的公司呢”,如果只用纯提示,模型可能会混淆。你打算怎么设计让模型能一步步查,还能记住前面结果?

  2. 问法 2 · 层层追问

    你处理过多步推理的任务吧?你觉得直接让模型一次输出答案有什么问题?……那如果中间需要查外部信息呢?……怎么保证每一步不会把前面推理带偏?

  3. 问法 3 · 直球架构

    ReAct框架把推理和行动交织在一起,核心思想是什么?为什么它比纯提示更适合多跳问答或需要外部工具的场景?具体优势体现在哪些方面?

同模块相关题目