大模型应用实战

一次 Skill 评测的复盘:我推翻了一份现成的模型选型结论,然后自己造了个评测平台

团队里有一份 Skill 模型适配评测,报告看着有模有样,细看却有不少问题:每个场景只有 1 个 case,对错还由 AI 自己判断。我针对 Jira Skill 最高频的「获取 bug 信息 + 附件下载」重新设计评测:100 个 case × 3 次采样,脚本逐字对比 ground truth。结果很反常识:得分最高的 sonnet-5-5 不是最优解,ds-v4.1-flash 在成功率、成本、速度上综合胜出。文末介绍支撑这次复测的 Skill 评测平台:评测方案、用例、运行、指标、AI 报告,以及版本纵向对比和模型横向对比。

·约 12 分钟阅读·AI Engineering

起因:一份看起来很完整的评测报告

前阵子团队里出了一份「高频 Skill 模型适配评估」,给 Jira Skill 的 8 个任务场景(D1-D8)各选出了一个最佳模型。报告里有表格、有准确率、有 Token 和耗时对比,格式齐整,结论清晰。

我本来是想直接拿来用的。但在准备把它当作选型依据之前,我多看了几眼,越看越不踏实。

这份报告里的核心数据长这样(每个模型 40 次判定):

模型准确率平均 Token平均耗时
deepseek-v4-pro40/401,53932.7 s
claude-sonnet-4-639/401,79124.7 s
deepseek-v4-flash39/402,16033.2 s
glm-5.340/402,77543.3 s
doubao-2.0-lite33/401,07629.4 s
kimi-k232/401,09230.1 s

头部四个模型准确率都在 97.5% 以上,几乎打平。一份评测里所有强模型都接近满分,往往不是因为模型都很强,而是因为题太简单,或者判分太宽松,根本区分不出模型。

带着这个怀疑,我把它的做法拆开看了一遍。


这份评测的问题出在哪

问题一:样本只有 1 个

每个场景只有 1 个 case,每个 case 跑 5 次。这验证的是「同一个 case 跑得稳不稳」,不是「换一个 case 还行不行」。5 次重复不等于 5 个样本,它们是同一个样本的 5 次采样。

在一个 bug 单上表现好,说明不了模型在另一个有 50 个附件、描述里带特殊字符的 bug 单上也好。

问题二:对错由 AI 自己判断

「准确率」的判定标准是模糊的:由 AI 来判断输出对不对。这个做法在语义类任务上没问题,但在「逐字复述 bug 信息」这类任务上风险很大。原因后面用真实案例说明。

问题三:测的任务和真实使用不一致

这个 Skill 在 bugfix 流程里真正高频使用的只有 3 项:获取 bug 信息并下载附件、添加 comment、变更责任人。8 项任务综合最佳,不代表这 3 项最佳,可能有更便宜的模型足以胜任。

问题四:候选模型缺失

当时没有测到能力最强的 sonnet-5-5,也没有测到又强又便宜的 ds-v4.1-flash。在候选集不全的前提下选出的「最佳」,说服力有限。

这些问题单独看都不算离谱,但叠在一起,结论就站不住了。所以我决定自己重测。


重新设计评测

范围:一次只回答一个问题

先针对场景 1「获取 bug 信息和附件下载」做独立评测。这是流程里调用最频繁、也最容易出事的一环。一次只回答一个问题,结论才不会被其他任务稀释。

指标:脚本判定,不让 AI 当裁判

指标定为信息获取的准确性,判分规则很死板:

  • 用脚本把 Agent 的输出与 ground truth 做逐字对比
  • 完全一致 → 5 分;有任何不一致 → 0 分
  • ground truth 包括两部分:
    • bug 标题、描述等文本信息,要求完全一致
    • 附件的数量、名称、文件大小,要求完全一致

规模:100 case × 3 次采样

配置 100 个不同的 bug 单,每个 case 每个模型采样 3 次。100 个 case 覆盖多样性,3 次采样观察同一个 case 上的稳定性。

为什么不用 AI 判分

先看一个真实的失败样例。成本最低的 doubao-seed-2.0-mini 在这个任务里,转述 bug 内容时会出现个别字词的细微错误。

这引出一个很尴尬的问题:如果让 AI 去判断「输出和 ground truth 是否一致」,它很可能把这种错误放过去。 毕竟它自己转述都会出错,凭什么相信它做对比时不出错?

AI 判分擅长语义层面的评价(回答是否切题、是否有帮助),不擅长逐字的精确核对。而「bug 描述一字不差」恰好是后者。

结论很朴素:能用脚本判定的,就别让 AI 判。 脚本逐字对比不仅能精准判断对错,还能定位错在哪、为什么错。下面几张截图里的失败原因,全都是脚本给出的,比如 first diff at char 44,直接告诉你第 44 个字符开始不一样。


结果:最高分的模型,未必是最优解

sonnet-5-5:得分最高,但错得很致命

100 个 case、每个 3 次采样,sonnet-5-5 只出现了 3 次错误,是所有模型里得分最高的。

但这 3 次错误属于两种模式,在这个任务里都是致命的:

  1. 拉到了错误的 Jira 单号。 拿到的是另一张单的信息,后续所有动作都建立在错误的输入上。
  2. Agent 无法完成任务。 流程中途卡住,没有产出结果。

下面是第二种错误的现场。Agent 的回复里写着「我无法完成要求的输出格式」,虽然工单信息和 50 个附件其实都已经拿到了,但最终交付的结果块是不完整的,脚本解析失败,判 0 分:

sonnet-5-5 任务未完成:回复中途中断,ISSUE_JSON 块不完整

第一种错误更值得警惕:如果只测 1 个 case,你几乎不可能撞上它。低频的致命错误,只有在足够大的样本里才会暴露。 这正是原报告方法站不住的地方。

ds-v4.1-flash:综合性价比最高

按 IT 提供的模型价格信息,ds-v4.1-flash 比 v4-pro 和 v4-flash 都便宜,是目前明面上性价比最高的模型。在这个任务里,它的得分仅次于 sonnet-5-5。

把两者的运行记录放在一起看(红框是 ds-v4.1-flash,v2-5 是 sonnet-5-5):

sonnet-5-5 与 ds-v4.1-flash 的运行历史对比
模型准确率得分平均耗时平均 Token
sonnet-5-54.9344,414 ms174,485
ds-v4.1-flash4.7834,649 ms45,995

得分只差 0.15,但 ds-v4.1-flash 的耗时更短,Token 消耗只有 sonnet-5-5 的约四分之一。

它的错误模式有两种:

错误模式数量严重程度
个别字词转述错误10 例可接受
未按要求输出2 例较轻

字词转述错误的典型样子是:description 总长度都是 188 个字符,但从第 44 个字符起有差异,也就是个别字词被换成了近义表达。

字词转述错误:description 长度一致,但第 44 个字符起存在差异

未按要求输出则是没有把 JSON 原样输出,而是写了一句「第 2 步的 stdout 就是下面的 JSON」之类的转述,脚本解析失败:

未按要求输出:ISSUE_JSON 无法解析

关键在于错误的性质。ds-v4.1-flash 的错误大部分是个别字词的转述偏差。在这个任务里,Agent 拿到 bug 信息是为了后续分析和修复,几个字的偏差不会改变 bug 的指向,不是致命错误。

对比之下,sonnet-5-5 虽然错得少,但错的两种都会直接让整条流程作废。

选型结论

在「获取 bug 信息和附件下载」这个场景下,ds-v4.1-flash 在成功率、花费、速度三个维度上综合胜出。

这个结论很反常识:分数第一的不是最佳选择。原因是模型选型看的不是「得分高低」,而是**「错误的代价 × 出现频率 + 调用成本」**。


这次复盘的几条经验

  1. 样本数决定结论可信度。 单 case 多次运行只能说明稳定性,不能说明泛化。致命但低频的错误(如拉错单号)需要大样本才能暴露。
  2. 能脚本判定的就别用 AI 判。 AI 当裁判会放过自己也会犯的细微错误。逐字对比既准确,又能定位原因。
  3. 错误要分模式、分严重程度。 「错 3 次」和「错 12 次」不能直接比较,要看每种错误会不会让流程作废。
  4. 选型要对齐真实使用的任务。 8 项任务里最佳的模型,不代表你实际只用到的 3 项里最佳。评测的任务分布应该和线上使用分布一致。
  5. 评测结论要敢于推翻。 数据更多、方法更严谨之后,旧结论就该让位。

但做完这次复测,我最大的感受是另一件事:这套流程如果每次都手搓,根本做不下去。


从一次复测到一个平台

这次复测要配 100 个 case、跑 3 轮采样、对比多个模型、统计错误模式、再写成报告。如果靠脚本拼凑,每换一个模型、每改一次 Skill,就要重来一遍,大样本评测很难持续。

所以我把整套流程做成了 AI 工作台里的 Skill 评测模块,上面这次 Jira 复测就是在里面完成的。下面用一个 commit-message Skill 做示例,介绍它的完整流程。

1. 评测方案:先定义「什么算好」

每个 Skill 先写一份评测方案,核心是指标和权重。每个指标可以选两种判分方式:

  • AI score:由 AI 按评分标准打 1-5 分,适合标题质量、动机说明这类语义判断
  • Rule check:用正则等规则断言判定,适合格式合规这类可精确核对的检查

这正好对应前面的经验:能用规则判定的用规则,必须语义判断的才交给 AI,而且评分标准要写进方案里,不能凭感觉。

评测方案:指标、判分方式与权重分布

2. 测试用例:手写、批量导入或 AI 生成

用例页支持三种来源:手动添加、批量导入、AI 自动生成。每个用例包含输入、期望结果(Expected),以及要对它启用哪些指标。

测试用例:每个用例声明输入、期望结果和适用指标

用例右侧还会汇总这个 case 在各配置下的最好和最差成绩,一眼就能看出哪些 case 是「区分度高」的难题。

3. 评测运行:版本和模型都是变量

触发评测时,选择 Skill 版本和运行模型,平台会批量运行并自动统计各项指标、波动(Spread σ)、平均耗时和 Token。运行历史里每一列是一次 run,按指标得分着色,每项指标的最优值会被标记出来。

下方的 Head-to-head 支持两种对比:

  • 纵向对比(同模型,不同 Skill 版本):平台会标明「Same condition: only the skill version differs」,保证变量只有一个,回答「这次改 Skill 到底有没有变好」
  • 横向对比(同版本,不同模型):回答「这个 Skill 换成更便宜的模型还行不行」,也就是本文这次复测要解决的问题
运行历史:指标 × 运行矩阵,以及两次 run 的 Head-to-head 对比

4. AI 数据报告:结论、建议和证据

运行完成后,可以选择若干次 run,让 AI 生成对比报告。报告分成三层:

  • Conclusion:结论,带差异幅度和置信区间
  • Recommendation:默认选择、条件选择,以及让结论更稳的下一步
  • Evidence:结果总览、稳定性、分组表现、失败分析、效率与 token、局限,每一节都可以展开查看分析和底层表格

报告还支持下载 Markdown 和数据包,方便归档或二次分析。

AI 报告:结论、选型建议与可展开的证据

一个细节:这份示例报告在「局限」一节里主动指出了数据的问题,比如样本里的回复内容被省略、case 数量偏少,所以结论只能依据分数。一份好的评测报告应该先说清楚自己的边界,而不是只给一个漂亮的数字。

💬 想体验或交流 Skill 评测平台? 欢迎在评论区留言,聊聊你在 Skill 评测上遇到的问题,或者想怎么用它。


小结

回头看,这次的整个过程其实就是三步:

  1. 质疑:全员接近满分、只有 1 个 case、AI 自己判对错,这些都是评测方法上的信号灯
  2. 重做:缩小范围、脚本判定、扩大样本、对齐真实任务
  3. 沉淀:把方法固化成平台,让下一次评测只是「加用例、选模型、点运行」

评测不该是一次性的结论,而应该是随着 Skill 和模型迭代,持续可重复的工程环节。


欢迎访问 PrimeSkills —— 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。

更多实用知识和有趣产品,欢迎访问我的个人主页