记录一下那天晚上的排查过程。提示词从 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 可靠得多。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189