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

为什么必须先建评测集

Why Build an Eval Set First

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

评测评测集判据

一句话结论

先把判据与样本落成可复跑的评测集,再让每次提示词改动同基线相比,并随故障增补。

本页结构(可跳转)

I 输入 O 期望输出 C 判据 决定评测集的 价值上限 D 确定性判据 字段是否合法 / 是否含指定内容 是否命中正则 ⇒ 可复现、成本低,应优先 C->D 优先 M 模型辅助判据 相似度 / 评分准则 / 事实一致性 ⇒ 覆盖无法机械判定的质量标准 但自身有偏差 D->M 补充 N 边界 只覆盖被采样到的失败模式 ⇒ 须随真实故障持续增补 D->N L 两条组织要求 ① 按失败模式分层而非随机抽样 ② 与提示词一起版本化 M->L 组织
三件套结构图:评测集的输入 / 期望输出 / 判据,两类判据的先后关系,以及按失败模式分层与版本化的两条组织要求。 (本站自制)

01为什么需要它

没有评测集,任何「提示词变好了」的判断都不可复现,而不可复现的判断无法在换模型、换数据、换同事之后继续成立;日常提示词工作里最常见的内耗,正是几个人各自凭印象争论哪版更好。

适用边界

评测集只覆盖被采样到的失败模式,未被覆盖的失败仍会漏过;因此它需要随真实故障持续增补,而不是一次建好长期使用。

02机制说明

评测集的最小形态是一组输入、期望输出与判据三件套,其中判据决定评测集的价值上限。

03何时该用 / 何时不该用

按场景对照:先看条件,再看该怎么做。
类别场景 / 条件(总结)具体做法(细节)
该用开始优化提示词之前先建最小评测集,否则改动不可比较,只能靠印象判断好坏。
该用多人或多轮改动之后把评测集当基线复跑,用通过率变化代替口头结论。
不该用把它当一次性交付不随真实故障增补样本的评测集会逐渐失真。
不该用把「提示词更好」当成未证前提若成功标准未定义、任务定义还在反复变动,先固化成套样本与判据会把早期的错误形态一起冻结。

04实验台

  1. shellbash

    查看代码
    # 最小评测集:同一批输入上比较「基线提示词」与「候选提示词」
    npx promptfoo@latest eval -c promptfooconfig.yaml --no-cache
    # promptfooconfig.yaml 骨架:
    #   prompts: [prompt-baseline.txt, prompt-candidate.txt]
    #   providers: [<你的模型>]
    #   tests:
    #     - vars: { input: "<一条代表性输入>" }
    #       assert:
    #         - type: is-json
    #         - type: contains
    #           value: "<必须出现的字段名>"

    预期观察:两条提示词在同一批样本上各得一个通过率;先记录基线,再改提示词重跑,差值才是改动效果。若两边都 100%,说明判据太松或样本太易,应先加负例与边界例。

  2. filemarkdown

    查看代码
    维护 `eval-set.md` 三张表:
    1. 样本表:样本 id / 输入 / 期望输出或判据 / 来源(真实故障、构造、对抗)
    2. 失败模式表:模式名 / 对应样本 id / 当前通过率 / 上次变化时间
    3. 基线表:提示词版本号 / 评测集版本 / 通过率 / 结论
    规则:每次线上故障都必须落到某个失败模式层并新增样本;没有新增样本的故障复盘不算完成。

    预期观察:读者能凭三张表回答「这次改动是否真的变好」与「当前最薄弱的失败模式是哪一层」,而不是凭记忆回答。

05证据

主张官方把「成功标准」与「失败的评测」放在提示工程之前:先界定判据,再决定该改提示词还是该换模型。

分级official

来源S-0002 https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview

原文

展开原文关键句
Not every success criteria or failing eval is best solved by prompt engineering. For example, you can sometimes improve latency and cost more easily by selecting a different model.

主张一次提示词瘦身的收益是在内部评测集上量出来的:评测分数提升 10–15%,同时 token 与成本大幅下降——没有评测集这类改动无法被证实。

分级official

来源S-0012 https://developers.openai.com/api/docs/guides/latest-model

原文

展开原文关键句
In a sample of internal coding-agent eval runs, configurations with leaner system prompts improved evaluation scores by roughly 10–15% while reducing total tokens by 41–66% and cost by 33–67%.

主张先建评测集必然要先给判据分类:确定性判据(equals / contains / regex / is-json 等)与模型辅助判据(llm-rubric / factuality 等)是两条不同的实现路径。

分级official

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

原文

展开原文关键句
Deterministic eval metrics: equals / contains / icontains / regex / is-json / javascript ... Model-assisted: similar / classifier / moderation / llm-rubric / g-eval

06术语

术语评测集 Eval Set

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

相关节点—

术语门控即判据 Gate as Executable Criterion

界定把「这次改动是否可接受」写成可执行的检查脚本并以其退出码作结论,使质量判断可复现、可回归。

相关节点—

07失效模式

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

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

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