提示变更的卡口(CI 门禁)
把评测接进变更流程:提示文件一改就自动回放评测集,主指标低于基线或护栏指标恶化时阻止合并,并把逐样本对比报告附在流水线上。它的价值在于把「改提示」从个人经验判断变成有门槛的工程动作,也让每次上线的行为变化都有据可查。
基本信息
| 触发 | 提示文件变更(prompts 目录) |
|---|---|
| 执行 | 回放 golden 集与回归集,使用固定参数 |
| 通过条件 | 主指标不低于基线阈值 + 护栏达标 + 回归集无失败项 |
| 失败 | 阻止合并并附逐样本 diff 报告 |
典型使用场景
- 多人维护提示:任何改动都要过门禁才能合并
- 格式类改动:验证解析成功率没有下降
- 成本相关改动:同时看 token 消耗与延迟护栏
- 紧急热修:走紧急通道上线,事后补跑评测并归档结论
- 基线演进:门禁通过后更新基线并保留历史快照
门禁规则示例
门禁规则示例
# 触发条件
on:
paths:
- 'prompts/**' # 提示文件变更才触发
# 执行内容
steps:
- run: python eval/run.py --set golden-v3 --params fixed
# 固定采样参数,保证与基线可比
# 通过条件
- 主指标 >= baseline - 0.5pt
- 护栏:解析率 100%、P95 时延 <= 1.5s
- 回归集无失败项
# 失败处理:阻止合并,并输出逐样本 diff 报告门禁要素读法
| 要素 | 含义 | 配置不当的后果 |
|---|---|---|
| 触发范围 | 哪些变更会跑门禁 | 范围过大导致耗时,过小则漏检 |
| 主指标阈值 | 允许的最大退化幅度 | 阈值过松拦住不退化,过紧频繁误拦 |
| 护栏指标 | 解析率、延迟、成本等 | 只看主指标,另一维度悄悄恶化 |
| 基线快照 | 上一次通过时的成绩 | 没有基线就无法判断是否退化 |
| 报告 | 逐样本对比结果 | 只说失败不说差在哪,定位成本高 |
门禁的样本量太小时容易误放行:几十条样本上的 1 个百分点差异完全落在噪声里,门禁通过不代表没有退化。关键集要覆盖高频与高风险场景,并对阈值留出波动余量。
生产环境的热修需要紧急通道,但要有补偿动作:事后补跑评测、更新基线并记录原因,否则这条通道会变成绕过门禁的常规路径。