Token Lab搜索

← 论文资料库
Agent 与工具调用 / 2022

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

行动改变可获得的证据。下一步决策应依赖返回观察,包括失败,而不是盲目重放预写计划。可读轨迹有助于检查,但不证明所有证据被正确使用。执行是否成功应从外部任务状态验证。

符号与直觉为教学解释,完整假设及实现细节请对照原论文方法。

机制图与逐步推导

观察任务与证据 → 选择允许的下一动作 → 在预算内执行 → 验证观察或停止
原创机制示意图,按从上到下顺序阅读。 SVG ↓
符号与假设
符号含义
sₜ可见任务上下文,不一定是完整环境状态
aₜ带明确参数的工具动作
oₜ₊₁返回观察,包括错误
  1. 为每个工具写转移约定:输入输出 schema、超时行为、副作用与幂等性,从而无需语言模型也能测试闭环。
  2. 需要两次调用的任务无法在一次硬预算中完成。查询后应记录 budget_exhausted,而不是编造验证证据。
  3. 写操作超时意味着提交状态未知。下一步应检查状态或幂等重试,不能假定未执行。
实验检查点

区分 mock 控制流测试与真实策略评测,可读轨迹不证明外部任务完成。

LOCAL / SYNTHETIC / INTERACTIVE

改变一个变量,解释结果为什么变。

原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。

04 · 手算一个例子

原创确定性 mock:任务需要先查询,再验证。预算为 1 时查询后必须停止;预算为 2 时可到达验证。演示不调用模型或网络,只展示状态推进。增加预算使更多行动成为可能,但不会自动改善行动策略质量。

05 · 设计实验

构建确定性工具 mock,覆盖成功、空结果、超时和畸形输出。记录动作参数、观察摘要、终止原因与副作用。真实模型实验应在相同工具、任务集和行动预算下比较提示方法,分别评分外部完成情况、成本与不安全行动尝试。

研究交付物

写出一个假设,保存配置与原始结果,提出替代解释,只报告证据支持的结论。关联实验是本地起点,不是完整论文复现。

打开关联课程/实验 →

06 · 局限与审稿式追问

分析提醒:允许列表、幂等、审批与硬预算属于工程扩展,不是 ReAct 已证明的安全保证。不可信工具响应不能仅因进入上下文而获得权限。mock 轨迹测试控制流,不测试 LLM 能力。

写操作后工具返回超时,agent 应立即重试吗?

不能在不知写入是否提交时直接重试。应使用幂等键或查询外部状态,否则重试可能重复副作用。这是提示模式之外的运行要求。

07 · 阅读原文

推理/行动轨迹、任务接口及提示基线比较。

年份采用首次 arXiv 投稿年份。未锁定版本的链接随修订变化,复现报告请记录准确版本。此处 DeepSeek-R1 明确固定为 v1。

继续学习本主题

MATHEMATICAL REVIEW · 2026-10-26

假设、参考实现与验收

工具预算为非负整数。执行前检查白名单,预算耗尽即停止。确定性 mock 测试编排逻辑,不代表 LLM 规划能力。

复核所示公式、中英解释及声明滑块范围。代码复现标量教学计算,不是论文训练系统。

运行前:预测一个边界情况

构建确定性工具 mock,覆盖成功、空结果、超时和畸形输出。记录动作参数、观察摘要、终止原因与副作用。真实模型实验应在相同工具、任务集和行动预算下比较提示方法,分别评分外部完成情况、成本与不安全行动尝试。

提示:隔离假设

固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。

最小可运行算例

将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node react.mjs. 无需第三方运行依赖。

import {paperCalc} from './paper-core.mjs';
const result=paperCalc("react",2);
console.log(result);
参考输出——先预测再展开
{
  "labels": [
    "Calls allowed",
    "Calls used",
    "Mock task complete (0/1)"
  ],
  "values": [
    2,
    2,
    1
  ],
  "unit": "count"
}

测试与迁移

构建确定性工具 mock,覆盖成功、空结果、超时和畸形输出。记录动作参数、观察摘要、终止原因与副作用。真实模型实验应在相同工具、任务集和行动预算下比较提示方法,分别评分外部完成情况、成本与不安全行动尝试。

在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。

下载完整代码包(.tar.gz) · 完整参考代码与回归检查

预测、检验与证据记录

展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。

打开记录/导出/清除 →

数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围