Skip to content

SA01:ReAct Architecture

它解决什么问题

开放任务的下一步依赖工具返回,无法在运行前写成完整路径。ReAct 让模型在行动与观察之间迭代更新决策。

核心定义

ReAct 是 Reasoning 与 Acting 交错的架构:模型基于目标和当前观察选择一个外部 Action,Runtime 执行后返回 Observation,循环直到完成或停止。产品实现不需要暴露私有推理。

工作原理

输入由目标、可用动作、压缩轨迹和预算组成;输出是结构化 Action 或 Final。Runtime 校验 schema、权限与预算,再执行工具并清洗 Observation。

架构视图

Architecture View
Goal -> Decide -> Action -> Runtime -> Observation
          ^                            |
          +--------- bounded loop -----+
Product View
User goal -> Agent running -> evidence / checkpoint -> result
              |       |                 |
              |       +-- clarification +-- partial result
              +-- cancel / approve action

最小可运行实践

运行 examples/single-agent/bounded_research_agent.py 的 react 场景。示例用确定性 Policy 模拟模型决策,保留 Action、Observation、Budget、Stop 和 Trace,因此无需 API Key 也能验证架构。

正常场景

研究 Agent 先搜索主题,观察资料不足后读取一条来源,证据满足后生成结论并停止。

失败与恢复场景

模型重复相同搜索时,Runtime 通过 action fingerprint 检测无进展并停止,返回当前证据和建议澄清,而不是继续烧预算。

什么时候使用

路径依赖中间观察、工具结果可验证、任务允许多步延迟且错误可恢复时使用。

什么时候不要使用

固定路径、强实时、不可逆高风险操作或无法判断进展的任务不要直接采用自由 ReAct。

Trade-offs

ReAct 提高长尾适应性,却增加调用、轨迹状态和方差。更丰富 Observation 有助判断,也可能造成上下文污染。

产品视角

用户与业务问题

解决用户不愿自己反复搜索、查看再追问的探索型任务。

产品价值

系统可以基于新证据继续工作,减少用户手工拆解步骤。

用户体验

向用户展示目标、关键行动、证据、等待和停止原因;不要把内部思维文本当成进度,也不要用动画掩盖无界循环。

自主性边界

Agent 可以在白名单能力中选择只读行动;写入、发送、购买、删除等动作由 Runtime 校验并按风险触发确认。

数据与权限

工具只返回任务所需字段;Context 与 Trace 分开处理,敏感观察不得自动进入后续所有调用或长期 Memory。

失败与降级

超时、预算耗尽或连续无进展时返回最佳已有结果、缺口和可继续选项;工具不可用时可转 Workflow、缓存或人工。

产品指标

衡量任务成功、有效工具选择率、平均步骤、无进展循环率、澄清解决率、非预期行动率和单成功任务成本。

框架中的对应实现

OpenAI Agents SDK Runner、LangGraph 循环图及多数 Agent Runtime 都能承载;关键是决策与执行边界,不是 API。

前置 Workflow vs Agent;后续 Reason–Act–Observe、Termination、Planning。

检查清单

  • 模型拥有哪些决策权?
  • Action 与内部推理是否分离?
  • Observation 是否经过验证和裁剪?
  • 是否有停止、澄清、预算与无进展检测?
  • 高风险行动是否由 Runtime 而非 Prompt 控制?

延伸练习与参考资料

增加重复 Action 检测,并比较停止与自动改写查询两种恢复策略。