构建黄金测试集
整理 50–200 个高质量的(输入、预期输出)样本对,覆盖真实使用中的长尾情况。
构建黄金测试集 是 CoddyKit 上的免费 AI Agents 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
什么是黄金集?
“黄金测试集”(或“黄金集”)是经过筛选的(输入、预期输出)对的集合,用于定义什么样的行为才是良好的。
每次修改都要根据这个集合进行衡量。
优秀黄金集的特征
- 多样——涵盖常见 AND 边界情况
- 由人工筛选——不是自动生成的
- 有版本管理——冻结在 YOUR 代码库中
- 有文档说明——每个案例都有理由说明
需要多少案例?
经验法则:
- 50 个案例——最低可行数量
- 200 个案例——良好的覆盖范围
- 1000 个以上案例——成熟的产品
质量 > 数量。精心选择的 50 个案例胜过随机选择的 500 个。
案例来源
- 用户访谈——真实用户会提出什么问题
- 生产日志——实际收到的问题
- 错误报告——每个错误都变成一次评测
- 对抗性生成——要求 LLM 攻破智能体
Mining Bad Production Traces
for trace in last_week_traces():
if trace.has_thumbs_down or trace.had_error:
case = {
'input': trace.input,
'why_bad': trace.feedback_comment,
'expected': None # to be filled by human reviewer
}
save_to_review_queue(case)预期输出:精确匹配与启发式判断
预期输出有两种形式:
- 精确匹配——用于提取、分类和计算
- 启发式判断——用于开放式问答,评估是否出现了关键事实
Heuristic Scoring
def score_answer(actual, expected_facts):
return sum(1 for f in expected_facts if f.lower() in actual.lower()) / len(expected_facts)
case = {
'input': 'What is our refund policy?',
'expected_facts': ['30 days', 'unopened', 'receipt required'],
'min_score': 0.66 # at least 2 of 3 facts mentioned
}
actual_answer = "You can return items within 30 days if they are unopened."
score = score_answer(actual_answer, case['expected_facts'])
print(f"Score: {score:.2f} (min required: {case['min_score']})")
对抗性案例
请纳入困难案例:
- 超出范围的问题(“火星上的天气怎么样?”)
- 含糊的查询
- 提示词注入尝试
- 外语输入
- 非常长的输入
黄金集的版本管理
将其以 JSON 格式存储在您的代码库中。每个更新该集合的 PR 都必须说明原因:
// gold-set.json
[
{
"id": "refund-policy-001",
"input": "What is your refund policy?",
"expected_facts": ["30 days", "unopened", "receipt required"],
"added_by": "alice@",
"added_at": "2025-08-12",
"reason": "Top customer support question"
}
]测试集/保留集划分
要检测过拟合,请划分为:
- 开发集——用于迭代(您会看到这部分数据)
- 测试集——用于衡量(您不得针对它进行调优)
- 保留集——仅在重大版本发布前使用
帕累托标记
按类别标记案例,以便查看 WHERE 发生了回归:
tag1 = {'tags': ['policy', 'common-question']}
tag2 = {'tags': ['math', 'edge-case']}
print(tag1)
print(tag2)
# Run eval and report:
print("Category 'policy': 0.92")
print("Category 'math': 0.68 <- regression here")
评测评分标准
对于复杂输出,请编写评分标准:必须包含什么、必须 NOT 包含什么,以及哪些内容更理想:
rubric = {
'must_include': ['30 days'],
'must_not_include': ['no refunds'],
'preferably_includes': ['receipt']
}
for k, v in rubric.items():
print(f"{k}: {v}")
案例来源
评测案例的最高信号来源是什么?
回顾
至少 50 个经过筛选的案例,来源于真实用户和生产环境故障。为其进行版本管理和标记,并划分为开发集/测试集/保留集。每出现一个错误就扩充它。
常见问题解答
「构建黄金测试集」课时是免费的吗?
是的 — 「构建黄金测试集」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「构建黄金测试集」这节课中我会学到什么?
整理 50–200 个高质量的(输入、预期输出)样本对,覆盖真实使用中的长尾情况。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「构建黄金测试集」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。