多轮工具调用里,用户会追问、补信息、改主意,而现有的 agentic RL 大多面对脚本化的问题单和固定环境。 这篇把 LLM 扮演的用户放进 GRPO 的 rollout,让 agent 一边和用户对话澄清意图、一边调工具查数据库, 奖励只看最终任务是否完成。代价是全流程依赖 GPT-4o 当用户模拟器,且只在 TAU1 的 retail/airline 上训。
问题不是「不会调工具」,而是「不会和人来回核对」。论文把 rollout 从「文本生成」推到「多步调工具」再推到 「多轮用户交互 + 实时工具执行」:agent 每一轮可以选择调工具或给用户发消息,LLM 用户按 agent 的回复动态回应。
训练配方极简:SFT 冷启动约 2000 条轨迹 → GRPO(β=0.001、每 query 8 个 rollout、最长 32768 token、最多 30 轮)→ 二元奖励(完成 1,否则 0),工具结果与用户消息在 loss 里被掩码。
最亮眼的是泛化:用 TAU1 的 retail(115 题)+ airline(50 题)训练,在没见过的 TAU2 Telecom 上 MUA-RL-32B 的 TCR 从冷启动的 21.6% 拉到 45.1%;但 8B 在 BFCL-V3 上反而比冷启动低。
读完这节你应该知道:为什么「多轮工具调用」不是把单轮函数调用重复几次。
论文在 §1 里把真实用户的需求描述为「highly dynamic and unpredictable」:用户会「根据模型的回复调整问题和预期」, 形成「a feedback loop that requires continuous bidirectional adaptation」。在 TAU 这类任务里,超过一半的槽位信息 agent 无法直接从工具拿到,必须开口问用户;而用户只会在被问到(或按 policy 规定)时才给出关键信息。
形式化上(§3.1, Eq.1),一条轨迹是 o1,user → t1 → o1,db → … → m1 → …
的交替:工具调用 ti 后得到数据库观测 oi,db,发给用户消息 mi 后得到用户观测
oi,user。每一轮 agent 自己决定调几个工具、要不要先说话。
难点在于「每一步都不是独立可验证的」:同一次订单修改,先问地址还是先查订单都行;用户第一次回答常常含糊,需要追问。 这种路径依赖让「每步都给格式分」的奖励容易把 agent 引到复制某种回复模板上,而不是真的解决任务。
读完这节你应该知道:现有 RL 的 rollout 缺的到底是哪一环。
Retool · SkyRL · RAGEN · Search-R1 …
论文 §1:这些系统「operate in predetermined environments and rely on pre-scripted queries」。 rollout 里 agent 要么只输出文本拿奖励,要么和代码沙箱、Docker、搜索引擎这类「数据库」交替交互(§3.3.2, Figure 4(a)(b))。 它们证明了工具执行能进训练循环,但没有用户这个角色。
Generative Agents · PLM world models · 各类工具轨迹合成
LLM 可以扮演用户来造数据、做基准里的 user simulator(TAU 评测本身就用 LLM 用户)。论文 §3.3.2 承认已有工作「explored using LLMs as simulators of human characters」, 但指出这些模拟没被放进大规模 RL rollout,agent 因此学不到「对动态用户的反向适配」。
于是缺口很清楚:RL 训练里有真实的工具和数据库,唯独没有会随 agent 回复而改变行为的用户。 MUA-RL 就是把 A 的工具执行和 B 的 LLM 用户拼在同一个 rollout 里(Figure 4(c))。
读完这节你应该知道:adv 是怎么从一组 rollout 里算出来的,而本模拟和原文哪里不同。
§3.3.1 采用 GRPO(Eq.2/3):对每个 query 采一组 G 个轨迹,组内标准化得到 advantage
Ai = (ri − mean) / std,再做带裁剪的 ratio 目标并减去 KL。原文没写 std 的口径;
本页交互按 总体标准差(÷G,即 numpy 默认 df=0) 实现,下面的手算块同口径。原文的超参:裁剪系数 ε 未给出具体值,
KL 系数 β = 0.001(§4.1)。
Eq.2/3 的改写;GRPO 的 KL 项在 Eq.2 只写成 βDKL(πθ‖πref),具体估计用 k3 形式是页面自定,见交互说明。
§4.1 的 “Loss mask strategy”:在 loss 计算时掩掉「tool execution results and user messages」的 token。 交互里把 4 笔交易的 token 范围可视化——只有 agent 自己生成的部分(标 self)参与梯度。
示意排布(agent 发言 → 调工具 → 工具返回 → … → 任务完成)。原文只给了「掩掉 tool results 和 user messages」这一句, 没说明 tool call 参数本身是否参与 loss;这里按「agent 生成的一切都参与」画,属于推断。实际轨迹里 tool call 常以格式化文本写在 agent 消息内,二者无法从原文区分。
§3.3.3:只有 agent「successfully fulfills the task in accordance with the system prompt」时才 r = 1,否则 r = 0。
论文给的理由是「Robustness to dialogue variation」与「Mitigation of reward hacking」:不限定走哪条对话路径,也不让 agent 靠输出格式骗分。
§4.1 还特别说明:训练时去掉了 TAU1 原本的对话内容要求(例如必须告诉用户某件衣服的库存)——因为作者观察到这些要求
「impede the model’s ability to learn correct tool invocation patterns」。
交互覆盖:Eq.3 的组内标准化、Eq.2 的裁剪与 KL 惩罚(KL 用 k3 估计 ρ−1−ln ρ)。 未覆盖:多 token 上对 ratio 取和再相除的实际计算、πref 与 πold 分开(这里把 ref 概率当 1,即 KL 只相对 old 计)、 原文未给出的 ε 默认值。这是简化模拟,4 个固定 rollout + 1 个可调 rollout(r₅)是页面自定的例子: 前四个奖励 {1, 0, 0.5, 0} 用来让组内出现多种取值,r₅ 可以让人手动改变组均值与 std; MUA-RL 实际奖励只有 0/1(§3.3.3),若一组全 0 或全 1,Eq.3 的分母为 0,原文未讨论这一情形推断。
第 1 组:r = {1, 0, 0.5, 0},ρ = 1.0,ε = 0.2,β = 0.01。(这组对应 r₅ 滑到 0 时的前 4 个固定 rollout;β 拉大是为了让 KL 项可见。)
均值 = (1+0+0.5+0)/4 = 0.375;离差² = 0.390625 + 0.140625 + 0.015625 + 0.140625 = 0.6875;
总体方差 = 0.6875/4 = 0.171875,总体 std = √0.171875 = 0.414578098794425(四位 0.4146)。
A = (r − 0.375)/0.414578… =
1.5076(1.507556722888818), −0.9045(−0.904534033733291),
0.3015(0.301511344577764), −0.9045(同第 2 项)。
ρ=1.0 时 clip(1.0, 0.8, 1.2)=1.0,L = 1.0·A − 0.01·(1−1−ln1) = A,与交互读数 A=… · L=… 逐位一致。
第 2 组:r = {1, 0, 0.5, 0, 1}(即 4 个固定 rollout + r₅=1,交互的默认视图),ρ = 1.0,ε = 0.2,β = 0.001(默认值;ρ=1 时 KL=0,β 取什么都一样)。
N = 5,均值 = (1+0+0.5+0+1)/5 = 0.5000;离差² = 0.25 + 0.25 + 0 + 0.25 + 0.25 = 1.00;
总体方差 = 1.00/5 = 0.2,总体 std = √0.2 = 0.447213595499958(四位 0.4472)。
A = (r − 0.5)/0.447213… =
1.1180(1.118033988749895), −1.1180(−1.118033988749895),
0.0000(0), −1.1180, 1.1180。
L = A − 0.001·(1−1−ln1) = A。交互默认读数「N=5 · mean 0.5000 · std 0.4472」与五个 slot 的 A/L 都与此逐位一致。
第 3 组(ρ=1.4):r = {1, 0, 0.5, 0},ρ = 1.4,ε = 0.2,β = 0.01。(r₅ 滑到 0、β 拉到 0.01 时的前 4 个固定 rollout。)A 同第 1 组,A 全程保留全精度,只在显示时四舍五入。
ρ=1.4 > 1+ε=1.2,clip(1.4, 0.8, 1.2) = 1.2;KL = 1.4 − 1 − ln 1.4 = 0.06352776337878707(四位 0.0635),β·KL = 0.01 × 0.0635278 = 0.000635278。
对每个 A 先算 min(ρA, clip(ρ)A),再减 β·KL:
L₁:ρA = 1.4×1.507556722888818 = 2.1105794,clip(ρ)A = 1.2×1.507556722888818 = 1.8090681 → min = 1.8090681;
L₁ = 1.8090681 − 0.0006353 = 1.8084。
L₂:ρA = 1.4×(−0.904534033733291) = −1.2663476,clip(ρ)A = 1.2×(−0.904534033733291) = −1.0854408 →
取 min 时负数上界更小,ρA 更小,min = −1.2663476;L₂ = −1.2663476 − 0.0006353 = −1.2670。
L₃:ρA = 1.4×0.301511344577764 = 0.4221159,clip(ρ)A = 1.2×0.301511344577764 = 0.3618136 → min = 0.3618136;
L₃ = 0.3618136 − 0.0006353 = 0.3612。(若误用非裁剪的 1.4A 会得到 0.4215;若再把 0.3015 先截成四位会得到 0.3584,两者都不是交互输出。)
L₄:同 L₂,−1.2670。
交互中把 r₅ 滑到 0、β 拉到 0.01、ρ 切到 1.4,四个 slot 依次显示 A=1.5076 / −0.9045 / 0.3015 / −0.9045,L = 1.8084 / −1.2670 / 0.3612 / −1.2670,与上面逐位一致。
第 4 组(默认视图切到 ρ=1.4):r = {1, 0, 0.5, 0, 1},ρ = 1.4,ε = 0.2,β = 0.01。A 同第 2 组。
ρA = 1.4×1.118033988749895 = 1.5652476,clip(ρ)A = 1.2×1.118033988749895 = 1.3416408 → min = 1.3416408;
L₁ = 1.3416408 − 0.0006353 = 1.3410;L₂ = 1.4×(−1.118033988749895) − 0.0006353 = −1.5659;
L₃(A=0):min(0, 0) − 0.0006353 = −0.0006;L₄ 同 L₂,L₅ 同 L₁。
交互默认切到 ρ=1.4 时五个 slot 即显示这组。
注:标准差口径会明显改变 adv——同样 r={1,0,0.5,0,1},若改用样本 std(÷(N−1),0.5),A 会变成 1.0000 / −1.0000 / 0 / −1.0000 / 1.0000,和交互读数对不上;交互一律用总体 std(÷N),原文 Eq.3 未写明用的是哪一种。
读完这节你应该知道:这套训练要花多少、哪些开销原文没报。
9 个场景(5 个合成 + 4 个真实 MCP server)。batch 128、2 个 epoch、AdamW、lr 5e-6、cosine 衰减(§4.1)。两条合成管线:LLM 模拟工具结果、真实 MCP 执行(§3.2)。全部数据经「人工专家 + DeepSeek-R1」双重校验。
训练数据是 TAU1 的 115 retail + 50 airline 题。25 个 epoch、batch 32、每 query 8 个 rollout、KL β=0.001、序列上限 32768 token、每题最多 30 轮、rollout 温度 1.0(§4.1)。
全部 non-thinking、全走 Function Calling、温度 0.0;TAU1/TAU2 与 ACEBench 用 GPT-4.1 当用户(§4.1),每个测试集重复 4 次取平均。
规模上,一次 RL step 要同时跑 agent 生成和用户模拟器回复,每个 query 8 个 rollout、每个最多 30 轮、32k token; 论文说基于 VeRL 实现并接入「a real, operational database environment」验证工具调用结果,但没有报告训练耗时或 GPU 数, 与 SFT 或离线 RL 的成本对比也未给出。
TAU2 Telecom 的评测指标是 TCR(§4.1):TCR(q) = |{cᵢ ∈ C_q : satisfied(cᵢ)}| / |C_q|,
即满足的验证项占比,从 0.0% 到 100.0%,用来衡量部分完成。注意这是 0–100 的百分比刻度,而其余 TAU 数字是任务成功率刻度,两者不可直接相减比较。
读完这节你应该知道:一条轨迹里谁产出了什么、哪些 token 进了梯度。
读完这节你应该知道:哪些提升是稳的,哪些只出现在个别格子。
柱高按当前标签下的最大值归一。TAU1 Retail(Table 1):MUA-RL-32B 比原始 Qwen3-32B 高 25.0 个百分点(72.6 − 47.6,相对 +52.5%), 比冷启动高 13.7 个百分点(72.6 − 58.9,相对 +23.3%)。 TAU2 Telecom(Table 1):MUA-RL-32B 的任务成功率 28.3 高于原始 Qwen3-32B 的 24.8,但仍低于 GPT-4.1(38.9); 比冷启动高 9.0 个百分点(28.3 − 19.3,相对 +46.6%),比原始模型高 3.5 个百分点(28.3 − 24.8,相对 +14.1%)。
| Model | TAU1 Retail | TAU1 Airline | TAU2 Retail | TAU2 Airline | TAU2 Telecom | Telecom TCR |
|---|---|---|---|---|---|---|
| GPT-4o-2024-11-20 | 63.0 | 45.5 | 67.3 | 46.9 | 24.1 | – |
| GPT-4.1 | 66.5 | 42.5 | 70.2 | 53.0 | 38.9 | – |
| DeepSeek-V3-0324 | 70.4 | 42.4 | 64.7 | 37.0 | 32.9 | – |
| Qwen3-235B-A22B | 65.2 | 32.0 | 64.9 | 36.0 | 24.6 | – |
| Qwen3-8B | 40.0 | 11.0 | 41.0 | 12.5 | 19.1 | 22.9% |
| Qwen3-8B Cold-start | 36.7 | 12.0 | 31.4 | 16.0 | 9.0 | 12.1% |
| MUA-RL-8B | 56.5 | 29.5 | 49.8 | 19.0 | 21.8 | 25.2% |
| Qwen3-14B | 46.9 | 13.0 | 43.1 | 14.8 | 29.9 | 46.6% |
| Qwen3-14B Cold-start | 50.8 | 23.0 | 53.7 | 24.0 | 23.5 | 32.9% |
| MUA-RL-14B | 65.9 | 42.0 | 66.0 | 38.0 | 33.4 | 54.3% |
| Qwen3-32B | 47.6 | 18.5 | 50.2 | 23.5 | 24.8 | 23.7% |
| Qwen3-32B Cold-start | 58.9 | 36.0 | 58.2 | 31.1 | 19.3 | 21.6% |
| MUA-RL-32B | 72.6 | 46.5 | 67.3 | 45.4 | 28.3 | 45.1% |
高亮行标的是 MUA-RL 系列,不代表每格都是全表最高:TAU2 Retail 与 TAU2 Telecom 的最高值属于 GPT-4o/GPT-4.1。Table 1 中的 Qwen3-30B-A3B、Qwen3-4B 两行未转录。
| Model | BFCL Base | Miss Func | Miss Param | Long Ctx | BFCL Overall | ACEBe Multi Turn | ACEBe Multi Step | ACEBe Overall |
|---|---|---|---|---|---|---|---|---|
| GPT-4.1 | 48.0 | 34.0 | 35.0 | 45.5 | 40.5 | 83.3 | 90.0 | 86.7 |
| DeepSeek-V3-0324 | 41.0 | 21.0 | 23.0 | 34.5 | 29.8 | 73.3 | 75.0 | 74.2 |
| Qwen3-8B | 20.0 | 4.0 | 13.0 | 10.0 | 11.8 | 33.3 | 45.0 | 39.2 |
| Qwen3-8B Cold-start | 24.0 | 11.0 | 16.5 | 10.0 | 15.4 | 36.7 | 55.0 | 45.9 |
| MUA-RL-8B | 21.0 | 11.5 | 15.0 | 11.0 | 14.6 | 46.7 | 60.0 | 53.3 |
| Qwen3-32B | 29.5 | 11.0 | 20.0 | 18.0 | 19.6 | 60.0 | 85.0 | 72.5 |
| Qwen3-32B Cold-start | 35.0 | 21.0 | 28.5 | 19.5 | 26.0 | 53.3 | 100.0 | 76.6 |
| MUA-RL-32B | 42.0 | 20.0 | 30.0 | 21.5 | 28.4 | 70.0 | 95.0 | 82.5 |
为控制篇幅只转录 8B/32B 两组及两个强基线;14B 组与 Qwen3-30B-A3B、Qwen3-235B-A22B 行未转录(原文 Table 2 可查)。
Qwen3-32B 在 TAU2 Telecom 从 24.8 掉到冷启动的 19.3(−5.5 个百分点),14B 从 29.9 掉到 23.5(−6.4);8B 也从 19.1 掉到 9.0(−10.1)。 作者归因于冷启动数据带来了「domain-specific patterns and biases」,在训练分布外难以泛化。MUA-RL 之后三个规模都超过冷启动,32B 达 28.3(比冷启动 +9.0 个百分点)。
MUA-RL-8B 的 BFCL-V3 Overall 是 14.6,低于冷启动的 15.4(−0.8 个百分点),也低于 32B 冷启动的 26.0。 而在 ACEBench Agent 上 8B 从冷启动 45.9 升到 53.3(+7.4 个百分点)。论文未专门讨论 8B 在 BFCL 上的这一回退。
| Model | TAU2 Retail | TAU2 Airline | TAU2 Telecom | BFCL Base | BFCL Overall | ACEBe Overall |
|---|---|---|---|---|---|---|
| Qwen3-32B | 50.2 | 23.5 | 24.8 | 29.5 | 19.6 | 72.5 |
| + MUA-RL w/o RL | 58.2 (↑8.0, ↓9.1) | 31.1 (↑7.6, ↓14.3) | 19.3 (↓5.5, ↓9.0) | 35.0 (↑5.5, ↓7.0) | 26.0 (↑6.4, ↓2.4) | 76.6 (↑4.1, ↓5.9) |
| + MUA-RL w/o cold-start | 61.6 (↑11.4, ↓5.7) | 41.0 (↑17.5, ↓4.4) | 28.1 (↑3.3, ↓0.2) | 29.5 (0.0, ↓12.5) | 19.3 (↓0.3, ↓9.1) | 82.5 (↑10.0, 0.0) |
| MUA-RL-32B | 67.3 | 45.4 | 28.3 | 42.0 | 28.4 | 82.5 |
去掉任意一阶段都会掉分:w/o cold-start 在 TAU2 Retail 拿 61.6(比完整模型低 5.7),在 BFCL Overall 只有 19.3(比 Qwen3-32B 基线还低 0.3); w/o RL(即只冷启动)在 Table 3 所列各项均低于完整模型。正文把这两者概括为「eliminating any stage leads to notable performance degradation」。 值得注意的是 Table 3 里 w/o cold-start 的 BFCL Overall(19.3)甚至低于原始基线(19.6),正文没有单独讨论。
读完这节你应该知道:什么条件下结果可以照搬,什么条件下要打问号。