BFCL · TOOL CALLSHiDeepSeek / Open Infra
$ schema → call → execute → recover
AGENT HARNESSOPEN SOURCE
评测对比BFCLFunction CallingAgent 评测
用 BFCL 评测 DeepSeek 工具调用:从函数参数到多轮 Agent 任务
H
HiDeepSeek 编辑部阅读大约 10 分钟
Agent 是否可靠,首先取决于模型能否选择正确函数、生成合法参数,并在不该调用工具时保持克制。Berkeley Function Calling Leaderboard(BFCL)提供可执行的函数调用评测,从单轮调用扩展到并行、多函数、多轮以及更接近真实 Agent 的任务。
一、BFCL 测的不是普通问答
- Simple:选择一个函数并生成正确参数。
- Multiple / Parallel:在多个候选函数间选择或并行调用。
- Relevance:判断用户需求是否应该触发工具。
- Multi-turn / Agentic:结合工具结果继续规划,并处理错误和状态。
二、生成和评分是两个阶段
pip install -e ./berkeley-function-call-leaderboard
# 先选择已配置的模型名和小规模类别
bfcl generate --model MODEL_NAME \
--test-category simple_python,relevance \
--num-threads 1
bfcl evaluate --model MODEL_NAME \
--test-category simple_python,relevance
如果 DeepSeek 的具体模型版本尚未出现在 BFCL 的支持列表中,需要新增或复用 OpenAI 兼容 handler,并在模型配置中声明是否使用原生 Function Calling。不能为了跑通命令而冒用另一个模型名称。
三、原生 Tool Calls 与 Prompt 模拟要分榜
一种方式是把函数定义放进 API 的 tools 字段,让服务返回结构化 tool call;另一种方式是把函数说明写进系统 Prompt,要求模型输出约定文本。两种模式的解析难度和可靠性不同,结果不应混合比较。
四、重点看错误类型
- 选错函数,或在无关问题上强行调用工具。
- 参数缺失、类型错误、枚举越界或日期格式错误。
- 并行调用丢失、重复调用或依赖顺序错误。
- 工具报错后无法修正参数,陷入重复循环。
- 返回了看似正确但无法执行的 JSON 或代码。
五、从 Benchmark 走向业务 Harness
BFCL 分数通过后,还要加入企业自己的函数 schema、鉴权规则、危险操作确认、幂等性和超时恢复测试。所有实际工具应在沙箱或 mock 环境中执行,禁止评测任务直接修改生产数据。
工具调用准确率只是 Agent 的入口指标。可执行、可恢复、受权限约束,才是生产系统真正需要的可靠性。
参考资料
本文按下列官方资料核验。模型能力、价格与接口可能调整,请以最新文档为准。