第 3 / 21 篇

第 2 章:评测集首先是一份数据合同

一行“问题—答案”不足以描述一个可维护任务。你还需要知道答案依据哪一版事实、允许采取什么动作、哪些资源不得修改、样本来自哪里,以及它代表哪一种使用场景。否则,同一输出可能因评审者心中的背景不同而得到相反结论。

2.1 样本 ID 与来源身份

稳定 ID 用来连接执行结果、人工意见和历史故障。ID 不应随列表排序变化;删除一条数据以后,其他任务也不应被重新编号。本实验使用项目、切分和任务类别组成可读 ID,生产数据也可以用不可推测标识,并单独保存受控来源映射。

来源记录包括采集时间、权利范围、脱敏方式、使用限制和版本。真实用户内容不应因为“只用于内部评测”而自动获得无限保存许可。脱敏还可能改变任务难度,处理前后的差异应进入数据说明。

Inspect 的数据结构把 input、target、id、metadata 和样本文件分开表达,说明任务输入与评分参考本来就是不同职责。[S3] 本书借用这一分层思想,自己实现轻量合同,没有依赖或运行 Inspect。

2.2 公开任务与私有参考

文件任务的公开部分包含初始文件和修改指令;私有参考包含应得到的完整文件内容,以及保护文件必须保留的字节。知识回答公开问题和可用文档;参考保存正确天数与真正支持该事实的文档 ID。

“私有”在这里描述输入职责,而不是宣称仓库文件已经被操作系统保护。实验把答案留在父进程,只复制候选脚本、任务和工作区文件到临时目录。仓库本身是公开的,候选与父进程也使用同一身份;恶意程序仍可能读宿主文件。第 6 章会明确这个教学隔离的边界。

2.3 内容哈希与版本说明同时保留

manifest.json 给出 samples.json 和 answers.json 的 SHA-256。加载器核对哈希、ID 唯一性、标签完整性和跨切分的项目重叠。只改答案而不更新清单,会被拒绝,避免悄悄用新标准解释旧报告。

哈希能证明字节一致,不能解释语义变化。因此版本说明还应记录新增、删除、标签修正和适用范围。某条参考答案被纠正后,可以用新评分器重评旧产物,但新旧结论要并列保存,不能覆盖历史结果而抹去判断过程。

本实验的数据版本为 synthetic-quality-v1,26 条任务全部由作者构造。它们有明确参考结果,却不代表真实流量分布,也不适合用来训练或排名真实语言模型。

2.4 分母必须可追踪

设想有 100 条任务,其中 20 条因连接失败没有执行。如果只对其余 80 条计算正确率,一个不稳定的系统可能看起来更优秀。报告应同时保存计划样本数、启动数、可评分数、成功数以及失败原因,并声明所用分母。

随书流水线把预算拒绝与执行失败保留在逐样本行中;发布门槛会拒绝不完整配对。它仍会生成演示统计,便于检查数据,但不允许用这些不完整结果支持发布。计算一个数和允许解释这个数,是两项不同的检查。

练习。 为一条生产失败建立样本卡:公开输入、私有参考、原始证据位置、保护条件、来源范围和版本。再设计一次标签更正,说明旧报告应如何保留,而不是只替换标准答案。