这类问题我又碰上了一次。分类提示词里放了 8 条示例,其中一条把“退款”标成了“咨询”,上线后退款类样本的准确率从 0.94 掉到 0.68,模型开始把退款也归到咨询。

第一反应是「提示词没有说明示例的判定标准」,验证下来不成立。

真正麻烦的地方在于,几个原因的现象几乎一样。示例是从旧标注集直接复制的,没有做一致性校验;示例里正负例比例失衡,错例权重被放大;示例顺序固定,模型对最后一条印象最深。

上来先逐条核对示例与标注是否一致

python check_fewshot.py --file shots.jsonl --labels intents.json

然后统计各类目在示例中的占比

python -c "import json,collections;print(collections.Counter(r['label'] for r in json.load(open('shots.jsonl'))))"

接着替换错例后重跑同一批测试

python eval_cls.py --set test_400.jsonl --shots shots_v2.jsonl

剩下的就是看各类目召回确认没有新的偏斜

python eval_cls.py --set test_400.jsonl --shots shots_v2.jsonl --per-class

怎么算真的好了,看的是同一批现象。退款类准确率回到 0.93,各类目召回差距在 4 个百分点以内,示例里的标签与标注集完全对齐。

提醒一点。few-shot 里的示例就是隐式规则,一条错例足以改变整个类目的边界;示例集要像训练数据一样做一致性校验和版本管理。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189