提示词里写“不要编造未提供的价格”,上线后模型确实不编了,但每条回答末尾都加一句“以上价格仅供参考”,客服以为系统出了故障。

原因不止一个,得分开看。否定式指令只约束了内容,没有约束行为;模型把免责声明当成满足指令的方式;提示词里没有给“资料不足时”的标准回复;示例里恰好有一条带免责声明的样本被模仿。

先抽 50 条回答看免责声明出现的位置

python -c "import json;d=json.load(open('ans.jsonl'));print(len(d))"

然后把否定句改成正向要求加固定话术

python -c "print('if_missing=回复:资料未收录,请补充')"

接着在 few-shot 里放一条拒答示例

python eval_prompt.py --set miss_30.jsonl --prompt v7.txt

回归确认正常问题不再带声明

python eval_prompt.py --set normal_100.jsonl --prompt v7.txt

恢复的判定其实很直接。资料缺失时统一输出约定话术,正常问题的回答里不再出现免责声明,30 条缺资料样本的拒答率到 100%。

容易忽略的是,告诉模型不要做什么,它往往会找个折中动作来交差;把缺失场景的固定话术写清楚,比反复加强否定语气有效。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189