工具调用-论文阅读
(2505) Agent RL Scaling Law: Spontaneous Code Execution for Mathematical Problem Solving
- ZeroTIR Paper, openrlhf_async_pipline
- 单工具场景,提出ZeroTIR,仅靠任务Reward,让模型自主编写python解决数学问题🔢。
- 做了一些scaling的实验,模型越大越好、交互代码次数并非越多越好😔。
同haotian的Zero-TIR-RL应该是同一个工作。
❓问题背景
- LLM在需要精准计算和验证的数学推理上表现困难。
- 尽管RL可以增强纯文本推理,但如何自主使用工具,仍然很重要。
📕核心方法
基于ZeroRL 提出 ZeroTIR
不使用工具监督示例,仅靠任务成功奖励,纯RL让模型自主编写python解决math问题。
不依赖人工示例,允许模型自主探索,实现纠正反思等能力

✍️实验配置
- 模型:Qwen2.5-7B/32B
- 框架:OpenRLHF、Open-Reasoner-Zero
- 异步rollouts+pipeline 提高吞吐量
- 算法:PPO、Reinforce++
- 训练数据:ORZ-57k、DeepMath
- 参数:交互次数变化(0, 2, 4, 20次代码执行);模型缩放等
🍑关键结果
- ZeroTIR比不使用工具的ZeroRL好
- Agent RL 缩放定律
- 性能随模型大小增加而增长,32B > 7B > 1.5B
- 交互次数和效果有单调关系,0到4可以提升15个百分点,但4以后则会递减,表明模型可能已经学会了

(2505) ARTIST: Agentic Reasoning and Tool Integration for LLMs via Reinforcement Learning
- ARTIST paper, ARTIST:驱动推理、工具集成与强化学习的融合
- ARTIST集成外部工具/设计复合奖励等,让模型自主决定何时、如何、使用何种工具: ⏰。
- 在数学推理和多轮函数调用场景验证,相比基线提升较大,提升效果且能自适应新工具 🔧。
❓问题背景
- 真实世界问题需要动态多步推理、外部环境交互、自适应决策过程等能力。
- LLM受限于自身静态知识和纯文本推理,在面对时效信息/复杂计算/依赖专业工具时,限制尤其明显。
📕核心方法
- ARTIST 框架 ⭐
- 💥智能推理:每次rollout是动态的,模型自主决定是内部推理或外部工具交互。
- 🛠️动态工具集成:包括数学计算、python、专用函数、外部API、数据库等。
- 🏆复合奖励机制:答案奖励(2,0)、格式奖励(0,0.5)、工具执行奖励(计算成功调用比例)。
- ARTIST 架构

- ARTIST 方法(RTO)


✍️实验配置
- 模型:Qwen2.5-7B/14B
- 算法:GRPO、Verl框架
- 任务:数学推理和多轮函数调用 2个场景。
- 🔢数学推理
- 训练数据:20k 数据(主要来自 NuminaMath)
- 评估数据:AMC、AIME、MATH500、Olympiad Bench。
- ☎️多轮函数调用:
- 训练数据:BFCL-v3 100个标注任务
- 评估数据:τ-bench(复杂的多轮场景)、BFCL v3(具有挑战性的函数场景)
🍑关键结果
- Bench 提升 🚀
- 数学任务中,相比基线提升22%,甚至不少超过GPT-4o
- 函数调用中,τ-bench效果是基线/prompt的2倍,BFCL效果也很强劲。
- 涌现行为 ⭐
- 自适应工具选择、迭代自我纠正、战略信息收集、上下文感知多步推理
- ARTIST 意义 ❤️
- 增强问题解决能力(集成外部工具和环境,超越纯文本)
- 减少幻觉
- 提高可解释性:结构化推理格式使决策过程更透明
- 适应新工具🔧 :基于RL的ARTIST能推广到新工具,无需重新训练
(2505) Nemotron-Research-Tool-N1: Tool-Using Language Models with Reinforced Reasoning
- Nemotron-Tool-N1 Paper,知乎-NVIDIA让AI更聪明地使用工具
- 工具调用场景,让LLM自己学会推理而非死记硬背,思考模板+二元奖励+灵活评估标准。
- 基于Qwen2.5-7B/14B,在BFCL/API-Bank上全面超GPT-4o,BFCL达新SOTA,RL比SFT有效。
❓问题背景
当前SFT让模型使用工具(蒸馏/死记硬背),存在问题
- 缺乏推理能力👿:完全忽略过程,只关注最终调用是否正确
- 假性推理(模仿式推理😢):只是模仿数据,并未真正理解
📕核心方法
Rule-based RL方法:让模型自己学会推理,不是简单记忆模仿
- 结构化思考模板:调用工具前
<think>...</think>
一下 - 二元奖励🎁:格式正确+工具调用准确才为1,其余为0
- 灵活的评估标准:不要求严格字符匹配,只关注工具调用正确性

✍️实验配置
- 模型:Qwen2.5-7/14B-Instruct
- 数据:现有SFT数据(xLAM/ToolACE),过滤无效工具调用,多轮拆分成单轮
- 算法:GRPO
- 评估数据:BFCL(单步推理/多工具调用等7类任务)、API-Bank(3种难度,73种复杂API)
🍑关键结果
- 在API-Bank 达 82.19%,优于GPT-4o 77.16%;BFCL 全面超越GPT-4o,14B达新SOTA。
- RL优于SFT方法,具有强大泛化能力👍。
- 基础模型很重要,Qwen2.5比LLaMA3好。
API-Bank

BFCL(new sota)

(2505) SkyRL-v0: Train Real-World Long-Horizon Agents via Reinforcement Learning
- skyrl-v0
- 基于VeRL+OpenHands构建了SkyRL,在真实环境中使用多轮工具调用RL训练,设计一套可扩展env和异步高效rollouts系统。
- 基于Qwen3-8B/14B模型,从SWE-Gym筛选训练数据,在SWE-Bench上验证均有提升。
❓问题背景
现有RL任务大多单轮、短期、无状态交互(简单搜索/代码等)。但复杂真实任务需要高级agent能力(如多工具调用、code、测试、长期规划等)。
- 复杂任务:SWE-Bench、WebDev、Web浏览等
online-rl
训练具有挑战- 训练框架需要高效环境执行、交互式rollout
- 有效训练需要强大long horizon算法
📕核心方法
SkyRL(基于VeRL+OpenHands构建):在真实环境中执行多轮工具使用的RL训练流程
- (agent训练) 支持在复杂交互环境中执行多步规划
- 高吞吐量生成:异步并行rollouts,交叠轨迹计算密集和环境交互密集型两阶段。
- 预设及可扩展的RL算法
通过agents层扩展了verl
- 高效的异步多轮rollouts
- 通用工具使用
- 通用和可扩展的环境执行

Reward设计
- Agent和环境交互后,获取Git补丁进行测试,问题解决1,未解决0。
系统设计
- 使用远程sandbox server,扩展环境。把环境执行和训练分离,确保高gpu利用率。
- 异步rollouts&三阶段生产者消费者pipeline
✍️实验配置
数据集📚:从SWE-Gym2.4k真实问题中过滤构建3个子集。(该数据非常难,gpt-4o仅4.55%-9.13%)
- SkyRL-v0-80-data:7b-agent 16次rollout中成功的1次
- SkyRL-v0-220-data:32b-agent 16次rollout中成功的1次
- SkyRL-v0-293-data:gpt-4o或claude-sonnet可以回答的
模型 🤖:
- OpenHands-7B-Agent -> SkyRL-Agent-7B-v
- Qwen3-8B(非推理) -> SkyRL-Agent-8B-v0
- Qwen3-14B(推理) -> SkyRL-Agent-14B-v0
评估📊 :
- 数据集:SWE-Bench
- 评估框架:OpenHands scaffold 和 CodeAct Agent,使用3个动作空间:
bash_execute
,finish
,str_replace_editor
- 最多交互50轮,序列长度32k
🍑关键结果
- 训练后的模型,比基线均有明显提升
三个尺寸模型:7B、8B、14B,四种实验方法:Zero-Shot, Zero-Shot(推理)、SFT、RL。具体如下表所示:
Resolved Rate | Technique | |
---|---|---|
Qwen3-14B | 18% | Zero-Shot (Thinking) |
SkyRL-Agent-14B-v0 (Best👍) | 21.6% | Outcome based Reinforcement Learning |
Qwen3-8B | 3.6% | Zero-Shot (Non thinking) |
SkyRL-Agent-8B-v0 | 9.4% | Outcome based Reinforcement Learning |
Qwen2.5-Coder-Instruct | 1.8% | Zero-Shot |
OpenHands-7B-Agent | 11.0% | Supervised Fine-tuning |
SkyRL-Agent-7B-v0 | 14.6% | Outcome based Reinforcement Learning |
(2504) OTC: Optimal Tool Calls via Reinforcement Learning
- OTC 论文
- 针对RL工具效率问题🔨,提出工具生产力reward🎁,鼓励高效工具调用,简单有效。
- 基于SearchR1和ToRL实验,保持准确率且工具调用大幅降低,训练快且稳定
❓问题背景
- 针对TIR,现有RL方法有效,但往往忽略工具使用效率。只关注答案正确性,导致过多的工具调用。
📕核心方法
- OTC-PO方法(OTC-PPO/OTC-GRPO),简单易用,鼓励模型以最少工具调用生成正确答案。
- 提出工具生产力reward:从纯正确性 --> 工具生产力(效率),鼓励高效工具调用。
- 工具生产力 = 任务收益(答案正确性) / 工具使用成本(调用次数),此处有详细公式。

工具生产力奖励随工具调用次数增多而减少(c为不同交互次数)

✍️实验配置
- Qwen2.5-3B/7B-Base,Qwen2.5-Math-1.5B/7B-Base
- 工具:网页搜索💻、 代码执行 🔠
- Baseline:Search R1(搜索借问答题) , ToRL(代码解数学)
- 训练数据集📚:NQ/HotPotQA,ToRL 28k
🍑关键结果
- OTC-PPO/OTC-GRPO 在NQ/HotpotQA Bench上,保持准确率同时,工具调用次数减少73.1%,效率提高229%
- OTC 相比base,实现了更快、更稳定的优化。显著降低响应长度及工具调用次数。
效果好、效率高 👍

泛化性好 🌟

训练更快更稳定 🚀

(2504) ReTool: Reinforcement Learning for Strategic Tool Use in LLMs
- ReTool论文, Seed-ReTool分析文章
- 构建高质code-integrated数据,SFT+RL两阶段来训练LLM自行决定何时调用工具🔨
- 使用code在数学任务上验证🔢:AIME24/25上超越s1-32B,使用DS-Qwen-32B效果更好👍
❓问题背景
- LLM在精确计算/符号操作等方面仍然存在问题,在数学领域尤其明显。
- 现有方法存在弊端
- PoT(思维程序推理):通常以预定方式进行 ✍️
- SFT:受训练数据分布限制,泛化性不足 💔
- 纯文本RL:无工具集成 🛠️
📕核心方法
提出
ReTool RL
框架,模型自行决定何时调用工具、通过RL进行强化、代码执行和内部推理动态交替。SFT 冷启动阶段 👨🎓
- 构建高质量数据,冷启动基础,教导何时及如何使用代码的基础。
- 高质量code-integrated数据构建过程
- 收集开源数学推理数据集
- 过滤不合格数据
dual-verify
: 结合人工专家和DeepSeek-R1来过滤,得到 - 构建code-integrated数据:把手动计算过程替换成代码片段,最终得到
RL 强化阶段 🤖
- Rollout: 连接异步沙盒代码环境
- Reward:只看最终答案,正确为1,否则为-1

✍️实验配置
- 模型:Qwen2.5-32B-Instruct,
- 算法:PPO算法,VeRL框架
- 数据:SFT是自行构建的代码集成数据
,RL好像没说👿。 - 参数:冷启动 2 epoch。16k长度,mini-bs 512,KL 0
🍎关键结果
- 仅需400 step,AIME24 67%、AIME25 49.3%,超越s1-32B,超越o1-preview。
- 使用DS-R1-Qwen-32B效果更好,AIME24 72.5%、AIME25 54.3%。
- 一些关键技术🔑:代码结果mask loss、KV-Cache Reuse、异步代码沙盒等。
- 一些涌现行为:响应效率更快、代码利用率更高、代码策略时机、自我纠错等。

(2504) ToolRL: Reward is All Tool Learning Needs
- 🖇️ToolRL论文,ToolRL github,知乎-论文阅读,机器之心-ToolRL
- 针对多工具多步调用🔨💻🔎,设计细粒度reward,每次工具调用都能获得反馈👍👎,最大化累计奖励
- 混合ToolACE等4k训练数据,相比SFT提升17% ⭐🌟
❓问题背景
- 当前LLM工具能力依赖SFT,存在泛化弱、探索不足等问题😞
- RL展现推理和泛化能力,但针对多工具调用,reward设计仍然困难 💔
- 不同工具参数不同,针对有效学习,粗粒度奖励信号无法提供细粒度反馈(仅判断答案是否正确)。
- 在TIR多步交互中,需实时调整策略,奖励信号需有效指导每一步 🔨(工具选择和参数生成)。
📕核心方法
Tool-Intregrated Reasoning (TIR)
任务定义给定n个工具:
第k步推理轨迹:推理->工具->结果,
-推理步骤, -调用工具集合, -工具返回结果 模型策略
的目标是最大化累计奖励
Reward定义:格式 0, 1;正确性 [-3, 3],整体[-3, 4]。
- 正确性包括工具名匹配、参数名匹配、参数值匹配。
✍️实验配置
- 模型:Qwen2.5-Instruct(1.5B/3B/7B)、LLama
- 算法:GRPO,原始模型、SFT、PPO作为基线。verl框架。
- 训练数据:混合ToolACE(多步决策)、Hammer(工具名掩码,增强泛化)、xLAM(多工具组合),共4K样本,分解为单步实例。
- 评估基准
- BFCL:单步推理,多工具调用等7类任务
- API-Bank:73种复杂API,3种难度
- Bamboogle:多跳QA数据
🍑关键结果
- TooRL 实现了稳健可扩展的训练,相比基模提升17%,相比SFT模型提升15% 🚀
- 探索了4个维度的各种奖励配置,奖励类型(哪些方面需要奖励)、奖励尺度(奖励多少)、奖励粒度(详细程度)、奖励动态(如何随时间改变)。
- 简洁胜于冗长:推理太长可能导致过度推理(引入噪声),不一定带来更好的工具调用性能
- 动态奖励助力平滑过渡:reward随训练步数实时调整,有助于LLM从简单泛化至复杂目标,逐步积累TIR能力
- 细粒度反馈是关键:每一次工具调用都能获得细粒度reward,这提升了LLM多步操作及外部工具使用能力。
(2503) ToRL: Scaling Tool-Integrated RL
- 🖇️ ToRL 论文,ToRL 代码,知乎-论文阅读-ToRL
- 利用RL来训练LLM自主利用工具,在math任务上引入代码工具
- 比无工具RL模型提升14%
❓问题背景
- 纯文本推理在复杂计算/方程求解等任务表现不好,需要使用工具
- 但现有工具集成(TIR)方法依赖SFT,限制模型探索能力,无法自主发现最优工具策略。
📕核心方法
设计ToRL框架,通过RL训练模型自主利用工具,探索、发现最佳工具使用策略,比SFT好。
ToRL 设计
- Reward:正确性:1, -1;代码可执行:0, -0.5(实验发现此惩罚无效)。
- 执行环境:使用Sandbox Fusion
- 训练优化:控制最大工具调用次数c,超过后就强制纯文本推理
- TIR推理轨迹:推理->代码->结果,r-自然语言推理,c-代码,o-代码执行结果
✍️实验配置
模型:Qwen2.5-Math 1.5B、7B,
算法:VERL框架,GRPO算法,
数据集:利用LIMR,抽取高质量样本,均衡难样本分布,从75k -> 筛选到28k,数据来源于NuminaMath/Math等竞赛题。
参数:bs=128,temperature=1, 忽略KL散度
🍑关键结果
ToRL-7B
在AIME24上达43.4%,比无工具RL模型提升14%,超越现有TIR(Qwen-2.5-Math-指令-TIR)17%。- 通过ToRL,模型自主发展出新兴行为,如策略工具调用、无效代码自我调节、计算推理和分析推理的动态适应。

技术博客-阅读
(2505) haotian: Zero-TIR-Scale&Async-Pipline
- 知乎haotian-Zero-TIR-Scale原文
- 基于openrlhf实现的异步生成+pipline的环境交互框架,比
async-rollout
提速1.6倍,比sync-rollout
快4倍,能更好支持更多实验及更大尺寸的zero-tir实验
。 - 使用7B/14B在数学-代码工具上做实验验证。
- 让训练和rollout能并行跑完。
- rollout完一个完整batch data存到队列。
- 训练时读取队列数据训练。
- 训练结束后,等待rollout结束才能更新参数。
- 思路类似 verl-pipeline和 Trinity-RFT。
- 每个actor保存一个异步队列。训练前rollout N个batch存储到队列中,每次从队列中取数据
- 向rollout-actor提交1次rollout任务,参数更新后再回收任务并存储到队列中。
- 在replay-buffer数据不足支持一次参数更新时,增加rollout任务回收,确保rollout引擎不会过于堆积数据。

✍️实验配置
- 模型数据:Qwen25-base 7b/ 32b,
- 训练数据:orz57k + dapo17k,deepmath-103k
- 算法:reinforce++_baseline + replay-buffer-filter(acc/length) + clip-higher
- 训练配置:exact-on-policy
🍎 关键结果
7b-base-zero-tir
- 训练数据影响
- orz57k + dapo17k,更容易让base model使用code解math问题,前期code-ratio远高于deepmath103k。
- 数据scale似乎没带来特别强的效果提升。
- 环境交互次数
- 环境交互次数 scale 对base model训练似乎很难,前期code比例很低,需更多step才能提升code比例
- 测试阶段环境交互次数 scale 没有显示出特别好的效果,交互2次增加到4次,效果不明显
- 总的来说:在math上,zero-tir比text-cot提升比较显著
32b-base-tir(知乎博主还没跑完,后续跟进)
Aime24在step300,可以跑到53.33,而text-co则需要参数更新上千次才能达到类似效果。
Replay-buffer需要根据acc选择数据,训练到后期:
- replay-buffer攒batch的时间越来越慢,大部分rollout样本倍acc-filter过滤,训练速度越来越慢,导致pipeline没有大的提升
- 此时,大概需要动态调整pipeline,增加pipeline,尽量避免单次replay-buffer不足就等待rollout的数据回收。
(2504) haotian: agent-rl之环境异步交互rollout
- 知乎-agent-rl之环境异步交互rollout
- 实践工程,针对Agent-RL场景,对Open-RLHF做异步rollout改造
Agent能力已成标配,从以下2方面考虑:
- Pretrain阶段:给模型先验知识,尽可能见多的tool/function/mcp-server等
- RL阶段:不提sft,是因为人为经验不一定是好的,让模型自主探索才是最好的
Actor和环境
- Actor需和环境不停交互:获取
final reward
或step feedback
- 环境:数据 + 交互/调用 + step/traj 反馈
- final/traj reward(全局反馈): 如math场景,rule判断最终结果
- step reward(中间反馈):如使用tool,判断tool中间结果,是step feeedback
两种scale
- 环境scale:扩展模型的环境泛化能力。
- 依赖较多人工投入,可以mcp-server作为环境基础。
- 现有rl框架rollout基本是同步机制,难支持不同环境交互方法、环境交互延时可能大于rollout本身
- 环境交互scale:扩展模型在特定环境上的效果及最优决策。
- Rollout动态组batch、环境交互异步并行 则成为agent-rl比较关键的因素。
- batch越大,可能拖慢环境异步交互并行度,其异步效率是关键因素。
agent-rl框架(实现)
openrlhf/verl的rollout是同步引擎,直观就是同步改成异步好了,rollout变成server,做异步消息队列。
- 注意:截止0522,目前verl/openrlhf均有异步rollout开源实现。verl-agent
- 在ray-rollout-actor里启动univorn,提供serving;实现消息队列+动态组batch,实现异步roolout改造
- 环境使用fastapi/server,配合asnycio并发执行
- 将每个prompt需要的环境组group,并在该group内组batch,实现prompt和环境绑定
- 每次环境交互完,需要等待一点时间,尽可能组batch再做下一轮rollout
基于该实现,博主测试了math+tir场景下rollout+环境交互耗时:(tool=为python code)
- 同步:全部prompt vllm-rollout,for循环串行环境交互,拼接环境反馈,下一轮vllm-rollout
- 异步:组batch vllm-rollout,并行环境交互,拼接环境反馈,动态组batch 下一轮vllm-rollout

(2504) haotian: ZERO-TIR-RL: 以小搏大
同ZeroTIR-论文一样,在math场景引入code来解题,效果自然比不带工具的RL要好。
Tool-Integrated Reasoning(TIR),注意TIR不仅限于Code环境。
- Qwen2.5-Math:基于SystemPrompt切换来选择是否调用tool。
- Zero-TIR-RL:则通过RL训练模型自主决定是否调用tool。
常见Agent-RL为搜索场景,比如search-r1, r1-searcher等,其使用向量检索作为tool,基于base跑zero-rl提升模型问答能力。
方法 | 特点。 |
---|---|
TIR-SFT | 强制模型每道题都是有code解决。这类工作比较多。 |
TIR-RL | 不强制,通过RL自行决定是否使用python-code解题。 |
📕核心方法
同论文Agent RL Scaling Law
一致,引入code环境,生成python code来解题,把结果(环境反馈)拼接回去。
:
✍️实验设置
- 模型:Qwen25-7b-base
- 训练数据:orz-57k数据
- prompt:加上
you can use python-code to solve your problem
。 - reward 设置
Code-reward
:response中出现code的比例Code-in-correct
:response中出现code且答案正确的比例
- 环境最大交互次数:2
🍑实验结果
- zero-tir比不带工具的zero-rl收敛效率和效果更好。
- math+code环境,code-reward先降后升,随code比例提高,acc也提高。
- code-in-correct和code-reard基本一致。
- 按理说env是一个observation,不该被计入loss;但具备gt的环境,预测输出也是make-sense的。相当于让模型模拟环境,是一个
dreamer
或world model
。 - 模拟环境阶段:不加env-mask,预测环境输出。通过内部世界模型进行模拟训练,模型快速探索各种action 策略,找到最优方案。
- 真实环境阶段:加env-mask,不预测环境输出。模型和环境互动,获取真实反馈。