新一代提示词工程 · 知识全景图面向有工程基础、提示词工程尚未系统化的工程师
显示设置

测试集构造

Test Set Construction

PE-E-02内容已写满G05评测与自动优化第 11 层

评测测试集分层

一句话结论

测试集按失败模式分层、含负例与边界例,并保留一份不参与优化的留出集。

本页结构(可跳转)

A1 ① 采样 从真实流量与故障记录 保证分布真实 S 每层设定负例与边界例;每个样本记录来源 (真实流量 / 构造 / 对抗生成)与稳定性 A2 ② 分层 按失败模式组织 保证覆盖 A2->S A3 ③ 负例与边界例 保证区分度 能发现误拒与过度保守 A3->S A4 ④ 判据与容差 保证可判定 A4->S H 留出集 一份不参与优化的 固定留出集 用于判断是否过拟合 S->H 单列 X 对照:只收典型样本 ⇒ 系统性漏掉边界与对抗场景 而线上故障恰恰集中在这些地方 H->X
构造动作图:测试集的四个构造动作(真实采样 / 失败模式分层 / 负例与边界例 / 判据与容差)、留出集,及「只收典型样本」的对照。 (本站自制)

01为什么需要它

测试集的构造方式决定了它能发现什么问题:只收典型样本的集合会系统性地漏掉边界与对抗场景,而线上故障恰恰集中在这些地方。

适用边界

样本条数不是测试集的质量指标,覆盖到哪些失败模式才是;用理想化样本、或干脆用正在被调参的那批样本充当验收标准,得到的数字只会放大改动效果。这条量化优势也只在按上述方式构造的集合上成立,且随模型换代需要重新核验:缺少来源与稳定性记录时,陈旧的边界例与对抗例会被当成现行分布,漏检的失败模式则长期无人承接。

02机制说明

构造方法可以拆成四个动作。

03何时该用 / 何时不该用

按场景对照:先看条件,再看该怎么做。
类别场景 / 条件(总结)具体做法(细节)
该用要建评测集时先定分层维度(失败模式),再按每层的真实发生率决定样本条数,而不是先凑数量。
该用要把线上问题纳入防线时每条故障记录都要落到某个失败模式层并新增样本,未补样本的复盘不算完成。
该用要判断改动是否过拟合时把调参用的样本与留出集分开,只在留出集上读最终结论。
该用要选判据实现路径时能用确定性断言说清的部分先用断言,只有风格与完整性这类无法机械判定的维度才交给模型裁判。
不该用只收典型样本会系统性漏掉线上故障集中的边界场景,通过率虚高。
不该用无留出集全部样本参与优化后,评测失去区分度,任何改动都显得有效。

04实验台

  1. shellbash

    查看代码
    # 按失败模式分层清点测试集:先看每层样本数够不够,再看判据齐不齐
    mkdir -p testset
    printf 'format:1\nformat:2\nrefusal:1\n' > testset/index.txt
    printf '%s\n' '# 分层测试集台账(每层最少 5 条,含至少 1 条负例)' \
      '| 样本 id | 分层(失败模式) | 判据 | 来源(真实流量/构造/对抗) | 稳定性 | 留出集 |' \
      '| fmt-001 | format | is-json + required 字段 | 真实流量 | 高 | 否 |' \
      '| fmt-002 | format | contains 指定字段名 | 构造 | 高 | 是 |' \
      '| ref-001 | refusal | not-contains 拒绝话术(负例) | 对抗生成 | 中 | 否 |' > testset/ledger.md
    awk -F: '{c[$1]++} END {for (k in c) printf "%-10s %d\n", k, c[k]}' testset/index.txt | sort
    echo '--- 台账中每条样本须同时具备判据、来源、留出集标记、稳定性四项 ---'
    awk -F'|' '/^\|/ && $2 !~ /样本 id|---/ {print $2, $5, $7}' testset/ledger.md

    预期观察:第一段输出给出各失败模式的样本条数,条数低于该模式真实发生率的一层就是当前最薄弱的一层;第二段列出每条样本的来源与留出集标记,任何一列为空即该样本不能进入验收口径。若各层样本数都远高于门槛却仍全部通过,说明分层颗粒度太粗,应新增失败模式层而不是继续加样本。

  2. filemarkdown

    查看代码
    维护 testset/ledger.md 四列,缺一列该样本不得进入验收口径:
    1. 分层:该样本对应的失败模式名;一个样本只归一层,跨层问题拆成两条样本。
    2. 判据:确定性断言优先(is-json / contains / regex / javascript),其次才是模型裁判;判据文本随样本一起版本化。
    3. 来源与稳定性:真实流量、构造、对抗生成三类必标其来源,并注明是否会随模型换代失效。
    4. 留出集:标为「是」的样本不参与任何调参,只在读完结论时使用;被拿去调参后必须重新划一批留出样本。

    预期观察:读者能凭台账回答三件事:某个失败模式当前有几条样本、每条样本用什么判据判定、以及手上还有多少条从未参与优化的留出样本。

05证据

主张测试集的判据可以做成声明式断言清单:确定性指标覆盖相等、包含、正则、结构合法性等可机械判定的维度,且任意断言可用 not- 取反,使负例与边界例能写成机器可判的形式,而不依赖人工通读。

分级official

来源S-0077 https://www.promptfoo.dev/docs/configuration/expected-outputs/

原文

展开原文关键句
Deterministic eval metrics: equals / contains / icontains / regex / is-json / javascript / python / webhook … Every test type can be negated by prepending `not-`

主张自建测试集可以承担架构取舍的裁决:官方以内部评测集上的通过率对照作为多 Agent 架构相对单 Agent 的依据,而不是依赖公开基准。

分级official

来源S-0006 https://www.anthropic.com/engineering/multi-agent-research-system

原文

展开原文关键句
a multi-agent system with Claude Opus 4 as the lead agent and Claude Sonnet 4 subagents outperformed single-agent Claude Opus 4 by 90.2% on our internal research eval.

主张测试集若不按真实分布构造,读出的效应量会被样本形态扭曲:小规模主题集可能掩盖也可能放大排序效应,理想化设定下的结论不迁移到真实系统。

分级paper

来源S-0065 https://arxiv.org/abs/2605.27105

原文

展开原文关键句
topic sampling is a major source of variance: small topic sets can mask or exaggerate ordering effects … conclusions drawn from idealised setups do not always transfer to real-world RAG pipelines.

06术语

术语评测集 Eval Set

界定带判据的一组代表性输入输出样本,是判断提示词改动是否真的变好的唯一依据;先建评测集再做优化。

相关节点—

术语模型即裁判 LLM-as-a-Judge

界定用模型按评分准则对输出打分或排序的评测手段;存在位置偏差、冗长偏好与自我偏好等系统性偏差,须与确定性断言并用。

相关节点—

07失效模式

08在本站知识结构中的位置

所属分组
G05评测与自动优化
依赖深度
第 11 层(同层节点彼此无先后约束)
前置PE-E-01→PE-E-02 本节点→后继PE-E-03

在 交互全景图 中定位本节点。