数据集、成对实验与场景迁移
Prompt改写是否更好,需要同一输入上的比较。将开发集用于改提示、最终保留集用于报告,防止每次都对公开测试题调参。抽取、摘要、研究、代码生成的指标不同:格式通过率不等于事实正确率,文字更流畅也不等于业务完成。
python
old = {'normal': [1,1,1,0], 'missing': [1,1], 'injection':[1,1]}
new = {'normal': [1,1,1,1], 'missing': [1,0], 'injection':[1,0]}
def rate(xs):
return sum(xs)/len(xs)
changes = {group: rate(new[group])-rate(old[group]) for group in old}
assert changes == {'normal':0.25,'missing':-0.5,'injection':-0.5}
assert rate(sum(new.values(),[])) < rate(sum(old.values(),[]))
print(changes)1代表符合这条样本的完整验收条件,不是模型自评分。新提示正常题提升,却在资料不足与注入题退步;如果只看“正常输入更顺畅”就会错误发布。样本很少,差异只能作为回归信号,不能证明统计显著性。
构造有区分力的题
抽取任务测试字段缺失、否定、冲突、多个对象;摘要测试关键限制和引用;代码任务运行测试并审查依赖与权限;研究任务检查资料来源、时间与相互冲突。改写、编码、长文夹带和跨轮诱导应放在对抗集,不要求攻击只含“忽略指令”字样。
程序评估适合格式、数值和可执行规则;LLM评审适合按rubric判断某些主观质量,但要匿名版本、随机顺序、交换A/B位置,并拿人工标注校准。相关性、事实支持、拒答适当性分别评分,避免长回答获得不应有的优势。投票一致只表示评审一致,不证明事实。
线上重问、转人工、完成率和用户反馈反映不同问题;点赞受界面与样本选择影响。把线上失败去标识化后加入回归集,再记录prompt、示例集、schema、模型、参数、检索快照和时间。缓存与实验分流都必须包含这些配置身份。
迁移场景时保留任务契约,重新做样例与指标:客服标签prompt不能直接搬到医疗判断;一种语言的格式通过率也不能代表另一语言的实体识别质量。上线门槛应写成具体不能退步的分组与成本上限,而不是“总体感觉不错”。
练习
给上述比较加入latency组不能直接求准确率。为延迟建立单独数据,并比较相同样本平均耗时,解释为什么还需要尾延迟。
完成后查看本章答案。
返回完整学习路线。