质检科来了一位数字新员工,名字叫 Agent。他的工作内容是替客户拨打三类服务热线:天气、汇率、计算。而你,就是负责给他做上岗考核的质检员。考核中你要回答一个问题:这位新员工的“电话”到底打对没有?他可能是拨对了号码却报错了工单信息,也可能是干脆拨错了热线,还有可能在占线之后完全不知道该怎么办。这三类问题,病因完全不同,如果只看一句“接通了吗”,根本说不清楚。 真正专业的做法,是像呼叫中心质检那样,先设计方案,再分维度打分:把电话簿(工具集)理清楚,备好计分卡(核心指标),准备好标准答案(黄金答案),安排一两场占线演习(错误注入),最后写出一份能指导改进的质检报告(结果分析)。顺着这条线,你就能学会用 API 调用准确率这套框架,系统评估 AI Agent 的工具调用能力。
学会这套评测方法,你就能在 Agent 上线前把“感觉还行”变成可量化、可回归的分数,这是 AI 评测工程师的核心基本功。
可视化演示
展示Agent API选择准确率、参数填充正确率与多工具协同调用评测,切换模式理解Agent工具评测。
本节配有交互动效(进入视口后自动加载,约 3KB)。
API选择准确率评测 Agent从工具集中选出正确API是工具调用评测的第一道关卡 Acc_sel = correct/total 选择准确率受意图理解能力和工具描述质量影响
1. 评测框架总览
小杨是呼叫中心质检科的老手。给新来的 Agent 助理做上岗考核,她没有急着翻电话簿出题,而是先写了一份“考核方案”:考什么能力、分几个维度、最终怎么算总分。没有方案的考核,就像没有评分表的面试,全靠考官心情,谁都不服。评测 Agent 的 API 调用准确率也是一样,第一步动作是搭评测框架——明确评测目标、评测维度、评测流程三件事。
所谓目标,就是我们要衡量 Agent 调用工具的哪个能力,通常聚焦在“是否又准又稳”;维度则是把笼统的“准”拆成可量化的子项:工具选择准确率、参数填充正确率、调用成功率、错误恢复能力;流程则是定义工具集 → 构建测试集(含黄金答案)→ 运行评测 → 汇总指标 → 输出报告。为了让总分可复现,评测会把每个任务先单独打分,再取平均:
有了这张“考核方案”,小杨后续所有动作都有了依据——哪些算分、哪些不算,白纸黑字写清楚。评测框架就是 Agent 考核的宪法,后面的一切指标、数据集、报告都从它派生,框架不定,后面的分数就是一笔糊涂账。
- 任务总数 N评测集里有 N 个独立的工具调用任务,每个任务包含一句用户请求和对应的标准调用。
- 单任务得分 TaskScore_i第 i 个任务按预设子指标(选择、参数、成功)获得的分数,取值在 0 到 1 之间。
- 求和后取平均把 N 个任务的分全部相加,再除以 N,得到整体评测总分。
2. 工具集构建
考核方案落笔后,小杨先整理“热线电话簿”。公司给 Agent 装了三部热线:天气热线(报城市名)、汇率热线(报币种对)、计算热线(报算式)。电话簿上每条热线都写清“负责什么、需要什么材料”——这套电话簿,在评测里就叫工具集。
工具集的核心是工具注册表,每个工具用三条信息描述:工具名称、用途说明、参数模式(参数名、类型、是否必填)。Agent 正是根据这些描述决定调哪个工具、填什么参数,所以描述写得越清楚,评测越公平——电话簿如果写着“汇率热线啥都能查”,Agent 把买菜钱也算进去就不奇怪了。工具集设计还讲究“模拟与真实”:生产环境的真实 API 不稳定、有费用、难控制出错,因此评测大多使用模拟工具,接口行为固定,可以随意注入超时和报错,每次评测都能复现。同时任务按难度分级:有的描述直白,一看就知道调哪个工具;有的要绕弯子,比如“帮我算算今天买菜花了多少钱”,需要 Agent 先判断哪个工具能用。
为了保证评测覆盖面,需要统计工具覆盖率——被测试到的工具占全部工具的比例:
电话簿越全,考核越有说服力。如果模拟工具连“占线”都不支持,就永远测不出 Agent 的临场反应。工具集构建决定了评测的天花板——热线都没铺好,后面的分数再高也是自欺欺人。
- 工具总数 T_total注册表中预先定义的全部工具数量。
- 被测试工具数 T_tested至少被一个评测任务要求调用到的工具数量。
- 比例化两个数相除并乘以 100%,得到覆盖率百分比。
3. 核心指标设计
考核正式开始,小杨从抽屉里抽出三张不同颜色的计分卡。第一张卡记“有没有拨对号码”,第二张记“报的工单信息对不对”,第三张记“电话最后办成了没有”。三张卡各管一摊,拼出一幅完整画像——这正是 API 调用评测的三个核心指标:工具选择准确率、参数填充正确率、调用成功率。
不管 Agent 底层用的是什么大模型,评测只看它的“调用行为输出”:选了什么工具、填了什么参数、服务端是否返回成功。三个指标分别回答“去对地方了吗、材料带齐了吗、事情办成了吗”。
选择准确率(Selection Accuracy):Agent 选出的工具是否与黄金答案标注的工具一致。选错热线,就像客户要查汇率却转到了计算台。
参数填充正确率(Parameter Correctness):选对了工具还不够,工单上的每一项信息都得填对。查天气却把城市写成“北京朝阳区”,和写成“北京”就是两种结果。
调用成功率(Call Success Rate):最后看结果——电话接通且服务端正常返回了可用结果。注意,这里的“成功”要求选对工具 + 参数合法 + 服务端正常响应,三者缺一不可。
综合评分(Weighted Score):三张卡拼起来后,按业务重要性加权合成一个总分,便于横向比较与回归跟踪。
三张卡拼起来看才不会误判——只盯第一张,会漏掉“拨对号码却报错参数”的 Agent;只盯第三张,更会把“错打热线但对面居然接了”当成优秀员工。指标拆得越细,质检报告越有说服力,这正是评测区别于“凭感觉”的地方。
- 权重设置w1、w2、w3 按业务重要性分配,三者之和必须等于 1,且各自非负。
- 加权求和把三个指标分别乘上对应权重后相加,得到 0 到 1 之间的综合分。
4. 数据集与黄金答案
有了计分卡,接下来得有“题”。小杨去机房翻出历史通话记录,挑出一批有代表性的客户请求,再让最资深的话务员给每题写下标准答案:这道题应该打哪条热线、报什么参数。这份标准答案,在评测里叫黄金答案(Golden Answer)。
数据集的构建分四步。第一,提示词构建:把真实场景整理成多样化的用户请求,覆盖不同工具、不同难度、不同表达方式,避免评测集“偏科”。第二,黄金答案标注:每条请求标注“正确工具名 + 完整参数”,作为判分基准;标注规范要精确到每个必填字段,多人标注后还要做一致性校验。第三,自动比对:运行时把 Agent 的预测与黄金答案按指标逐项比对,全程机器打分,速度一致,口径统一。第四,人工抽检:对自动比对结果中的异常样本抽检,防止标注错误或判分歧义。
黄金答案的质量直接决定评测可信度。若标注本身错了,Agent 答对了也会被扣分。判分时常用“完全匹配率”衡量整体达标情况,即工具和参数都必须与黄金答案完全一致才记对:
标准答案越严谨,机器判分越公平。小杨把录音答案归档成册,从此每次考核都用同一把尺子——不同版本、不同模型之间才真正可比。
- 完全匹配任务数 N_exact预测工具与参数均与黄金答案完全一致的任务数。
- 总任务数 N评测集中的全部任务数量。
- 比例化相除乘 100%,得到完全匹配率。
5. 错误恢复评估
真实工作哪有那么顺利。小杨在第一轮考核后加了一场“压力演习”:故意让汇率热线占线、让天气热线超时、让 Agent 提交的工单被系统退回。她要看的,是这位新人被拒绝之后怎么办——是反复重拨同一个号码,还是换个思路?
这对应评测中的错误注入与错误恢复评估。评测系统通过模拟工具主动制造错误,观察 Agent 的应对策略。第一是重试策略:是否重试同样的调用、是否调整参数后再调用、重试间隔是否合理。第二是降级处理:主工具不可用时,能否选择备选工具完成同一目标,比如汇率热线占线时改走备用汇率接口。第三是用户告知:最终无法完成时,是否向用户清晰说明失败原因,而不是假装成功——这一点常被忽视,却直接关系用户体验。衡量恢复能力的常规指标是恢复成功率:
演习中,那位 Agent 遇到占线先重试了一次,又改打备选热线,实在不行还跟用户道歉说明——小杨在“临场应变”一栏打了高分。错误恢复评估测的不是“会不会出错”,而是“出错之后有没有救回来”,这决定了 Agent 能不能真正上生产。
- 注入错误次数 N_injected评测中主动制造的错误场景总数,比如占线、超时、格式退回。
- 成功恢复次数 N_recovered注入错误后,Agent 通过重试、降级或合理兜底最终完成(或妥善收尾)的任务数。
- 比例化相除乘 100%,得到恢复成功率。
6. 结果分析与报告
考核结束,小杨没急着下结论,而是把所有红卡片摊在桌上。她发现 Agent 有接近一半的失败集中在“把汇率热线和计算热线搞混”——这不是粗心,而是电话簿描述有歧义;还有三成失败是参数漏填,集中在长对话场景。这些规律,就是质检报告的核心价值。
评测结果分析要依次回答“错在哪、为什么错、怎么改”。第一是错误聚类:把失败案例按错误类型分组,比如选错工具、参数缺失、参数类型错误、调用超时,找出高频模式。第二是失败归因:结合提示词和工具描述分析诱因——是工具描述太泛,是边界场景未覆盖,还是提示词本身有歧义。第三是改进建议:把归因翻译成可执行的动作,比如改写工具描述、补充示例、调整系统提示词。第四是回归对比:记录当前版本分数,下次评测用同一套数据再跑一遍,验证改进是否真的生效。为了让团队聚焦最关键问题,可以计算错误集中度:
报告最后一行写着:“选错工具类错误占 45%,建议优化汇率工具描述,下轮复测。”评测不是为了给 Agent 打差评,而是让每一次失败都变成可执行的改进路线——这才是 API 调用准确率评测的终局。
- 错误总数 N_errors评测集中所有被判为失败的任务数。
- 前 K 类错误计数求和按错误类型聚合后,取数量最多的前 K 类,把它们的计数相加。
- 占比计算相加结果除以错误总数,再乘 100%。
AI 应用场景
大模型 Agent 发布前的能力门禁
阶段:模型评估与发布上线
解决的问题:发布前无法量化 Agent 的工具调用水平,人工试用覆盖面小、结论主观。用评测框架构建工具集与黄金答案,自动化跑分,达到阈值才允许上线。
具体案例:某客服 Agent 上线前,评测集含 500 条任务、20 个模拟工具,跑出选择准确率 92%、参数正确率 85%。因参数正确率低于 90% 的门禁线被拦截,团队优化工具描述与提示词后复测通过。这就像小杨用三张计分卡实习期考核——达不到标准,转正免谈。
模型更新后的回归评测
阶段:模型迭代与质量保障
解决的问题:每次升级底层大模型都可能“修好一个 bug 带崩一片”,需要一套固定题目做回归对比。
具体案例:客服机器人从小模型换成大模型后,用同一套黄金答案全量回归:选择准确率提升了 5%,参数正确率却掉了 2%——回归对比报告立刻暴露了退化点,团队定位到是长文本参数抽取能力下降,针对性补充示例后修复。就像同一套试卷考两届学生,分数涨跌一目了然。
复杂 Agent 故障定位
阶段:线上运维与故障排查
解决的问题:线上 Agent 报错率升高时,需要快速定位是哪个环节出了问题,而不是盲目调参。
具体案例:某多工具 Agent 线上失败率突增,评测工程师跑了一轮错误聚类,发现“汇率”相关提示词触发的选错工具错误激增,归因到工具描述中“汇率”与“换算”用词混淆,优化描述后恢复。错误聚类加失败归因,就像把红卡片按病因分类,一查一个准。
Python 演示
#-*- coding: utf-8 -*-"""演示: 用三指标评测一个模拟 Agent 的 API 调用准确率"""import json TOOLS = { "weather": {"desc": "查询城市天气", "params": ["city"]}, "currency": {"desc": "查询货币汇率", "params": ["from", "to"]}, "calc": {"desc": "数学计算", "params": ["expr"]}} GOLD_CASES = [ {"prompt": "北京的天气怎么样", "tool": "weather", "params": {"city": "北京"}}, {"prompt": "100美元等于多少人民币", "tool": "currency", "params": {"from": "USD", "to": "CNY"}}, {"prompt": "计算 2 加 3 乘 4", "tool": "calc", "params": {"expr": "2+3*4"}}, {"prompt": "上海的天气如何", "tool": "weather", "params": {"city": "上海"}}, {"prompt": "10欧元等于多少日元", "tool": "currency", "params": {"from": "EUR", "to": "JPY"}}] def mocked_agent(prompt): """模拟被测 Agent, 输入用户请求, 返回 (工具名, 参数字典)""" if "天气" in prompt: city = "北京" if "北京" in prompt else "上海" return ("weather", {"city": city}) if "美元" in prompt: return ("currency", {"from": "USD", "to": "CNY"}) if "欧元" in prompt: return ("calc", {"expr": "10"}) return ("calc", {"expr": prompt.split("计算")[-1].strip()}) def match_params(pred, gold): if set(pred.keys()) != set(gold.keys()): return False return all(pred[k] == gold[k] for k in gold) def evaluate(): n = len(GOLD_CASES) sel_ok = param_ok = call_ok = 0 detail = [] for case in GOLD_CASES: pred_tool, pred_params = mocked_agent(case["prompt"]) sel = pred_tool == case["tool"] par = sel and match_params(pred_params, case["params"]) call = par sel_ok += int(sel) param_ok += int(par) call_ok += int(call) detail.append({"prompt": case["prompt"], "gold": case["tool"], "pred": pred_tool, "sel_ok": sel, "param_ok": par}) print(json.dumps(detail, ensure_ascii=False, indent=2)) print("选择准确率: %.0f%%" % (sel_ok * 100.0 / n)) print("参数正确率: %.0f%%" % (param_ok * 100.0 / n)) print("调用成功率: %.0f%%" % (call_ok * 100.0 / n)) if __name__ == "__main__": evaluate()
def mocked_agent(prompt):模拟被测 Agent,输入用户请求后返回“预测工具 + 参数”,相当于考试中的考生。sel = pred_tool == case["tool"]第一张计分卡:预测工具名与黄金工具名是否一致,对应选择准确率。par = sel and match_params(pred_params, case["params"])第二张计分卡:先确认选对工具,再逐参数比对,避免“选对号码报错工单”被算对。return set(pred.keys()) != set(gold.keys())先检查参数键集合是否一致,键都对不上就不用逐值比对了。return all(pred[k] == gold[k] for k in gold)逐键比对参数值,全部相同才返回 True。call = par第三张计分卡:模拟服务端只在参数合法时返回成功,现实中还可加入超时与重试逻辑。print("选择准确率: %.0f%%" % (sel_ok * 100.0 / n))汇总输出三个指标,百分比统一保留整数,方便写进评测报告。
常见误区
误区我平时只统计 API 有没有报错,返回没报错就说明 Agent 调用能力没问题。如果调用成功率是 100%,评测就通过了。
正解调用成功不等于调对了电话——拨错热线,对面照样接听。一个“总是选错工具但总能成功返回”的 Agent,真实场景里根本没完成任务。因此评测必须拆成选择准确率、参数正确率、成功率三个维度,三张计分卡缺一不可。
为何常见:API 返回的状态码最容易抓取,错误码少就让人误以为系统健康,忽略了“结果正确性”这个更本质的问题。
误区评测时只要看到 Agent 选对了天气工具,我就直接给这道题打钩,参数细节不影响大局。
正解参数往往决定任务是否真正完成。查天气却把城市填成“北京朝阳区”而标准答案是“北京”,字面不一致就应记为参数错误。参数正确率独立成指标,正是为了抓住“选对工具但办不成事”这一类高频失败。
为何常见:工具名决定“去哪办”,参数决定“办成什么样”,后者隐蔽且琐碎,容易被只关注大方向的评测者忽略。
误区真实 API 才是真实环境,模拟工具是偷懒,测出来的分数不可信。
正解评测要的是可复现与控制变量。真实 API 有延迟抖动、限流、费用、不可控错误,同样的任务两次测结果可能不同,也没法按需注入“占线”和“超时”。模拟工具行为确定、可注入任意错误、零成本,是主评测的正确选择;真实 API 只适合做小规模冒烟验证。
为何常见:“真实 = 好”的直觉很自然,但评测场景恰恰要求把环境影响降到最低,真实 API 反而引入了噪声。
误区标黄金答案时我只写工具名,参数随便写写,反正机器只看工具选没选对。
正解不标注完整参数,就无法计算参数正确率和调用成功率,评测会漏掉“选对工具但参数错误”这一大类问题。黄金答案必须包含工具名 + 完整参数,还要多人标注、一致性校验,因为判分尺子歪了,所有分数都会跟着歪。
为何常见:标注者容易只写“答案”,没意识到参数是独立的计分维度,也低估了参数错误在真实场景中的占比。
误区评测错误恢复能力,我就数 Agent 重试了几次,重试越多说明越顽强,分数越高。
正解重试只是手段之一,合理重试、降级换工具、向用户说明三者缺一不可。有些场景盲目重试三次不如直接降级到备选工具;而“失败后假装成功”更是严重失分项。恢复成功率看的是“最终有没有救回来”,而不是“挣扎了多少次”。
为何常见:重试次数最容易统计,指标越容易数越容易被滥用,于是把手段当成了目的。
面试题
Q1. 以下哪个指标用于衡量 Agent 是否选对了工具?
- A.调用成功率
- B.工具选择准确率← 正确答案
- C.参数填充正确率
- D.错误恢复成功率
答案:B。选择准确率考察“拨对号码”,即预测工具名与黄金工具名的一致性。调用成功率看结果,参数正确率看工单信息,错误恢复率看临场应变,它们各自回答不同的问题。
Q2. 参数填充正确率的单任务比对,通常怎样算“对”?
- A.全部参数与黄金答案一致才算对← 正确答案
- B.有一个参数正确就算对
- C.只看参数个数是否一致
- D.由服务端是否返回成功决定
答案:A。参数比对要求逐键一致,全部匹配才记 1,否则记 0,也可以扩展为部分匹配加权。只看个数或由服务端结果倒推,都会放过“值填错”的情况。
Q3. 评测 Agent 工具调用时,常优先使用模拟工具的主要原因是什么?
- A.模拟工具运行速度一定更快
- B.模拟工具不需要定义参数模式
- C.真实 API 不稳定且难以控制错误← 正确答案
- D.真实 API 测出的分数一定更高
答案:C。真实 API 有延迟抖动和限流,评测不可复现,也没法按需注入“占线”“超时”。模拟工具行为确定、可注入错误,是控制变量的关键,就像考场要用标准试卷而不是现场随机的电话。
Q4. 工具集构建环节需要定义哪些内容?
- A.工具名称与用途描述← 正确答案
- B.参数名称与类型约束← 正确答案
- C.黄金答案的标注规则← 正确答案
- D.模型训练超参配置
答案:ABC。工具集构建关注注册表(名称、描述、参数模式)和配套的数据集规则,属于评测环境搭建;模型训练超参不在评测范围内,就像布置电话簿不是培训话务员。
Q5. 黄金答案(Golden Answer)在评测中的作用是什么?
- A.决定被测 Agent 的输出格式
- B.自动修复 Agent 的错误
- C.代替人工进行错误归因
- D.提供应调用工具及参数标准← 正确答案
答案:D。黄金答案是判分基准,标注每个任务应调用的工具和完整参数,供自动比对使用。它不负责格式化输出、不修复错误,也不做归因,只是“标准答案”。
Q6. 评测框架的完整流程通常包含哪些环节?
- A.定义工具集并设计指标← 正确答案
- B.构建测试集与黄金答案← 正确答案
- C.运行评测并汇总得分← 正确答案
- D.修改模型训练损失函数
答案:ABC。流程是“定义工具集→构建数据集→运行评测→输出报告”,属于评测侧动作。修改损失函数是训练侧的事,评测要做的是用同一把尺子量模型,而不是帮模型改错。
Q7. 关于调用成功率与工具选择准确率的关系,下列说法正确的是?
- A.两者在数值上完全等同
- B.调用成功则选择必然正确
- C.选错工具的调用也可能成功← 正确答案
- D.评测中只需统计调用成功率
答案:C。选错工具时,只要参数合法,服务端照样可能正常返回,因此“接通了”不能证明“打对了”。调用成功率不能替代选择准确率,两个指标要并行统计。
Q8. 评测结果分析阶段通常会做哪些工作?
- A.对失败案例进行错误聚类← 正确答案
- B.结合提示词开展失败归因← 正确答案
- C.提出改进建议并复测验证← 正确答案
- D.直接删除所有失败用例
答案:ABC。分析阶段的正确动作是聚类、归因、提建议、回归对比,让失败变成改进路线。删除失败用例等于藏起红卡片,评测就失去了指导意义。
Q9. 错误恢复成功率(Recovery)的正确含义是?
- A.未出错任务占总任务比例
- B.重试次数越多恢复率越高
- C.注入错误后最终完成任务比例← 正确答案
- D.用户对回复满意程度比例
答案:C。恢复成功率 = 成功恢复次数 / 注入错误总次数,考察的是“出错后有没有救回来”。它不数干净任务的占比,也不以重试次数论英雄,更与用户满意度问卷无关。
Q10. 某评测有 100 个任务,Agent 有 90 个任务选对了工具,其中 18 个参数错误;选错的 10 个任务参数全部错误。参数填充正确率是多少?
- A.72%← 正确答案
- B.82%
- C.90%
- D.100%
答案:A。参数正确只可能出现在选对工具的 90 个任务里,其中 18 个错,所以参数正确的有 90 - 18 = 72 个;选错的 10 个参数全错。72 / 100 = 72%。这道题提醒你:参数正确率的分母永远是总任务数,而不是选对工具的任务数。