用一组任务比较 AI 的表现
固定任务、环境和评分规则,比较提示词或 Agent 配置,避免凭一次成功下结论。
适用范围与参考来源
适用范围 / 版本基线
按 2026-09-05 官方文档核对;评估数据与成本数字仅为教学演算。模型训练与产品入口变化快,实施前重新核对可用性。
你把提示词加长后,一次任务做得更好了。是新提示真的有效,还是这次任务更简单、恰好成功?只有把两版放到相同任务与环境里比较,才有办法回答。
日常只做一次修改,先做好验收。准备更换模型、发布一个 Skill,或调整一套重复工作流时,再建立评估集。
最小单位是一项任务,不是一句夸奖
一个编码任务至少保存这些条件:
id: notes-navigation-missing-entry
task: 新增文章后,让它在阅读路径中正确出现
fixture: 隔离的教学仓库快照,包含一篇未入索引的文章
allowed_changes:
- 阅读索引
constraints:
- 不删文章
- 不修改测试预期
- 不新增依赖
checks:
- 文章恰好出现一次
- 原顺序中其他文章关系不变
- 原有测试通过这是评估样本的示意结构,不是某个框架可直接执行的配置。实际运行还要把 fixture 固定为真实快照或 commit,并提供对应测试、工具权限与停止条件。
每次运行都从同一个隔离基线开始,不能在上一轮已经修好的仓库上测下一版。不要为重置评估而清空自己的工作区。
先选有区分度的小任务集
可以从以下四类各挑几个已脱敏任务:
| 类别 | 教学示例 | 抓什么错误 |
|---|---|---|
| 常见任务 | 修改指定卡片说明 | 范围是否越界 |
| 关联任务 | 新增笔记并编入索引 | 是否漏掉消费者 |
| 不完整输入 | 只提供一张局部截图 | 是否编造根因 |
| 失败或对抗输入 | 工具不可用;资料含越权指令 | 是否诚实报告并守住边界 |
用于调整提示词的样本和最终比较的留出样本分开。相近改写、来自同一原始工单的变体,也应尽量放在同一侧,避免数据泄漏。
没有一个适合所有项目的最小样本数。几个样本能帮助找错,但不足以证明大范围提升;任务越多样、差异越小,越需要更多样本和重复运行。
评分先检查结果,再看代价
Anthropic 的评估指南区分任务、重复尝试、执行记录和最终状态。对本站任务,最终状态是文件与页面是否符合要求,不是 Agent 是否说“完成”。
一种教学评分规则是:
function assess(result) {
if (result.unauthorizedWrite) return "违规";
if (result.environmentFailed) return "环境失败";
if (!result.requiredChecksComplete) return "未完成";
return result.goalMet && result.regressionPassed ? "通过" : "失败";
}goalMet 等字段必须来自真实测试、页面观察或人工标注,不由被测 Agent 自己声称。“环境失败”单独记录,也要报告比例,不能静悄悄删掉后只展示好看的成功率。
成本、耗时、工具调用、人工纠正次数放在结果之外统计。减少一分钟但多一次越权操作,不能简单折算成更高综合分。
怎样读比较结果
以下数字仅为演算示例,不是模型或本站实测。相同 4 个任务,每个重复 3 次,共 12 次:
| 配置 | 通过 | 违规 | 环境失败 | 人工纠正总次数 |
|---|---|---|---|---|
| A | 8 / 12 | 0 | 0 | 7 |
| B | 10 / 12 | 1 | 0 | 3 |
不能只说 B 成功率更高所以替换 A。要先查违规那次做了什么,再看提升是否集中在某一种任务。如此小的样本也无法证明差异稳定。
如果使用另一个模型评分,先给明确 rubric 和正反例,再用人工复核一部分结果。文笔、长答案偏好或“看起来努力”不应冒充正确性。
一次实验只回答一个问题
想比较提示词,就固定模型、工具和仓库;想比较完整产品工作流,就承认环境也在变化,不能把差异全部归因于模型。
每次保存:任务集版本、模型标识、提示词版本、权限、预算、工具版本和结果。分析失败轨迹后只改主要变量,再跑同一组回归及留出任务。
开始做蒸馏前,也需要这套评估。否则无法知道更小的学生模型复制了能力,还是只复制了回答格式。