论文笔记:Tool-R0 — 自博弈 RL 训练工具调用智能体,从零数据开始

arXiv: 2602.21320 UIUC + ETH Zurich

一句话总结

Tool-R0 让同一个基座模型同时扮演”出题者”和”解题者”,通过自博弈 RL 在零人工标注数据的条件下,把 0.5B 模型训练到超越基座 3B 模型的能力水平。


问题:人工标注是天花板

工具调用智能体的训练,长期依赖人工构造的”任务–工具–答案”数据集。问题在于:

  • 人类标注的成本高、速度慢,永远追不上模型能力增长
  • 静态数据集无法适应模型能力演进——模型变强了,训练数据还是老分布
  • 人类能出的题有天花板,模型自学出来的题没有

核心问题:能否让模型在没有任何人工监督的情况下,自己给自己出题、自己训练自己?


方法:双角色自博弈框架

Tool-R0 的设计很直接,但细节值得仔细看。

两个角色

从同一个基座模型出发,初始化两个角色:

  • Generator(π_θ):负责出题。给定任务规格 (domain, context_type, num_tools, num_gold_calls),生成「用户请求 + 工具菜单 + 标准答案」,并通过 GRPO 强化学习优化生成质量。
  • Solver(π_φ):负责解题。给定用户请求和工具菜单,输出调用序列,也通过 GRPO 训练。

两个角色独立训练、交替更新——Generator 出题 → 用 Solver 的表现作为信号 → 训练 Generator → 再生成更高质量数据集 → 训练 Solver……循环迭代。

关键机制一:Grounded Task Specification(任务规格锚定)

Generator 如果只看到”出题”两个字,会很快 mode collapse——反复生成类似的题目。

Tool-R0 的解法:给 Generator 一个轻量规格向量 s = (d, c, m, n),分别控制领域、上下文类型、可用工具数量和答案中工具调用数量。这个规格从用户定义的加权分布中采样,注入 Generator 的 prompt 作为元提示(meta-prompting)。

效果:生成分布从”高概率模式”扩散到覆盖更多能力区域。

关键机制二:Difficulty-Guided Reward(难度感知奖励)

这是我认为最聪明的设计。

Generator 出了一道题,难度是”对当前 Solver 来说刚刚好”还是”太简单”或”太难”?这个信息从哪来?

Tool-R0 的答案是:直接问 Solver

具体做法:对每道候选题目,用当前 Solver 跑 K 次(论文用 K=8 次),看 Solver 能做对几次。得到一个通过率估计 p̂_succ:

  • p̂_succ 在 [0.25, 0.75] 区间内 → 题目难度合适,奖励高
  • p̂_succ 太低(太难)或太高(太简单)→ 奖励低,指数衰减

这本质上是让 Generator 能感知 Solver 当前的能力边界,在边界附近生成题目——这正是”i+1”学习理论的自博弈版本。

关键机制三:多维度奖励设计

Generator 训练时有三个互补的奖励项:

  • Format Reward(r_fmt):输出格式是否正确——四个必需块能否提取、工具 JSON 能否解析、答案 JSON 是否规范
  • Validity Reward(r_valid):内部一致性——工具是否在菜单里、参数是否齐全、参数值是否在题目文本中能找到
  • Curriculum Reward(r_curr):难度 + 语义连贯性——由上述 difficulty-guided reward 和语义评分组成

Solver 训练时也有类似的分层奖励:Format Reward + Accuracy Reward(工具名匹配 + 参数 key 重叠 F1 + 参数 value 匹配),并且对”多调用”场景有额外的惩罚项(extra-call penalty),防止 Generator 和 Solver 合谋刷分。

数据集构建

Generator 训练完每轮后,冻结它,用它生成 10,000 道候选题,然后经过:

  1. 去重(基于 question–tool–call 签名)
  2. 交叉验证(用 Solver 多次预测,保留答案一致的题目)
  3. 难度分级(easy/medium/hard bucket)
  4. 平衡采样(保证领域多样性和难度分布)

最终得到 2,000 道高质量题用于训练 Solver。


结果:缩小模型规模差距

核心数据(Qwen2.5 系列,Tool-Alpaca / Seal-Tools / NexusRaven / API-Bank / SNIPS 平均):

模型 基座分数 Tool-R0 后 提升
Qwen2.5-0.5B 15.47 30.57 +101%
Qwen2.5-1.5B 24.85 47.84 +92%
Qwen2.5-3B 43.97 48.50 +10%

关键发现:

  • 0.5B 超越基座 1.5B:零数据自博弈训练,可以让小模型突破原始能力边界
  • 1.5B 超越基座 3B:意味着自博弈不只是在小模型上有效,而是真正挖掘了”能力差距”这个信号的价值
  • 3B 提升幅度最小:大模型本身已较强,提升空间更小;也说明难度感知奖励在小模型上效果更显著

深层洞察:Capability Gap as Loss Signal

Tool-R0 最重要的贡献不是具体算法,而是一个概念框架——把”能力差距”本身当成训练信号。

传统 RL 的范式:环境给 reward → 模型优化 Tool-R0 的范式:模型自己识别自己不会什么 → 专门生成这类任务 → 训练 → 能力边界外推

这不是 curriculum learning(课程学习),因为没有外部的课程设计者。这是 self-referential gradient——模型在用自己的当前状态来定义下一阶段的学习目标。

这与”元学习”的不同在于:元学习通常在单模型内部做快速适应,而 Tool-R0 是在双角色交互中动态构建任务空间。任务空间本身是训练过程中涌现的,不是预先定义好的。


局限与思考

  1. 工具类型受限:论文评估的是 API 工具调用(函数调用),迁移到更开放的工具集(如网页操作、文件操作)效果未知
  2. Generator–Solver 同步更新:两角色独立参数避免了学习冲突,但随着能力提升,Generator 是否会陷入”为 Solver 量身定做”的可作弊空间?
  3. domain 配置仍需人工:任务规格 s 的加权分布是人工指定的,完全零数据还需要后续工作

关联论文

  • Agent0(Xia et al., 2025):首个用自博弈训练 LLM Agent 的框架,但只针对 Python 编程工具,任务空间固定
  • Dr. Zero(Yue et al., 2026):搜索导向 QA 的自博弈,但同样局限于单一工具类型
  • ASL(Agentic Self-Learning):用 Generative Reward Model 替代规则奖励,与 Tool-R0 的难度感知思路正交

结论:Tool-R0 证明了”零人工数据 + 自角色博弈”这条路径的可行性,同时揭示了”能力差距驱动学习”这个范式的强大解释力。值得持续关注其在更开放任务空间(不只是 API 调用)中的泛化能力。