ReAct:推理与行动循环

ReAct:推理与行动循环:把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理,以架构、轨迹与故障重放完成工程验收。

学习目标

  • 能解释“ReAct:推理与行动循环”如何把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理
  • 能区分ReAct、Action、Observation、状态摘要、循环预算,并标出控制权、状态和副作用边界
  • 能冻结输入与版本,沿以下证据定位首个分叉:状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因
  • 能注入“工具失败后模型忽略 observation,继续沿旧计划重复相同副作用”,完成阻断、恢复、复位和同输入重放

来源、课程身份与适用边界

“ReAct:推理与行动循环”以Anthropic 公开全文《Building effective agents》建立工程总纲,并用ReAct 原始论文核对本章机制。

这不是一本名为《AI Agent 开发实战》的官方出版物,也不存在官方十四章目录。平台把公开工程文章、官方开发文档和原始论文重组为 14 个工程单元;下列 112 个节点是站内课程地图。正文、代码、图表、实验与练习均为独立教学重写,模型、API、协议或安全边界变化时必须重新验证。

本单元的八个工程坐标

  • ReAct:推理与行动循环:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 1 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 小特办事,是边想边查边调整的:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 2 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • ReAct:把「想」和「干」拧成一股绳:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 3 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • Thought:把「我现在在想什么」写出来:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 4 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • Action 与 Observation:一个去做,一个把结果带回来:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 5 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • ReAct vs 纯 CoT:一个去查,一个瞎猜:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 6 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手一:拆开一轮 ReAct,看清谁写的、谁填的:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 7 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。
  • 动手二:同一个问题,ReAct 怎么把纯 CoT 比下去:这是“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的第 8 个工程坐标;必须进入机制解释、运行轨迹或故障证据,不能只停在目录。

术语与运行合同

本页不变量是:下一步只依据任务状态、允许的动作和真实 observation 更新,调用与结果严格配对。任何“成功”结论都要保存状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因;模型自评、最终措辞和单次 demo 都不能替代环境事实。

工程机制与反证实验

行动把推理接到环境

纯文本推演无法取得新事实,工具调用让系统能查询、执行和纠错。

动手验证:切断工具后比较回答是否仍错误声称取得外部事实。

观察必须改变状态

空结果、错误与拒绝都是信息,不能被吞掉后继续旧计划。

动手验证:返回 permission_denied,检查下一步是否转人工。

调用结果按标识配对

并行工具完成顺序不稳定,数组位置会导致观察串线。

动手验证:反转结果顺序,确认状态摘要仍正确。

可观测摘要优于泄露私密推理

工程系统需要决策依据、动作和证据,不应依赖展示未必可靠的隐藏思维链。

动手验证:只保留状态摘要与外部事件,确认仍能复盘首错。

从架构到故障重放

分步1 / 3

1. 架构复杂度实验

在“ReAct:推理与行动循环”中切换简单基线、受控工作流和自主循环,先判断“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”是否真的需要更高自主性,再比较延迟、成本、可观测性与风险。

Architecture decision laboratory

ReAct:推理与行动循环

把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理

复杂度档位

不变量:下一步只依据任务状态、允许的动作和真实 observation 更新,调用与结果严格配对

受控工作流:只激活能够由收益证明的阶段1状态摘要2选择行动3执行工具4接收观察5更新或停止蓝色表示当前方案承担的责任;虚线阶段仍留在系统边界外。关键证据:状态摘要、acti…
自主性46
延迟52
成本48
可观测78

最小可运行切片

while (budget.remaining()) {
  const decision = await decide({ goal, state, allowedTools });
  if (decision.kind === "final") return verifyFinal(decision, state);
  const observation = await executeAuthorized(decision.action);
  state = reduceState(state, {
    actionId: decision.id,
    observation,
  });
}
return blocked("budget");

切片只表达“把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理”的核心合同。生产实现还要补齐持久化、超时、密钥隔离、结构化日志、幂等和批量评测;如果不能重新取得状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因,代码跑通也不能证明机制正确。

练习与答案

练习

问题 1:最小证明。 怎样用正常、边界和单故障三类样本证明“下一步只依据任务状态、允许的动作和真实 observation 更新,调用与结果严格配对”?

问题 2:节点覆盖。 ReAct:推理与行动循环、小特办事,是边想边查边调整的、ReAct:把「想」和「干」拧成一股绳、Thought:把「我现在在想什么」写出来、Action 与 Observation:一个去做,一个把结果带回来、ReAct vs 纯 CoT:一个去查,一个瞎猜、动手一:拆开一轮 ReAct,看清谁写的、谁填的、动手二:同一个问题,ReAct 怎么把纯 CoT 比下去如何从目录词变成工程证据?

问题 3:恢复验收。 怎样证明“工具失败后模型忽略 observation,继续沿旧计划重复相同副作用”已经修复?

本章回顾

  • “ReAct:推理与行动循环”解决的是把决策、行动与环境观察交错成可追踪循环,并避免暴露或依赖不可验证的私密推理。
  • 核心不变量是下一步只依据任务状态、允许的动作和真实 observation 更新,调用与结果严格配对。
  • 首要反例是工具失败后模型忽略 observation,继续沿旧计划重复相同副作用。
  • 最小证据包包含状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因。

名词解释

本章出现的专业名词,用大白话再讲一遍。

ReAct

把任务推理与环境行动交错进行的方法。在“ReAct:推理与行动循环”中必须能按以下证据重新定位:状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因。

Action

模型向运行时提出的结构化工具请求。在“ReAct:推理与行动循环”中必须能按以下证据重新定位:状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因。

Observation

环境执行动作后返回的事实。在“ReAct:推理与行动循环”中必须能按以下证据重新定位:状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因。

状态摘要

供下一轮决策使用的可审计任务状态。在“ReAct:推理与行动循环”中必须能按以下证据重新定位:状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因。

循环预算

限制轮数、时间、token 和成本的退出边界。在“ReAct:推理与行动循环”中必须能按以下证据重新定位:状态摘要、action、参数、tool_use_id、observation、错误、下一步与停止原因。

阅读导航

← 提示工程与角色设定 · 工具调用 Tool Calling →

讨论

评论区加载中…