之前写的基本都是大模型或者 Agent 的一些评测内容, 今天科普一下 SKILL 的测试,毕竟星球中很多同学都对 skill 评测有需求。
做过大模型评测的同学应该明白, 大模型本身的评测模式仍然是 “输入 - 输出”,而测试测试人员只针对输出内容进行评测。 这还算是一种在流程上比较简单的一种模式(当然流程简单,但评测工作并不简单)。 而 skill 的使用场景是让 Agent 进行调用, 所以 Skill 往往不能只通过模型输出的 “最终答案” 来评估。 它仍然需要一些其他方向的验证。 比如,我们一般把 skill 的评测分为控制面和数据面两种方向:
这里列一些常用指标:
其实操作起来说简单也简单, 我们需要在调用 Agent 来唤起 skill 后, 拿到整个 Agent 的调用轨迹以及所有的产出物,一般来说 Agent 的返回中都会有轨迹信息和思考过程信息。 然后按格式进行解析。 把其中工具调用的信息, 产出的交付物信息, token 等信息都提取出来。 然后进行验证。 而一般验证会有几种形式:
一般在我们这样专门做 AI 的团队,都会有自研的评测工具, 尤其是现在 AI 编程很普遍,只要知道方法论,开发一个其实不困难。 但没有经验的同学总归还是希望有个思路。 那这里我也推荐一个开源的工具(针对 skill 评测的), 阿里最近开源了一个名叫 skill-up 的工具,虽然现在能力还偏弱(毕竟刚开源),但其中的一些思路,大家还是可以借鉴的。 比如我给一个 case 的样例, 它使用 yaml 来管理 case 的:
id: pipeline-summary-quality
title: 总结内容质量(agent_judge 语义评审)
description: |
LLM 评审 summary.md:是否点名需关注的门店、数字是否与 CSV 一致、建议是否可操作。
input:
prompt: |
使用 data-pipeline-analyst skill 完成以下任务:
拉取 2026-10-07 到 2026-10-10 的门店日销售数据(通过 sales-datasource 工具),
用 pandas 做聚合分析,产出 analysis_result.csv,并基于 CSV 数据撰写 summary.md 总结。
expect:
files_exist:
- "summary.md"
judge:
type: agent_judge
model: sonnet
criteria:
- "总结点名了所有需要关注的门店,并给出其退款率与退款订单数"
- "总结中的数字与 analysis_result.csv 中的数据一致,没有出现 CSV 中不存在的数据"
- "给出了至少 2 条可操作建议,针对具体门店给出具体动作,而不是空泛表述"
- "结论明确(哪家店最差、差在哪),而不只是罗列数字"
pass_threshold: 0.7
timeout_seconds: 120
上面是 skill-up 的一条测试用例, 它是用 yaml 来进行管理的。 可以看到 input 是我们的测试数据, expect 字段是一种断言,断言 summary.md 文件必须要存在,这是在断言 skill 的交付物。 而 judge 字段是另一个断言, 这里我们使用了 agent_judge,也就是裁判模型, 可以在 criteria 规定让裁判模型来验证的规则。 这与大模型评测是一样的。 当然也可以用脚本进行断言,比如另一个 case:
id: pipeline-trajectory
title: 执行轨迹健康度(工具调用次数、顺序、过程精简度)
description: |
skill-up 采集轨迹但不做聚合计算,本用例用 script judge 自行统计:
MCP 恰好调用 1 次、先拉数据后写文件、确实执行 pandas、无冗余写入、过程不过度冗长。
input:
prompt: |
使用 data-pipeline-analyst skill 完成以下任务:
拉取 2026-10-07 到 2026-10-10 的门店日销售数据(通过 sales-datasource 工具),
用 pandas 做聚合分析,产出 analysis_result.csv,并基于 CSV 数据撰写 summary.md 总结。
expect:
files_exist:
- "analysis_result.csv"
judge:
type: script
script_path: evals/fixtures/scripts/verify_trajectory.py
timeout_seconds: 60
上面用的断言就是一个脚本。 同时也可以有工具调用断言,如下:
id: pipeline-mcp-and-csv
title: 必须调用 MCP 拉数据并产出带正确表头的 CSV
description: |
规则校验:确实调用了 sales-datasource 的 fetch_store_sales 工具(含正确参数),
且产出了 analysis_result.csv 与 summary.md,CSV 表头符合 schema。
input:
prompt: |
使用 data-pipeline-analyst skill 完成以下任务:
拉取 2026-10-07 到 2026-10-10 的门店日销售数据(通过 sales-datasource 工具),
用 pandas 做聚合分析,产出 analysis_result.csv,并基于 CSV 数据撰写 summary.md 总结。
expect:
files_exist:
- "analysis_result.csv"
- "summary.md"
file_contains:
- path: "analysis_result.csv"
content: "store,orders,refunded,refund_rate,avg_order_value,total_sales,conversion_rate,status"
judge:
type: rule_based
success:
- tool_called:
name: "mcp__sales-datasource__fetch_store_sales"
args:
dataset: "store_daily_sales"
Skill-up 目前的功能还比较简单,不过很适合新手或者新团队进行使用。 当其实最好的方式仍然是根据自己的需要用 AI 定制一个工具出来。 大家可以借鉴 skill-up 的这种设计哲学。
最后再宣传下我得星球吧,更多教程可以加星球获取。也有专门的微信群。
