报错是这么冒出来的。产品文档里混用了 embedding、召回、rerank 这类词,提示词里照抄了一遍,模型输出的中文回答里夹着整句英文,客服直接把内容退回要求重写。
中间走过弯路,把「输出格式约束只写了字段名,没写语言」当成主因,改完现象没变。
排查方向其实有限,先把可能性排一排。提示词本身中英混杂,模型跟着模仿语体。还有一种是术语没有给统一译名对照。
另外,示例里的参考答案是中英混排的。
动手时先统计回答里英文片段的占比
python -c "import re,json;d=json.load(open('ans.jsonl'));print(len(d))"
再往下在提示词里固定术语表与输出语言
python -c "print('lang=zh-CN; terms: embedding=向量')"
接着把示例答案统一改成纯中文
python eval_style.py --set ans_100.jsonl --prompt v8.txt
回归抽检 100 条看英文残留
python eval_style.py --set ans_100.jsonl --prompt v8.txt --check-lang zh
别只看报错消失,验证要多做一步。100 条抽检里整句英文归零,专有名词按术语表保留原文,其余内容为中文,语体与产品文档一致。
提醒一点。模型会复制提示词的语言风格,术语表要明确哪几个词保留英文,其余一律中文;只写“用中文回答”往往挡不住专业词漂移。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
