校长教教我怎么做测评集
回复 群友 8086: 测评集的核心不是"题多",是"每条题都在验一个具体能力,而且判分口径写死了"。按这个思路,分五步。 第一步,先定判分口径,别先造题。把你的任务拆成两类:一类是硬约束,能直接写规则判的,比如该调的工具没调、调了禁用的工具、JSON 格式错、把用户手机号输出出来了——这些不用人看,一个断言就卡住。另一类才是真正"没有标准答案、只有好坏"的,比如回答够不够贴题、语气对不对、多轮里有没有记住前文。这类的才需要测评集和 judge。很多人一上来就攒几百条题,结果发现八成的失败都是格式问题,那根本不该进测评集。 第二步,用例优先从真实 badcase 来。自己闭门想出来的题往往很"漂亮但不真实"。正确的来源是你线上日志里翻车的、你调试时被问倒的、同事吐槽过的。每条都要存三样:输入、期望行为、判分方式。举个具体的,客服 Agent 的一条: 输入 "我上周买的东西还没到,退款!" 期望行为 先查订单状态;若已发货,说明进度并给查询入口;不能编造物流信息 判分 规则判有没有调 order_status 工具 + LLM judge 判有没有编造 这样一条题才是一个完整考点,而不是扔一句问题进去看它自由发挥。 第三步,分层,别只有一个大集合。我一般分三层:金题集,30 到 50 条,每条一个考点,覆盖你所有核心能力,最后一条专门放最难最刁的负例;回归集,就是每次改 prompt、改工具都要跑的,用 CI 自动跑,分数掉了直接红灯;线上抽样,定期从真实流量里捞一批人工过一遍,防止测评集和真实分布脱节。金题集是"我想让它做到什么样",线上抽样是"它实际在被怎么用",这两个不能互相替代。 第四步,打分三件套。规则断言管硬约束,LLM judge 管质量,人工管校准。LLM judge 这块是最容易做出假分数的,三个偏差必须防:一是倾向打高分,二是偏好长答案(所以换个啰嗦的模型分数就涨了,你测的其实是长度),三是偏爱自己家族的输出——让 Claude 判 Claude 分就是虚高。实操上就是:裁判用另一个家族的模型、rubric 写具体到能打几分(1 分什么样、3 分什么样、5 分什么样都列出来)、成对比较的时候把 A/B 顺序随机换一遍消除位置偏差。还有一个,一次只让 judge 打一个维度,别"综合评分 1 到 10",那就是玄学。 第五步,校准。抽 10% 让两个人各打一遍,算一下 Cohen's Kappa,低于 0.6 说明你的判分口径还有二义性,不是标注员不努力,回去改 rubric。这一步九成的人跳过,跳过的代价就是最后发现模型学的是一个自相矛盾的标准。 再说一下你们刚在聊的主观题,比如情感类的。这类不要用绝对分("这条共情度 7 分"没人能标准),要用成对比较:同一个输入给两个版本,judge 只回答"哪个更好,为什么",因为比较比打分稳定得多。真要打分就配 rubric 加例子,并且明确写"什么算扣分"。数据集也是同理,别去网上找一个"通用情感数据集",你的产品里用户是什么语气、会为什么生气,只有你自己的日志知道,自己抽 200 条标注出来的边界,比一万条公开数据有用。 最后一个坑,别把模型批量生成的答案当 ground truth 收进测评集。训练能用,测评不行——你等于拿 A 去测 A 生成的东西,指标全是虚的。 想上手最快的话:今天就去翻你最近 20 次翻车记录,每条写成"输入 + 期望行为 + 判分方式",先跑起来。评测集是长出来的,不是一次设计出来的。