ReAct:让行动与观察形成闭环
跟踪外部证据闭环,并加入研究演示不会自动提供的运行边界。
ReAct: Synergizing Reasoning and Acting in Language Models · Yao et al. · arXiv:2210.03629
Token Lab 原创学习解读 · 来源核对 2026-10-25 · 区分论文主张与合成教学例子。
01 · 论文提出了什么
ReAct 交替生成推理轨迹与行动,使 agent 可以根据外部观察更新方法。论文评估问答、验证和交互环境。工具交互属于方法组成部分,纯文本计划不等于复现相同设置。
一手来源:论文摘要 ↗学习指南与本课目录
LEARNING CONTRACT理解 → 实现 → 研究
目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。
- 理解层:写明假设、形状/单位和一个反例。
- 实现层:复算数值例子并检查边界。
- 研究层:在匹配预算下比较一个替代方法。
02 · 核心机制
Text / 原始公式
Observation → next-step decision → action → new observation Operational extension (not a paper guarantee): continue only if calls < budget AND action ∈ allowlist stop on success, budget exhaustion or unrecoverable failure
行动改变可获得的证据。下一步决策应依赖返回观察,包括失败,而不是盲目重放预写计划。可读轨迹有助于检查,但不证明所有证据被正确使用。执行是否成功应从外部任务状态验证。
符号与直觉为教学解释,完整假设及实现细节请对照原论文方法。
机制图与逐步推导
| 符号 | 含义 |
|---|---|
| sₜ | 可见任务上下文,不一定是完整环境状态 |
| aₜ | 带明确参数的工具动作 |
| oₜ₊₁ | 返回观察,包括错误 |
- 为每个工具写转移约定:输入输出 schema、超时行为、副作用与幂等性,从而无需语言模型也能测试闭环。
- 需要两次调用的任务无法在一次硬预算中完成。查询后应记录 budget_exhausted,而不是编造验证证据。
- 写操作超时意味着提交状态未知。下一步应检查状态或幂等重试,不能假定未执行。
区分 mock 控制流测试与真实策略评测,可读轨迹不证明外部任务完成。
改变一个变量,解释结果为什么变。
原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。
04 · 手算一个例子
原创确定性 mock:任务需要先查询,再验证。预算为 1 时查询后必须停止;预算为 2 时可到达验证。演示不调用模型或网络,只展示状态推进。增加预算使更多行动成为可能,但不会自动改善行动策略质量。
05 · 设计实验
构建确定性工具 mock,覆盖成功、空结果、超时和畸形输出。记录动作参数、观察摘要、终止原因与副作用。真实模型实验应在相同工具、任务集和行动预算下比较提示方法,分别评分外部完成情况、成本与不安全行动尝试。
写出一个假设,保存配置与原始结果,提出替代解释,只报告证据支持的结论。关联实验是本地起点,不是完整论文复现。
打开关联课程/实验 →06 · 局限与审稿式追问
分析提醒:允许列表、幂等、审批与硬预算属于工程扩展,不是 ReAct 已证明的安全保证。不可信工具响应不能仅因进入上下文而获得权限。mock 轨迹测试控制流,不测试 LLM 能力。
写操作后工具返回超时,agent 应立即重试吗?
不能在不知写入是否提交时直接重试。应使用幂等键或查询外部状态,否则重试可能重复副作用。这是提示模式之外的运行要求。
07 · 阅读原文
推理/行动轨迹、任务接口及提示基线比较。
年份采用首次 arXiv 投稿年份。未锁定版本的链接随修订变化,复现报告请记录准确版本。此处 DeepSeek-R1 明确固定为 v1。