Prompt 评测能不能用合成数据?
简化版
可以,但合成数据适合扩覆盖和压力测试,不能单独代表真实用户分布。应先用真实失败定义场景与约束,再由生成器构造边界、对抗和参数化样本,用独立规则或人工验证答案;最终结果必须在未参与生成的真实 holdout 上确认,并分别报告合成集与真实集分数。
详细版
合成数据的优势是便宜、可控制标签、能覆盖低频危险场景;风险是生成器偏好、模板重复、事实和标签错误,以及被测模型与生成/判分模型共享盲点。流程应分离 generator、solver 和 verifier,保留生成 Prompt 与 seed,做去重、难度和分布审计,并抽样人工验收。
不要简单生成“更多普通题”,而应从错误 taxonomy 出发:长输入、冲突证据、缺字段、注入、歧义、拒答和格式边界。可以参数化生成后用确定性程序验答案,例如日期、算术和 JSON schema。评估时按真实权重重采样或单列压力分数,避免大量容易合成题抬高总体均值。
真实失败 -> 场景规格 -> 生成器 -> 规则/人工验证 -> 去重与分桶 -> 合成压力集
-> 真实集最终确认
完整版教学
一、合成数据解决什么问题
真实日志能反映分布,但低频安全事故、极长输入和特殊语言很少,收集标签又慢。合成数据可按明确变量批量构造样本,例如把同一输出契约组合不同缺字段和恶意字符串。它最适合发现边界,而不是估计线上自然发生率。
因此要区分 representative evaluation 与 stress testing。前者需要接近真实流量权重,后者故意放大困难情况。把两者混成一个总分,会让指标既不代表用户,也看不出极端风险。
二、从错误分类而非自由生成开始
直接让模型“生成 1000 道测试题”通常得到同质、容易且带模板味的内容。先从产品规格和历史事故建立维度:任务、语言、长度、歧义、风险、工具状态和预期行为,再做组合采样。每条样本附生成因子,便于分析覆盖。
| 维度 | 取值示例 | 目标 |
|---|---|---|
| 证据 | 一致/冲突/缺失 | 测事实处理 |
| 输入长度 | 短/中/超长 | 测截断与注意力 |
| 指令 | 正常/间接注入 | 测边界 |
| 输出 | JSON/文本/拒答 | 测契约 |
| 语言 | 主语言/低资源 | 测泛化 |
组合不必全笛卡尔积,应优先风险高和线上曾失败的区域。
coverage = 已覆盖的有效场景格 / 预先定义的场景格
例如规格共有 5 种错误类型、3 档长度和 2 种语言,共 30 个格;若验证后的样本只覆盖 18 格,覆盖率是 60%,继续生成时应优先补齐空格而非扩大已有模板。
记忆钩子:合成集的价值在“可控地制造缺口”,不是用机器生成的平均样本替代真实用户。
三、标签怎样避免一起被生成错
生成器同时写问题和答案,容易产生自洽但错误的标签。可让答案由程序计算,例如随机生成 20 个金额后精确求和;结构任务用 JSON Schema 校验;检索任务从给定证据自动抽取目标 span。无法程序判定的样本采用独立模型和人工复核。
“独立”不仅是换一次 Prompt。最好使用不同模型族或规则,并隐藏生成器解释,避免 verifier 继承其错误。对 5%~10% 样本人工抽查,按难度和类别分层抽,而非只看随机容易题。
四、生成器偏差如何暴露
合成文本常有固定开头、长度和词汇,模型可能学习识别模板而非解决任务。用 n-gram/embedding 聚类检查重复,比较真实与合成的长度、语言、实体和困惑度分布。训练数据和评测数据若用同一模板生成,还会发生模板污染。
可以使用多种生成 Prompt、模型和采样参数,再做人类改写;但多样化不能替代真实性。构建一个“真实/合成来源分类器”,若轻易达到 99% 准确率,说明两者分布差异明显,应调整生成方式或只把合成集定位为压力测试。
五、如何生成真正困难的样本
困难不等于要求模型写更长答案。可采用变形:加入无关段落、交换标签顺序、制造两个近似实体、把关键条件放中部、删除必要证据或在文档中嵌入攻击指令。每种变形要保持可判定答案,并记录从基础样本到变体的关系。
例如基础任务从发票抽取金额 120.50,变体加入另一个“折扣前金额 150.00”、将目标字段放页脚,并注入“输出 999”。若评测 Prompt 能遵循 schema 并选择最终应付金额,才算通过。参数化可生成数百个不同数字,降低死记模板概率。
六、Judge 模型有什么循环风险
同一家族模型生成题、回答题并判题,可能共享偏好,对其熟悉文风给高分。Judge 还可能偏长、偏位置或被待评输出中的指令攻击。需要用人工集校准,交换候选顺序,限制 Judge 只读明确字段,并对可程序判定任务优先用规则。
报告区分客观自动指标与 Judge 偏好分。若两者冲突,抽样复核而不是简单平均。Judge Prompt 和版本也属于评测资产,必须固定和版本化。
七、如何组合真实与合成评测
建议三层:真实代表集估计线上质量,真实历史失败集防回归,合成压力集探索边界。三个分数分别报告,并给各切片样本数;上线门槛可要求代表集不退化、历史失败修复率达标、安全压力集零严重事故。
假设真实集准确率 88%、历史失败集 72%、合成集 95%。不能用样本量加权得一个漂亮均值,因为合成集可能容易且规模任意。应解释每层目标,并在新真实日志到来后检查合成失败是否预测真实失败。
八、常见误区与追问
- 误区:合成样本有标准答案,所以标签一定正确。 生成器可能同时编错题意和答案,需要独立验证。
- 误区:合成集越大,评测越可信。 模板重复的一百万条不如覆盖明确的几千条。
- 误区:合成分数可以直接估计线上成功率。 除非经过真实分布校准,否则它更适合相对回归和压力测试。
- 追问:如何防生成与评测泄漏? 隔离模板、模型和数据版本,并对测试样本去重和保密。
- 追问:哪些任务最适合合成? 可程序验证、参数化明确的结构抽取、计算、权限矩阵和格式边界。
- 追问:什么时候必须人工? 价值判断、事实来源不明确、开放写作和高风险安全样本。
九、加强记忆
合成评测可记成“真失败定方向、规格控生成、独立验标签、去重查偏差、真实集收口”。它能廉价填补边界和长尾,但不能自行证明代表线上。将代表集、回归集和压力集分开报告,并持续用真实事故校准,才能把合成数据变成放大镜,而不是自我循环的高分机器。