跳到正文

ReAct 架构原理与失败场景

Agent 中推理与行动循环的工作流程与优势解析

原题:请详细解释ReAct(Reasoning and Acting)架构在智能体(Agent)中的设计思想、工作流程及其在大模型任务执行中的优势。

Prompt工程 · 字节真题

回答与解析

核心思想

ReAct 将推理决策与外部行动交替进行:模型根据当前状态选择下一步 Action,环境返回 Observation,新的观察再进入下一轮决策。工程实现可以记录简洁的计划或决策摘要,但不需要向用户暴露隐藏 Chain-of-Thought。

工作流程

  1. 解析任务和当前状态,生成下一步可执行计划。
  2. 从允许的工具集合中选择 Action,并输出满足 Schema 的参数。
  3. 执行工具,得到带来源、状态码和错误信息的 Observation。
  4. 根据观察更新状态,判断完成、继续、重试、换工具、请求确认或安全终止。
  5. 达到完成条件后,根据可验证的观察生成最终回答。

生产实现必须设置最大步数、时间和成本预算,检测重复状态,并对有副作用的工具增加权限、幂等和人工确认。

与其他范式的区别

  • 单纯 CoT 只在模型内部生成推理文本,不会自动获得实时环境反馈。
  • 单次 Tool Use 可以完成确定性调用,但不一定包含多步状态更新。
  • ReAct 的价值在于让工具观察参与下一步决策,而不是把“Thought 文本可见”当作可解释性的保证。

优势与边界

ReAct 适合多步检索、数据查询和工具编排,并能在工具失败后调整计划;但它也会增加延迟、成本、循环和提示注入风险。是否提高任务完成率或降低幻觉必须在目标任务上与单次调用、固定工作流等基线对照评测,不能宣称必然显著更好。

结论:ReAct 是“决策—行动—观察”的有界反馈循环,可靠性来自真实工具结果、状态控制和安全边界。

口语版讲法(约2分钟)

  • ReAct核心是边想边做,形成循环
  • 工作流程:Thought-Action-Observation循环
  • 优势:幻觉抑制和可解释性
  • 适合多步工具调用场景

ReAct 的核心是让“当前决策、外部行动、环境观察”形成循环。模型根据当前状态选择下一步工具或结束,工具返回带状态码和来源的 observation,新的观察再进入下一轮决策。生产系统可以记录简洁的计划摘要,但不需要展示或持久化隐藏 Chain-of-Thought。

它和单次 Tool Use 的区别,是后续动作会根据前一步真实结果动态调整;和只生成推理文本的方式相比,ReAct 能把搜索、数据库和计算器等外部信息纳入状态。价值来自可验证观察,不是来自把 Thought 文本展示给用户。

例如比较两地天气,系统先调用第一座城市的天气工具,保存结构化结果,再查询第二座城市,最后依据温度、降雨和风力生成建议。若工具返回空结果、参数错误或权限拒绝,状态机会选择重试、换工具、请求澄清或安全终止。

上线时必须设置最大步数、时间和成本预算,检测重复状态,并对工具做白名单、Schema 校验、权限、幂等和副作用确认。observation 还要限制长度、隔离提示注入并保留来源。

另一个常见风险是把不可信的工具返回直接拼进下一轮提示,导致提示注入或状态污染。我会把工具结果解析成受限字段,丢弃未知指令,并用包含正常、超时、重复调用和恶意返回的回放集验证终止率、任务成功率与错误副作用。

ReAct 不保证天然减少幻觉或提升成功率,应和单次调用、固定工作流等基线比较任务完成率、错误副作用、工具成功率、循环率、延迟和成本。停止条件、失败处理和可观测状态比让模型多走几步更重要。

关键一句:ReAct 的生产难点是有界的决策、行动与观察循环,不是展示 Thought 文本。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你做一个智能客服,用户问“帮我查一下订单”,你得先搜索数据库,然后可能还需要调用物流API看发货状态,如果结果有异常还要再次查询。这种多步工具调用,你是怎么让模型边想边做的?

  2. 问法 2 · 层层追问

    大模型调用外部工具,你一般怎么设计流程?……如果第一步搜索没找到结果,模型会怎么处理?……那如果它需要基于搜索结果再决定下一步动作,怎么把推理和行动串起来,而不是一次性生成所有动作?

  3. 问法 3 · 直球架构

    解释一下ReAct架构的设计思想,就是怎么把推理和行动交织起来的?它的工作流程是怎样的?相比直接用CoT或者单独的工具调用,它主要解决了什么问题,有什么优势?

同模块相关题目