工具调用评测棋盘:BFCL 四象限 × 四层评测栈 × 线上真实错误率
光看榜单分数,定位不了错在哪。BFCL 四象限画出函数调用能力的版图,四层评测栈把选工具 → 填参数 → 排顺序 → 办成事逐层把关,线上真实错误率再添一条证据:同一模型换个供应商,可靠性都不一样。把评测当棋盘拆开看,才能从分数低走到该修哪一层。
「我的 agent 又挂了」。这句话背后至少有三种完全不同的病:模型选错了工具、harness 解析崩了、供应商限流了。药方各不相同。
评测的价值,就是把这句含混的抱怨拆成可定位的事实:Berkeley Function-Calling Leaderboard 摊开函数调用能力的四象限棋盘,四层评测栈接着回答错在哪层、该动哪个零件。
一、BFCL 四象限:先看懂榜单在测什么
讲义的评测板块直接引用 BFCL(slides L2 p.52-57)。这个持续更新的函数调用榜单已迭代到 V4,四个象限各管一类考法:
| 象限 | 子类 | 考什么 |
|---|---|---|
| single-turn | simple / multiple / parallel / multiple-parallel | 单轮选对并调对:单函数、多函数、并行调用及两者叠加 |
| multi-turn | base / missing function / missing parameter / long context | 多轮协作:清单里没有的函数该拒绝、缺参数该追问、长上下文不迷路 |
| agentic | web search / memory | 真实 agent 场景:联网检索与记忆 |
| robustness | hallucination measurement / format sensitivity | 不该调时能不调;对格式变化不敏感 |
评判走 AST 与可执行双轨:前者比对调用的结构形状,不必执行;后者把调用真跑起来看结果。
榜单头部的 Overall Accuracy 是各子类得分的无权重平均,单轮强、多轮弱的模型照样能把总分拉上去。选型时先确认自己的场景落在哪个象限,再看该象限的子类分。
四象限解决的是测什么。面对一个具体失败,你还需要另一根轴:错在哪一层。
二、四层评测栈:错在哪层,修哪层
四层评测栈是本篇主轴。自上而下,每层只回答一个问题,越往下越接近要害:任务真的办成了吗。
前两层不必执行。Selection 用 precision /recall 量两件事:该调的调了没、不该调的调了没,典型失败是漏调与多调;Arguments 用 AST /schema 匹配查参数,典型失败是字段值错。
后两层必须执行。Trajectory 把多步调用跑完整,专抓坏依赖,先退款后查订单 ID 就是教科书级反例;Task 端到端执行,专抓貌似合理的错误答案。
分层的全部价值,落在一个修字上:
- Selection 失败:改工具 description 或检索。
- Arguments 失败:改 schema 与示例。
- Trajectory 失败:改规划提示。
- Task 失败:加终答校验。
四层对应四种互不相同的工程动作。不分层,你手里就只剩一个笨办法:换个模型试试。
Task 层最难测,但最能暴露真实完成情况。τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains(Sierra)用 LLM 用户模拟器在航空、零售两个域里驱动多轮任务,报告任务成功率与政策合规 pass^k。
它的结论是单次通过率虚高:以 k 次全过为口径的 pass^k,才是更接近上岗现实的读数。
子能力拆解的另一路示范是 T-Eval: Evaluating the Tool Utilization Capability of LLMs Step by Step(ACL 2024):把工具使用拆成多个子能力分别量,思路与四层栈同构。
两篇论文指向同一个判断:笼统的工具能力分没有诊断价值,拆开量才知道短板在哪。
三、五个案例上棋盘:先归层,再开方
把讲义给的五个案例放上台面(slides L2 p.52-57),每个先归层、再谈修:
| # | 现场 | 归层 | 修哪里 |
|---|---|---|---|
| c1 | 调错工具 | ① Selection | 工具 description / 检索 |
| c2 | order_id 传成了用户名 | ② Arguments | schema / 示例 |
| c3 | 先 refund 后 lookup,坏依赖 | ③ Trajectory | 规划提示 |
| c4 | 工具说 3-5 天到账,终答说「已到账」 | ④ Task | 终答校验 |
| c5 | 用户闲聊,未调工具直接回复 | 正确行为 | 不修 |
c2 的错误长什么样?工具是调出来了,order_id 的值却传成了用户名。
{ "name": "get_order", "arguments": { "order_id": "张三" } }
c4 最值得盯:每一步调用都挑不出毛病,任务却坏在最后一张嘴。工具明明说「3-5 天到账」,终答变成「已到账」。这是 Task 层貌似合理的错误答案的标准长相,只测到 Trajectory 层就收工的榜单,覆盖不到这种失败。
c5 则是反向考点:闲聊不调工具、直接回复,是正确行为。robustness 象限的 hallucination /relevance 考察给这种克制打分,考的是不该调时能不调。评测不只惩罚错调,同样惩罚画蛇添足。
四、棋盘之外:运营三问与线上真实错误率
能力之外,上线后还有三个运营维度(slides L2 p.52-57):
- Efficiency:延迟、调用数、token 与成本。
- Reliability:超时、重试、部分失败下的真实成功率。
- Safety:策略、权限与副作用。
其中 Reliability 最容易被高估,因为失败未必出在模型身上。失败三分类归因:
| 归因层 | 典型症状 |
|---|---|
| 模型层 | 错工具 / 坏参数 / 无视工具结果 |
| harness 层 | 解析 / 鉴权 / 校验 / ID 错配 |
| provider・工具层 | 超时 / 限流 / 执行错误 |
线上证据来自 OpenRouter Provider Analytics(2026-08-27 数据,官方 references),展示各家供应商的 tool-call 错误率:同一模型经不同供应商通道,可靠性并不一样。
模型评测分再高,配一条错误率高的供应商通道,线上成功率照样塌。排障时,harness 层与 provider・工具层要先于模型列入嫌疑名单。
受控题集、AST 与可执行双评判、子类无权重平均的 Overall Accuracy,量的是模型能力。
超时、重试、部分失败、harness 缺陷、供应商差异,量的是你这套系统的可靠性。
线上失败先问三句:解析与 tool_call_id 配对都正常吗(harness 层)?这条供应商通道的错误率如何(provider・工具层)?都排除后,再回四层栈定位模型层的问题。
与本讲的连接
本篇是讲次页评测棋盘板块(slides L2 p.52-57)的下钻:BFCL 四象限与双评判对应伴读的榜单引用,五案例归层是 quiz 的现成题源,harness 层的 ID 错配对应 ReAct 轨迹详解里的 tool_call_id 配对机制。
把四层栈放回本讲 Takeaways 的五层系统观(Capabilities / Mechanics / Constraints / Interfaces / Systems):Selection 与 Arguments 检查 Interfaces,Trajectory 与 Task 检验 Mechanics,线上错误率归因站在 Systems 层看全链路。
本节论文与规范
本节资料
业界事实标准的函数调用基准(2024-2026 持续更新,现处 V4):覆盖单轮、多轮、agentic(会不会主动调、何时停)与鲁棒性四大象限,用 AST 与可执行双评判。GPT、Claude、Gemini 与各家开源模型均在此刷榜。本讲评测板块(p.52)直接引用。
- Kimi K2: Open Agentic Intelligence 论文2507.20534前沿
1T 参数 MoE 开源模型的「agentic 优先」训练配方:用大规模合成工具调用数据做 SFT,再上数十万步的 RL 课程(agentic 轨迹与通用能力混合),在函数调用与 agent 评测上比肩闭源旗舰。中文团队给出的产业级证据,也是开源模型工具能力的当前标杆。
用 LLM 扮演真实用户,在航空、零售两域的多轮任务里考 agent 的工具调用与政策遵从;以任务成功率和 pass^k 指标揭示「单次通过率虚高」——k 次全过的成功率断崖式下跌。把评测从「调用对不对」推进到「任务办没办成」。
把「工具使用」拆成指令跟随、规划、推理、检索、理解、审查、调用、组织八个子能力分别评测,用细粒度指标定位模型短板。这种拆解方式与本讲「四层评测栈」(格式对不对→参数对不对→动作对不对→任务成没成)同构,是评测板块的重要参照。
AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。
本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。