← 返回信息流
技术博客Hugging Face Blog·2026/6/18

开源模型代理能力如何?用自有工具来评测

原标题:Is it agentic enough? Benchmarking open models on your own tooling

速览

本文探讨了开源模型在代理任务中的表现,并提出了一种使用自有工具进行基准测试的方法。该方法帮助开发者根据实际需求选择最合适的模型,强调代理能力在复杂任务中的重要性。旨在为AI社区提供实用的评估框架。

AI 深度解读

背景

传统软件库的评估通常只关注最终答案是否正确,例如一个情感分类任务,只要模型输出“POSITIVE”就算通过。然而,随着AI agent越来越多地代替人类编写代码、调用库、调试错误,库的“agent友好性”成为新的关键维度。一个agent可能用40行Python脚本、多次调试才能完成的任务,另一个agent可能只需一条CLI命令就能搞定。两者结果相同,但消耗的token、时间、错误率天差地别。如果只检查最终字符串,库开发者将无法感知自己的改动(如改进CLI、添加文档、封装Skill)是否真正帮助了agent。

为了系统性地衡量agent使用工具的效率,Hugging Face团队以transformers库为案例,设计了一套评估工具——它不只看“答对没有”,还看“走了多少弯路”。该工具完全基于开源模型和Hugging Face平台运行,可并行评估多种模型、多版本库、多任务的组合,为库维护者提供量化依据。

核心内容

评估框架的设计思路

文章提出一个核心原则:如果工具没有被测试用于agent,那它就不算对agent可用。测试不仅包括正确性,还包括agent的“工作量”——即完成任务所需的轮次、token数、时间、错误率等。为此,作者构建了一个可复现的评估框架,运行在Hugging Face Jobs上,每个实验使用完全相同的硬件,所有结果和轨迹(trace)保存在Hugging Face Bucket中。

三种评估层级(Tier)

对于每个任务,agent在三种不同的“信息环境”下运行,分别代表agent可能遇到的三种情况:

  • bare:只通过 pip install transformers 安装库,没有额外文档或源码。
  • clone:完整克隆transformers源码仓库,并设置在当前工作目录下。agent可以查阅源码文件(但文档可能未单独整理)。
  • skill:加载一个打包好的Skill,包含CLI的文档和任务示例,直接注入到agent的上下文中。

注意,这三个层级不是包含关系:skill 不包含完整源码,clone 也不包含经过整理的示例。agent在不同层级下的表现可能完全不同,有时 clone 反而比 skill 更好,这取决于模型的理解能力。

评估指标

每个运行从多个维度打分:

  • match %:最终答案是否包含预期结果(支持子串、正则、精确匹配,不区分大小写)。
  • 中位时间中位token数(区分新生成、缓存、生成)。
  • 运行错误率:包括一个特殊守卫——如果agent输出了0个token、没有调用任何工具、没有给出答案,则标记为“静默失败”,避免被误认为“0%错误”。
  • 标记采纳率(marker adoption):衡量agent是否使用了库开发者定义的特定行为标记(例如错误处理约定)。

所有结果汇总到一个可交互的报告(Overview、Coverage、Results),同时每个运行的完整agent轨迹(trace)可通过Hugging Face Hub的agent-traces查看器查看,开发者可以逐命令分析agent的行为。

任务示例:情感分类

文章用具体例子展示了两种agent路径:

Agent A(传统方式):

python - <<'PY'
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as F

model = AutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased-finetuned-sst-2-english")
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased-finetuned-sst-2-english")
inputs = tokenizer("I absolutely loved the movie, it was fantastic!", return_tensors="pt")
with torch.no_grad():
    logits = model(**inputs).logits
    probs = F.softmax(logits, dim=1)
    idx = torch.argmax(probs, dim=1).item()
print(model.config.id2label[idx], probs[0][idx].item())
PY

输出:POSITIVE 0.9999

Agent B(使用CLI,假设库已优化):

transformers classify \
  --model distilbert/distilbert-base-uncased-finetuned-sst-2-english \
  --text "I absolutely loved the movie, it was fantastic!"

输出:POSITIVE 0.9999

两者结果完全一致,但Agent B只需一条命令,无需处理导入错误、形状调试、多头注意力等细节。如果只评估最终答案,两者得分相同,但Agent B的token消耗、时间、错误率都远低于Agent A。这正是该框架要捕捉的差异。

模型选择与意义

框架支持多种模型,从大型开源模型(如Llama、Mistral)到本地小模型。对于大型模型,任务完成率通常接近100%,此时评估重点应转向“工作量”(token、时间、路径是否干净)。对于本地小模型,完成率本身就有区分度,可以观察模型大小/能力对特定工具任务的影响。

作者强调,该框架不仅帮助库开发者改进agent交互,也为agent/模型评估提供了场景化工具——开发者可以测试自己关心的任务,而不仅仅是通用基准。

关键要点

  • 传统benchmark只看最终答案,忽略了agent完成任务的“工作量”(token数、时间、错误率、路径复杂度等),无法指导库的agent优化。
  • agent优化需要让工具具有“可发现性”:API清晰、文档详尽、示例结构化,让agent快速定位有用文件。
  • 三种评估层级(bare、clone、skill) 覆盖agent可能遇到的不同信息环境,帮助发现哪种形式的帮助最有效。
  • 评估指标多维:match %、中位时间/中位token、错误率(含静默失败检测)、标记采纳率。
  • 完整轨迹可追溯:每个运行的agent命令序列可查看,开发者可以逐行分析agent行为。
  • 并行化大规模实验:利用Hugging Face Jobs,每个 (模型 × 库版本 × 任务) 独立运行,硬件一致,保证公平。
  • 大型模型 vs 小模型:大型模型关注“工作量”,小模型关注“完成率 + 工作量”,不同模型类别的评估侧重点不同。
  • 该框架不仅可用于transformers,也可用于任何可通过命令行操作的库,具有通用性。

意义与影响

查看原文 →huggingface.co