CAST:教 4B 小模型当"质检员",工具调用智能体的可靠性反超 120B 大模型

跑过工具调用 Agent 的人大概都遇到过这种心梗时刻:客服 Agent 处理一百次退款,九十九次都正常,就那一次把别人的订单给退了——钱打出去,收不回来。单次成功率看起来挺漂亮,但这种"偶发但不可逆"的错误,在真实业务里就是事故。

更麻烦的是,这类错误很难抓。你让 GPT-4.1 这种级别的模型去审查 Agent 的每一步动作,它自己也说不清楚这步到底错在哪——这篇论文给出的数据挺扎心:GPT-4.1 当批判者时,把 46.8% 的正确动作误标成了有问题的。批判者比被批判的还不靠谱,这事儿就没法办了。

CAST(Critique-Aware Supervision)这篇论文的思路是:别指望通用大模型天生会批判,把批判能力当成一项需要专门训练的技能。他们把稀疏的任务成败信号,转化成逐动作的结构化批判理由,先训一个专门的 Critic 模型,再用它去生成带批判反馈的训练数据,微调策略模型。结果有点反直觉:4B/8B 的小模型,在跨多次执行的可靠性指标 pass^4 上,反超了 32B 的 Qwen3,甚至在 Retail 任务上比 GPT-OSS-120B 高出 10 个点以上。

核心摘要:长时程工具调用场景中,单个错误动作(比如退错订单)会造成不可逆失败,而现有方案要么靠 prompt 堆批判 Agent(贵且不稳),要么靠 RL 刷单次成功率(不管可靠性)。CAST 的做法是用多智能体验证流水线给每个动作生成"为什么对/为什么错"的结构化理由,训练专门的 CAST-Critic,再用它标注的 critique-enriched 轨迹做 SFT。只在 Retail 一个域上训练,Qwen3-4B 策略模型的 pass^4 从 6.1% 涨到 16.5%,比最优的 Qwen3-32B 设置还高 3.4 个点;域外泛化到 Telehealth 上 pass^4 比 GPT-OSS-120B 高 9 个点。我的判断:这不是底层算法突破,但"批判监督的信号工程"做得很扎实,是低成本提升 Agent 可靠性的实用路径。

论文信息

  • 标题:CAST: Critique-Aware Supervision for Training Reliable Long-Horizon Tool-Calling Agents
  • 链接:https://arxiv.org/abs/2608.30147 (EMNLP 2026 Main 录用)
  • 作者:Amir Saeidi、Zehua Zhang(共同一作)、Rishitosh Singh、Naman Ahuja、Vivek Gupta、Ali Payani、Gaowen Liu、Jayanth Srinivasa、Chitta Baral
  • 机构:Arizona State University、Cisco Research

为什么"可靠性"需要单独拎出来讲

先厘清一个概念,这篇论文全篇都围绕它:pass^k

我们平时看的 pass@1 或成功率,衡量的是"平均下来做得多好"。但 Agent 部署后面对的是重复执行——同一个客服任务每天跑几百次。pass^k 衡量的是:跑 n 次,能不能稳定地成功 k 次。计算方式是

\[\text{pass}^k = \mathbb{E}_{\text{task}}\left[\frac{\binom{c}{k}}{\binom{n}{k}}\right]\]

c 是 n 次执行中成功的次数。这个指标对"偶发失败"极其敏感:一个 pass^1 有 35% 的 Agent,pass^4 可能只剩 13%(Qwen3-32B 在 Retail 上就是这个数)。也就是说让它独立处理四个类似工单,全部办成的概率只有一成出头。

这就是论文盯上的痛点:平均表现和稳定表现之间隔着一道鸿沟,而现有的优化方法大多只在填前者。GRPO 这类 RL 方法优化的是轨迹级期望奖励 \(\max_{\phi}\mathbb{E}_{\tau\sim\pi_{\phi}}[Y(\tau)]\),对"偶发但致命"的中间错误动作几乎没有分辨能力——轨迹失败了,是哪一步错的呢?奖励太稀疏,信号到不了动作级别。

那加个批判 Agent 在执行前把错误动作拦下来呢?思路没问题,但论文用实验说明了为什么这条路也走不通:直接用现成大模型当 Critic,幻觉式误报太多。GPT-4.1 把将近一半的正确动作标成有问题,策略模型被这种"狼来了"式的反馈搞得束手束脚,性能不升反降(后面 Table 3 的数据很能说明问题)。

所以问题就变成了:怎么造一个校准良好的批判者

CAST 的三段式流水线

一句话概括核心思路:用一个带"上帝视角"的多智能体标注系统生产动作级批判理由,蒸馏出一个小 Critic,再让 Critic 去给策略模型的训练数据"加料"。

CAST 框架总览

Figure 2:CAST 完整流水线。左起——经验收集阶段,teacher 策略在同一批任务上重复采样,产出成功与失败混合的轨迹(图中示例是一次换货任务,Agent 在没要用户确认的情况下直接执行了换货,且捏造的 new_item_ids 在工具返回里根本不存在,轨迹奖励为 0);中间的标注机制由 Tool Extractor、Rule Extractor 两个检索 Agent 加上 Domain Checker、Tool Call Checker、Hallucination Checker 三个检查 Agent 组成,Orchestrator 汇总后给出结构化裁决(图中案例的裁决是:工具选对了,但跳过了强制确认步骤且编造了参数,动作无效);右侧 CAST 框架本体——先用标注数据 SFT 出 CAST-Critic(第 1 步),再让 Critic 参与轨迹收集、对候选动作做执行前验证(第 2 步),最后用成功的 critique-enriched 轨迹 SFT 出 CAST-Actor(第 3 步)。

拆开看三个阶段:

阶段一,轨迹收集。 拿一批训练任务(论文里用的是 τ-Bench Retail 官方训练集的 500 个任务),用 teacher 策略(Qwen3-32B 跑 ReAct)每个任务采样 5 条轨迹,temperature 0.7,攒出一个成败混合的经验池,共 2500 条经验。用户模拟器是 Qwen2.5-72B-Instruct。

阶段二,动作级标注。 这是整个方法最重的部分。对轨迹里每个动作 \(a_t\),一个多智能体验证系统输出结构化理由 \((e_t, y_t)\)——\(y_t\) 是这个动作在当前上下文下是否有效,\(e_t\) 是解释。动作失败被分解成三类:

失败类型 检查内容
幻觉(hallucination) 捏造参数、无依据假设、与观察状态不一致
领域违规(domain violation) 违反系统规则、领域策略(比如"执行不可逆操作前必须取得用户明确确认")
工具误用(wrong tool usage) 当前上下文下选错了工具

最终标签是三类检查的合取:\(y_t=\mathbf{1}[\neg f_{\text{hall}}(c_t)\wedge\neg f_{\text{domain}}(c_t)\wedge\neg f_{\text{tool}}(c_t)]\)。有一个设计我觉得很关键:标注时验证系统能看到特权信息 \(\Omega\)(比如 ground-truth 动作轨迹),但学生 Critic 训练时只看局部上下文 \(c_t=(h_t,o_t,a_t,\mathcal{K})\)。这相当于老师批改作业时可以翻答案,但学生考试时只能靠自己——保证了部署时 Critic 不需要任何未来信息,可以在动作执行前实时拦截。标注 Agent 用的是 Qwen3.5-27B 和 Qwen3.5-122B-A10B。

阶段三,训 Critic 再训 Policy。 Critic 的训练目标是理由生成损失加验证分类损失的加权和:

\[\mathcal{L}_{\text{critique}}(\theta)=\lambda_{\text{exp}}\mathcal{L}_{\text{exp}}(\theta)+\lambda_{\text{ver}}\mathcal{L}_{\text{ver}}(\theta)\]

注意这里批判学习和策略优化是解耦的——Critic 单独训,训好了冻结,再去干活。干活的方式是:策略模型提出候选动作 \(\bar{a}_t\),Critic 验证,拒绝了就附上批判反馈让策略修正,最终接受的动作连同批判痕迹一起写进历史 \(\tilde{h}_{t+1}=h_t\oplus(a_t,\hat{e}_t,\hat{y}_t)\)。最后只保留成功轨迹,对策略做标准 SFT:

\[\mathcal{L}_{\text{policy}}(\phi)=-\sum_{\tau\in\mathcal{B}_C^{+}}\sum_{t=1}^{T}\log\pi_\phi(a_t\mid\tilde{h}_t,o_t,\mathcal{K})\]

部署时有两种姿势:Policy 配 Critic 做显式的执行前验证,或者 Policy 单跑(批判反馈已经内化进训练数据里了)。

说实话,看到这里我的第一反应是:这不就是 RFT(rejection fine-tuning)加了个 Critic 过滤器吗?但细想差别在信号密度上——RFT 只用"这条轨迹成没成",CAST 的成功轨迹里每一步都浸过批判反馈,策略学到的是"什么样的动作会被拦、被拦了怎么改"。后面消融里 RFT 基线的对比数据,基本验证了这个差别是真实存在的。

实验:4B 模型可靠性反超 32B

实验设置先交代清楚。基座是 Qwen3-4B 和 Qwen3-8B,只在 τ-Bench Retail 上训练,Airline(τ-Bench)、Telecom 和 Telehealth(τ-Trait)全部是域外泛化。所有任务跑 8 次(n=8)计算 pass^k,训练用 4 张 H100,lr 5e-6,3 个 epoch。

主实验(Table 1,各环境 pass^1 / pass^3 / pass^4):

模型 Retail(域内) Airline(域外) Telecom(域外) Telehealth(域外)
Qwen3-32B ReAct 33.0 / 11.7 / 8.2 29.6 / 17.2 / 15.2 36.1 / 20.8 / 16.7 28.0 / 9.0 / 6.0
Qwen3-32B FC 35.0 / 15.0 / 13.1 17.6 / 12.0 / 10.8 32.0 / 21.0 / 18.0 42.0 / 37.0 / 35.0
Qwen3-32B Thinking 34.1 / 11.8 / 8.2 43.0 / 20.5 / 16.0 36.7 / 15.0 / 12.2 29.0 / 10.5 / 7.0
Base-4B 7.2 / 6.3 / 6.1 32.5 / 25.5 / 24.0 25.0 / 12.5 / 11.1 22.5 / 12.5 / 10.0
RFT-4B 27.6 / 14.3 / 12.2 13.5 / 8.5 / 8.0 31.2 / 19.4 / 16.6 30.0 / 22.5 / 20.0
CAST-Policy-4B 26.1 / 17.4 / 16.5 19.0 / 12.5 / 12.0 26.4 / 16.7 / 16.7 33.8 / 30.0 / 30.0
CAST-Policy-8B 30.0 / 16.7 / 14.8 9.5 / 6.5 / 6.0 30.6 / 12.5 / 11.1 37.5 / 30.0 / 30.0
CAST-Policy-8B + Critic-8B 29.8 / 14.6 / 13.0 20.5 / 13.0 / 12.0 38.9 / 27.8 / 27.8 32.5 / 27.5 / 25.0

几个值得咀嚼的点:

1. pass^1 和 pass^4 确实是两个物种。 Retail 域内,CAST-Policy-4B 的 pass^1(26.1%)还不如 RFT-4B(27.6%)和 Qwen3-32B-FC(35.0%),但 pass^4 来到 16.5%——比 RFT-4B 高 4.3 个点,比所有 Qwen3-32B 配置里最高的 13.1% 还高 3.4 个点。一个 4B 模型的四次全中率超过 32B 模型,这在直觉上是说不通的,除非批判训练真的改变了错误分布的形状:不是把平均水位抬高,而是把方差压下去了。

2. 域外泛化是真有,但不均匀。 Telecom 上 CAST-Policy-8B+Critic-8B 拿到 38.9/27.8/27.8,超过所有 32B 配置;Telehealth 上 pass^4 达到 30.0%,比 GPT-OSS-120B 的 21.0% 高 9 个点。但 Airline 上一众微调模型(包括 RFT)全都跑不过 Base-4B 的 24.0% pass^4——说实话这个数字有点尴尬,说明 Retail 上训出来的东西在 Airline 域甚至起了负作用,论文没有给出很令人信服的解释。

3. Policy 单跑 vs Policy+Critic 各有千秋。 4B 上 Policy 单跑 pass^4 更高(16.5 vs 9.6),8B 上 Critic 加持在 Telecom 等域外环境明显更强。也就是说批判能力一部分内化了,但显式 Critic 在分布外仍然提供了额外保护——这个发现对工程部署挺有指导意义:域内任务可以省掉 Critic 的推理开销,域外任务建议带上。

关键消融:Critic 的校准才是胜负手

这篇论文最值钱的实验,我个人觉得是 Table 3 和混淆矩阵这组分析——它回答了"为什么不能直接用现成大模型当 Critic"。

固定 Actor 为 Qwen3-32B,只换 Critic:

Critic 配置 平均 pass^1 平均 pass^4
无 Critic(ReAct) 31.7% 11.5%
+ GPT-4.1 批判 22.8% 6.0%
+ Qwen3-235B 批判 24.1% 3.4%
+ Qwen2.5-72B 批判 17.9% 6.3%
+ CAST-Critic-4B 31.8% 15.9%
+ CAST-Critic-8B 30.4% 19.5%

看到这组数我愣了一下。GPT-4.1、235B 这种级别的模型当 Critic,不但没帮忙,反而把 Actor 拖垮了——pass^4 从 11.5% 掉到 6.0% 甚至 3.4%。批判 Agent 越强越好的直觉,在这里完全失效。

原因在混淆矩阵里:

Critic 混淆矩阵对比

Figure 4:三个 Critic 的裁决混淆矩阵(横轴是动作真实对错,纵轴是 Critic 是否标记)。GPT-4.1-Critic 把 46.8% 的正确动作误标为有问题,正确动作放行率只有 24.0%——这是一个严重"过度悲观"的批判者,策略模型被它搞得动辄得咎。CAST-Critic-4B/8B 的误标率压到 13.6%/11.4%,正确动作放行率 62.2%/64.7%,同时对错误动作的检出能力(16.1%/15.4% vs 20.5%)并没有损失太多。8B 版本在两个维度上都更优。

这就是"校准"的含义:好 Critic 不是抓错最多的,而是误报和漏报平衡得最好的。一个把一半正确动作都拦下来的 Critic,其实是在给策略模型喂噪声监督。

还有几个零散但有分量的发现:

  • 批判标记率 33.2%:CAST 的标注流水线只把约三分之一的动作判为不合适,说明它不是在无脑挑刺。
  • 抵抗率减半:微调后的策略对 Critic 反馈的"抵抗"(被拒绝后仍坚持原动作)约为未微调版本的一半——策略真的学会了信任批判信号。
  • 纠正成功率 82–88%:CAST Critic 的反馈在三类错误上都能让策略高概率改对,而 GPT-4.1 的反馈质量明显更差,尤其在幻觉检测上。
  • 对比 agentic 框架:CAST-Critic-8B 比 PALADIN 在 pass^1/3/4 上分别高 20.9/15.3/14.9 个点,比 EvoTool 高 2.6/4.5/4.3 个点——而且 PALADIN、IRMA、FAMA 这些框架用的是 Qwen2.5-72B 级别的 helper agents,CAST 只用 4B/8B 的 Critic,token 开销还在同一水平。
  • 验证轮数不是越多越好:3-4 轮 refinement 是甜点区,轮数再多 token 涨了可靠性反而回落。

我的判断

这篇论文最打动我的不是方法新颖性——说到底,"训一个验证器再拿它过滤训练数据"这个范式,从过程奖励模型(PRM)到各种 critic-as-judge 的工作里都能看到影子。CAST 真正的贡献在于把批判信号的工程质量做上去了:三类错误的分解、特权信息只在标注侧可见的多智能体流水线、以及用混淆矩阵证明"校准比能力重要"这组实验,每一步都踩在了实际的坑上。

尤其"GPT-4.1 当 Critic 反而帮倒忙"这个发现,值得所有在做 agentic 验证的人看看。我见过不少团队默认"挂个强模型做 reviewer 总没坏处",这篇论文用数据说明:没校准过的批判就是噪声,而且是会拖垮策略的那种噪声。

问题也得说清楚。其一,整个训练只做了 SFT,策略从未在 Critic 的 on-policy 反馈里直接探索过——作者自己在 Limitations 里也承认了,把 Critic 当 RL 的反馈模型是自然的下一步,但这同时说明目前的天花板可能就是"SFT 能到达的地方"。其二,Critic 只验证当前动作,不看下游后果,长时程任务里"这步没错但把后面的路堵死了"这类失败它抓不到。其三,Airline 域上微调模型集体跑不过 Base-4B 这个反常现象,论文没给解释,让人对泛化的稳定性多少有点保留。另外 τ-Trait 的 Telecom 只有 18 个任务、Telehealth 只有 20 个,样本量偏小,pass^k 的方差恐怕不小,读者看这些数字时最好打点折扣。

工程上的启发是直接的:如果你的 Agent 部署场景对"偶发失败"敏感(钱、权限、不可逆操作),与其卷单次成功率,不如先想清楚怎么得到校准过的动作级批判信号——而且这件事不需要大模型,一个精心训练的 4B Critic 就够。批判能力是可以蒸馏的,这大概是这篇论文给行业最实在的一句话。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我