28. ToolBench、StableToolBench 与 BFCL:如何评 Function Calling
Benchmark 专题 · 4~6 小时
学习目标
- 区分 Function Calling、Tool Learning 与完整 Agent Eval
- 理解 API 不稳定对 Benchmark 的破坏
- 认识 AST、Execution 与多轮工具评测
前置知识
- 第 11 章
本章产物: 建立一个 Tool Benchmark 小集并分别做 AST 与执行评分。
28.1 Function Calling 是 Agent 的重要组件,但不是整个 Agent
ToolBench、BFCL 等主要回答:
模型是否能选择函数并构造正确调用?
完整 Agent 还包括用户交互、政策、长期状态和恢复。
所以可以把 Function Calling Benchmark 放在 Component Eval 层。
28.2 ToolBench
ToolLLM/ToolBench 的重要价值:
- 大规模真实 API;
- 单工具、多工具;
- solution path;
- ToolEval。
它推动了 Tool Use 评测规模化。
28.3 真实 API 的不稳定
如果第三方 API:
- 下线;
- 改 schema;
- 限流;
- 返回数据变化;
你会把环境变化误判为模型 Regression。
StableToolBench 的核心就是针对这一问题,引入 virtual API server、cache 和更稳定评估。
28.4 BFCL
BFCL 重点评函数调用能力,并持续发展多轮、多步 function calling。
值得借鉴:
- AST-based correctness;
- executable checks;
- relevance / irrelevance;
- multi-turn;
- parallel function calling。
28.5 Component → E2E
推荐测试层:
Layer A: JSON/AST correctness
Layer B: function execution
Layer C: multi-tool task
Layer D: final environment state
Layer E: user/policy interaction不要只跑 BFCL 高分就宣布 Agent 产品可靠。
28.6 Tool Set Perturbation
真实系统会不断新增工具。
回归集要测:
3 tools
20 tools
100 similar tools工具集扩大可能明显降低 selection robustness。
28.7 验收问题
- ToolBench 与完整 Agent Eval 的边界是什么?
- StableToolBench 为什么要虚拟 API?
- AST PASS 与 Execution PASS 有什么区别?