首页 › ai-agents › 工具过调67%:必要性校准双态塌方

给了锤子,看什么都像钉子

工具调用(Tool Use / Function Calling)的能力评测,长期被压缩成一个维度:调对了没有、参数填对没有。BFCL、API-Bank、τ-bench 这类榜单横评的,几乎都是"正确率"——给定了必须调用工具的场景,模型能不能选出对的工具、吐出合法的 JSON。可真实生产环境里,决定一个 Agent 靠不靠谱的,往往不是"会不会用锤子",而是"该不该用锤子"。

这一轮我们聚焦工具调用里最被低估、却直接决定成本与正确率的"必要性校准"问题。它有两种对称的崩塌:

本文基于 When2Call(NAACL 2025)、SMARTCAL(arXiv 2412.12151)与 BFCL v2 的公开实测数据,拆解这两态塌方的成因、量级与缓解手段。


一、必要性校准双态:一张对照表看清塌方

下表数据汇总自 NVIDIA When2Call 官方 README 的复现结果。其中"过调幻觉率"指完全不提供工具时仍生成工具调用的比例(越低越好),"无关识别率"取自 BFCL Irrelevance 子集(越高越好),F1 为 When2Call 综合决策分。

模型 过调幻觉率(无工具仍调)↓ 无关识别率(该不调时正确)↑ When2Call F1 ↑ 参数规模
Llama 3.1 8B Instruct 67% 40.0% 16.6 8B
Llama 3.1 70B Instruct 57% 36.5% 37.8 70B
Llama 3.2 3B Instruct 52% 46.6% 17.9 3B
Qwen 2.5 7B Instruct 21% 51.4% 32.0 7B
Qwen 2.5 14B Instruct 21% 64.7% 36.2 14B
xLAM 8x22B R 9.0% 75.2% 34.3 8×22B
GPT-4o 26% 83.8% 61.3 —
GPT-4o-mini 41% 80.7% 52.9 —
GPT-4-Turbo-04-09 22% 35.6% 64.6 —
MNM 8B(无训练) 19% 36.3% 31.9 8B
MNM 8B + RPO 训练 1.2% 78.1% 52.4 8B

这张表暴露出三个反直觉的结论,是后续分析的锚点。


二、过调态:参数知识够用,模型却非要调

When2Call 的设计里,有一类问题的"正确答案"是 direct——直接用模型自身知识回答即可,根本不需要工具。可绝大多数模型的默认行为是:只要系统提示里挂了工具描述,就倾向于"用一下"。

最极端的是 Llama 3.1 8B,无工具幻觉率 67%。这意味着哪怕你一个工具都没传,它也有三分之二的概率在回复里硬塞一个 <TOOLCALL> 块。Llama 3.1 70B 这个比例降到 57%,但依然过半。相比之下,专为函数调用训练的 xLAM 8x22B 把这一数字压到 9.0%——证明过调不是大模型的"本性",而是训练目标的偏向:当后训练数据里 90% 以上的样本都是"看到问题就调工具",模型就学会了"调用即默认"。

过调的直接代价是钱与延迟。每一次幻觉调用,都会触发一次真实 API(可能计费、可能限流)、一次工具结果的回流与一次额外的推理轮次。SMARTCAL 把这种现象命名为 "tool-abuse"(工具滥用),并指出其根源是模型的过度自信(overconfidence)——它对自己"该调用"的判断置信度过高,从不给自己留 abstain(弃权)的余地。SMARTCAL 的实测显示,这一问题与模型能力无关:强模型和弱模型都会过度自信地滥用工具。

代码层面,过调往往藏在一个不起眼的系统提示句子里:

# 典型的"鼓励过调"系统提示(问题源头)
You are a helpful assistant with access to the following tools.
Use them whenever possible to give accurate answers.
tools: [search_web, get_weather, ...]

"whenever possible" 这五个字,就是把模型推向过调的扳机。


三、漏调态:该认输时不认,该不调时硬调

漏调的对称面,是模型缺乏"识别无关"与"承认不能"的能力。When2Call 的四个标准答案类别——direct(直接答)、tool_call(调工具)、request_for_info(追问缺失参数)、cannot_answer(承认答不了)——本质上是一个四分类校准问题。

GPT-4-Turbo 是最讽刺的样本:它的 When2Call F1 高达 64.6,是闭源模型里最高的,但 BFCL Irrelevance 准确率只有 35.6%——也就是说,它"看起来特别会调工具",却分不清什么时候不该调。Llama 3.1 70B 同样,规模从 8B 涨到 70B,When2Call F1 从 16.6 跳到 37.8,但无关识别率反而从 40.0% 跌到 36.5%。能力上去了,判断却塌了。

这就是必要性校准的核心矛盾:"会调"和"知道何时调"是两个正交的能力。一个在 BFCL Live AST 榜单上刷到 74.7% AST 准确率的 xLAM 8x22B,无关识别率是 75.2%,两者并不天然同步。许多团队拿 BFCL Overall Accuracy 选型,以为分数高就代表工具用得好,结果上线后被"无关问题乱调一通"的成本拖垮——这正是 futureagi 在《Evaluating Tool-Calling Agents 2026》里强调的:"tool-calling eval 是四个 eval 问题叠在一起",其中"必要性判断"是最容易被遗漏的那一个。

漏调态还包含一种隐蔽的"假追问":当问题确实需要工具、但关键参数缺失时,正确答案是 request_for_info(追问)。弱模型倾向于凭空捏造参数硬调(把省略的 held_out_param 随便填一个默认值),而不是停下来问用户。When2Call 的训练集专门构造了这类样本——抽掉一个必要参数,看模型是追问还是瞎填。


四、双态同源:缺少 abstain 的"决策边界"

把过调和漏调并到一起看,根因只有一个:模型的决策空间里没有一条干净的"不调用"边界。

理想工具调用的判断,本质是一个三岔口:

flowchart TD
    Q[用户提问] --> D{决策门}
    D -->|参数知识充足| D1[direct 直接答<br/>不用工具]
    D -->|需要外部能力| C{有匹配工具吗?}
    D -->|参数缺失| R[request_for_info 追问]
    C -->|有 & 参数齐| T[tool_call 调用]
    C -->|有但参数缺| R
    C -->|没有| NC[cannot_answer 承认不能]

    D1 -.过调幻觉.-> T
    NC -.过调幻觉.-> T
    T -.漏调.-> D1

    classDef tax fill:#fecaca,stroke:#b91c1c,color:#7f1d1d
    classDef ok fill:#dcfce7,stroke:#15803d,color:#14532d
    class T,D1,NC,R ok

图中虚线就是两类税:上方虚线是过调(本该 direct/不能答却硬调),下方虚线是漏调(本该调却用知识硬答)。两条虚线共同说明——模型把"调用"当成了稳态,把"不调用"当成了需要主动争取的例外。

SMARTCAL 用期望校准误差(ECE)量化这种偏差。它的核心发现是:模型对自己"该不该调工具"的判断置信度系统性偏高,即"我很确定要调",实际却经常不该调。SMARTCAL 通过一个自感知的校准层,在不改底座的前提下,平均把 QA 性能提升 8.6%、把 ECE 降低 21.6%。这组数字反过来印证了:必要性校准是一个可独立优化的环节,而不是必须靠堆参数解决。


五、量级反差:67% 与 1.2% 之间,差的是训练目标

回到那张表,最有说服力的不是闭源与开源的差距,而是 MNM 8B 这一行的前后对比:

同一个 8B 底座,过调率从 19% 砍到 1.2%(降 16 倍),无关识别率翻倍。RPO 做的事其实很朴素——它利用 When2Call 多选题的形式,构造偏好对:把"正确类别"作为 chosen,把"错误类别(通常是 tool_call)"作为 rejected,让模型学会在"该 direct"时拒绝生成调用。

# When2Call 偏好训练样本(NVIDIA/When2Call)
{
  "tools": [{"name": "get_company_by_domain", ...}],
  "messages": [{"role": "user", "content": "Fetch company details."}],
  "chosen_response": "To provide company details, could you specify the domain?",
  "rejected_response": "<TOOLCALL>[{\"name\": \"get_company_by_domain\", \"arguments\": {\"domain\": \"www.apple.com\"}}]</TOOLCALL>"
}

关键启示:这 67%→1.2% 的跃迁,不是靠换更大的模型,而是靠补全一类训练数据。当前绝大多数模型的后训练语料里,"调用"样本严重过采样,"不调用 / 追问 / 拒答"样本稀缺。校准税的根,长在数据分布里。这也是为什么 When2Call 论文强调——传统 SFT 只带来温和提升,而偏好优化(DPO/RPO)"带来的收益显著更大",因为它直接重塑了"调用 vs 不调用"的决策边界。


六、框架层的兜底:选择性调用与硬约束

既然模型层的校准难以一蹴而就,框架层能否兜住双态税?实测表明,有限但有效,且代价分明。

1. 选择性调用(Selective Tool Use)。 在工具调用前插一个轻量"必要性判断"步骤——用一个便宜的小模型或规则判断"这个问题是否真的需要工具"。SMARTCAL 的做法就是这套:先估置信度,低于阈值就走 direct / request_for_info,高于阈值才放行调用。代价是多一次推理,但能挡掉大部分过调。这与"懒加载发现税"里提到的"先判断再暴露工具"是同一种思路的镜像。

2. 硬约束 abstain 路径。 在系统提示里强制写入一条 irrelevant / cannot_answer 的显式出口,并给出反例。When2Call 评测脚本里,functionary / hermes / qwen2.5 等不同 prompt 模板,对同一底座能打出差出十几个点的无关识别率——模板设计本身就是一种校准手段。把"不要调用"作为一等公民写进提示,比写一百句"尽量准确"管用。

3. 成本门控。 给每个工具调用附一个预估成本,过调的代价被显式记账后,编排器可以拦截"收益 < 成本"的调用。这是过调税最直接的财务兜底——SMARTCAL 指出 tool-abuse 的危害之一就是"威胁模型可信度",而成本门控恰好把这种隐性威胁显性化。

flowchart LR
    subgraph 防线[三层兜底]
        A[1. 选择性判断<br/>轻量模型估置信度] --> B{置信度≥阈值?}
        B -- 否 --> X[direct / 追问 / 拒答]
        B -- 是 --> C[2. 硬约束出口<br/>提示写入 abstain 路径]
        C --> D{工具匹配?}
        D -- 无关 --> X
        D -- 匹配 --> E[3. 成本门控<br/>收益 vs 成本]
        E --> F[放行调用]
    end
    X --> G[✓ 挡掉过调]
    F --> H[✓ 真实需求]

但要注意兜底的边界:框架层能降低假阳性(不该调却调),却很难救假阴性(该调却没调)——后者需要的是模型本身对工具能力的理解,提示工程难以补足。这也是为什么校准税最终还是要回到训练数据这条主路上。


七、过调即烧钱:一份必要性账本

把双态塌方翻译成钱,过调是唯一一个只增成本、不增正确率的失败模式。漏调至少省了一次调用(虽然牺牲了正确性),而过调是纯粹的白烧。

假设一个 Agent 每天处理 10 万次对话,其中 40% 的问题本不需要工具(这是客服、问答类场景的常见比例)。若底座是 Llama 3.1 8B 量级,过调幻觉率 67%,意味着每天有约 2.68 万次纯幻觉调用。按每次工具调用平均触发一次外部 API(0.005 美元)+ 一次回流推理(0.01 美元)算:

26,800 × $0.015 ≈ $402/天,约 $12,060/月 的纯浪费。

把过调率从 67% 压到 1.2%(MNM 8B + RPO 的水平),这笔账直接掉到 $270/月。校准不是性能优化,是成本优化。 这也是为什么 2026 年越来越多团队在 BFCL Overall 之外,开始单独跟踪"工具调用必要率(Tool Call Necessity Rate)"和"无关拦截率"两个指标——前者压成本,后者保正确率。

SMARTCAL 给出的另一个账本维度是 ECE:过调带来的不只是钱,还有可信度的系统性透支。用户每次看到 Agent 对着无关问题调一个莫名其妙的外部接口,对系统的信任都会下降一档,而这种信任损耗几乎无法用"调用准确率"挽回。


八、选型与缓解:给不同场景的处方

基于以上实测,给出分场景建议:

场景特征 主要风险 推荐策略
工具丰富、问题边界模糊(如通用助手) 过调为主 选 xLAM/Qwen2.5 系(幻觉率 9%–21%),叠加选择性调用门控
强调正确率、可接受追问(如企业 RAG) 漏调为主 选 GPT-4o(无关识别 83.8%),提示里强制 request_for_info 出口
成本敏感、高并发 过调即烧钱 必须做成本门控 + 轻量必要性判断,避免 GPT-4o-mini(幻觉 41%)
自部署、可微调 双态都要治 用 When2Call 偏好数据做 RPO,过调可降一个数量级
闭源 API、无法训练 靠框架兜底 三层防线(选择性判断 + 硬约束 + 成本门控)全开

一句话总结本轮结论:工具调用能力的真正分水岭,不在"调得多准",而在"知道何时不调"。 BFCL 榜单上 74.7% AST 准确率的模型,可能在 67% 的时候对着空气挥锤子。必要性校准双态——过调与漏调——是工具使用评测里被忽视最久、却最该被单独立项的两个指标。When2Call 把它们从综合分里拆出来,SMARTCAL 给出校准层的解法,而 RPO 训练证明了 67%→1.2% 的跃迁可以靠数据而非参数实现。下一轮工具评测,若还只看"调对了没有",就等于继续为这 67% 的幻觉买单。


参考来源

  1. When2Call: When (not) to Call Tools(NVIDIA,NAACL 2025,arXiv:2504.18851) — 提出评测"何时(不)调用工具"决策的基准,含 direct/tool_call/request_for_info/cannot_answer 四分类,并给出 RPO 偏好训练方案。本文 67%→1.2%、过调幻觉率、无关识别率等核心数据来源。
  2. NVIDIA/When2Call(GitHub 数据集与复现结果) — 公开 Llama/Qwen/xLAM/GPT-4o 系列在 When2Call、BFCL Live AST、BFCL Irrelevance 上的实测分数表,本文对比表格与 MNM 前后对比数据来源。
  3. SMARTCAL: An Approach to Self-Aware Tool-Use Evaluation and Calibration(arXiv:2412.12151) — 首次系统命名 LLM 的 "tool-abuse"(工具滥用与过度自信)行为,提出校准层方案,QA +8.6%、ECE -21.6%,本文校准税与 overconfidence 论述来源。
  4. Evaluating Tool-Calling Agents 2026(Future AGI) — 指出"tool-calling eval 是四个 eval 问题叠在一起",强调必要性判断是被遗漏的一环,本文选型框架参考。
  5. Tool Use and Function Calling in AI Agents — Standards, Benchmarks(Zylos.ai) — 2026 年各主流 LLM 工具调用标准与基准综述,本文行业现状与指标演进背景来源。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入