记录一下那天晚上的排查过程。提示词从 v6 改到 v7 后格式遵守率掉了 20 个点,两版加起来 1100 字,靠肉眼对了两遍也没看出是哪句改坏了,只能整版回滚。
刚开始盯着「评测只跑全量,没有按规则项拆分指标」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。提示词没有按段落拆版本,改动是整段替换。还有一种是没有单句消融测试,无法确认哪一句起作用。
少数情况下是回滚粒度是整版,回滚后旧问题又回来了。
第一件事是把两版按段落切成可比对的行
python prompt_diff.py --a v6.txt --b v7.txt --by line
再往下对差异句逐条替换做消融测试
python ablate.py --base v6.txt --patch diffs.json --set fmt_200.jsonl
接着按规则项拆分看每条的遵循率
python eval_rules.py --set fmt_200.jsonl --prompt v7.txt --per-rule
等前面都确认过,再把确认无效的句子单独回滚
python prompt_patch.py --base v7.txt --revert rule_12 --out v7_1.txt
怎么算真的好了,看的是同一批现象。定位到第 12 条规则改写后格式遵循率下降 18 个点,单句回滚后指标恢复到 92%,其余改动保留。
提示词要能按句子级别开关,整版回滚会把同时修好的问题又带回来;消融测试比肉眼 diff 可靠得多。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
