SeraphimSerapis/tool-eval-bench
Tool-calling quality benchmark for LLM serving stacks. 80+ deterministic scenarios testing multi-turn orchestration, safety boundaries, and structured output. Supports vLLM, SGLang, and llama.cpp.
Tool‑Eval‑Bench – LLM工具调用基准测试
概述与目标
Tool‑Eval‑Bench 是一个基准测试套件,用于衡量大型语言模型(LLMs)在单一助手对话工作流中调用外部工具的能力。它面向运行自托管推理服务器(如vLLM、llama.cpp、SGLang、LiteLLM、TensorFold等)或托管API(如Gemini、Anthropic)的开发者,提供一种可重复的方式来比较工具选择、参数传递、链式调用、错误恢复、安全性和本地化方面的性能。
核心功能
| 功能 | 内容 | 位置 |
|---|---|---|
| 质量基准测试 | 69个确定性场景(外加28个可选的硬核模式对抗性案例),覆盖52个工具命名空间、多步链、拒绝、安全检查、本地化(以德语为重点)等。 | run 命令 |
| 吞吐量和速度 | 预填充和生成速度测试(llama-bench风格),包含深度和并发扫描;投机解码指标。 | bench 命令 |
| 长上下文检索 | 多种上下文长度下的“大海捞针”测试,报告有效上下文长度。 | needle 标志 |
| 上下文压力 | 在每个场景前改变预填充上下文量,观察质量下降点。 | context‑pressure 标志 |
| 准确性套件 | 通过相同的OpenAI兼容适配器运行GSM8K、MMLU和IFEval。 | plugin 命令 |
| 决策模型审计 | 可选的辅助模型审计助手回答(概率、一致性)。 | --decision‑judge 标志 |
| 持久化工件 | 带有完整对话追踪的Markdown报告和SQLite数据库。 | runs/…/*.md 和 data/benchmarks.sqlite |
| CLI和API | 完整的命令行界面;Python异步API(run_benchmark)。 |
tool‑eval‑bench 可执行文件和 tool_eval_bench.api |
| 后端自动检测 | 通过头部信息、/health、/props等自动检测vLLM、llama.cpp、TensorFold、Strata、TabbyAPI等。 |
在run/probe期间自动 |
| 配置指纹 | 捕获版本、模型、上下文窗口、量化、GPU数量、投机模式等,确保公平的排行榜比较。 | 存储在运行元数据中 |
使用方法(快速入门)
# 通过uv(或Docker)安装
uv tool install git+https://github.com/SeraphimSerapis/tool-eval-bench.git
# 对本地服务器运行短的15个场景套件
tool-eval-bench run --short --base-url http://localhost:8000
# 完整基准测试(69个场景) – 可复现的种子
tool-eval-bench run --seed 42
# 添加硬核模式和性能测试
tool-eval-bench run --hardmode --perf --seed 42
# 查看历史运行或排行榜
tool-eval-bench history
tool-eval-bench leaderboard
环境变量(TOOL_EVAL_*)或.env文件可用于存储URL、API密钥和模型名称,以便重复A/B测试。
分数含义
- 每个场景得分2(通过)、1(部分)或0(失败)。综合得分是获得点数的百分比。
- 评估星级:
- 90‑100% → ★★★★★ 优秀
- 75‑89% → ★★★★ 良好
- 60‑74% → ★★★ 合格
- 40‑59% → ★★ 较弱
- 0‑39% → ★ 差
- 安全违规可能会将等级限制为★★★,无论原始得分如何。
--weight-by-difficulty对较难场景重新加权以计算替代分数。
适用场景
- 模型开发者:在发布新检查点之前,需要具体、可重复的指标来评估工具调用能力。
- 运维团队:在相同工作负载下比较自托管后端(如vLLM vs. llama.cpp vs. TensorFold等)。
- 研究:研究提示策略、系统提示调整或投机解码对工具使用的影响。
- CI流水线:可以通过
--fail‑on‑safety在安全回归时使构建失败。
限制与范围
- 专注于使用模拟工具的单一助手对话,不评估多智能体系统、委派或长期运行的自主体。
- 当前本地化以德语为中心,其他语言默认不支持。
- 难度等级是作者估计,未基于大规模模型集合进行校准。
- 模拟工具响应包含现实噪声,但仍然是模拟的,不是真实的外部API。
以上所有信息均直接取自仓库的README,未添加任何外部假设。
相关
- 项目
- 项目
- 项目
- 项目
- Dispatch