回答的语言漂移(Language Drift),指模型在同一个回答里,输出语言逐渐偏离你提问时所用语言的现象。最典型的形态是:你用中文提问,前两段还是中文,第三段开始整段变成英文,结尾甚至又飘回中文。
它为什么会发生
关键在于,模型并不会“先决定用中文回答”,然后一路执行到底。它每生成一个词(token),都要重新猜一次“下一个词最可能是什么”。而这个概率很大程度上被已经写出来的上下文牵着走。
打个比方:把语言想成高速公路上的车道。模型每次只往前挪一米,每挪一米都瞟一眼旁边;如果左前方全是大写英文术语、代码块、论文腔的句式,它就更容易并到英文车道上。
常见的几个推手:
- 提示词和示例的语言不一致:系统提示(system prompt)用英文写,用户用中文问,少样本示例(few-shot)又是中英混排,模型收到的“该说哪种话”的信号本身就是噪音。
- 训练数据配比(data mixture):编程、学术、API 文档这类领域的高质量语料以英文为主,一旦话题滑进这些区域,英文先验就压过了“请用中文”这条弱约束。
- 话题切换:从闲聊转到技术细节,术语密度陡增,模型开始顺着语料走。
- 上下文变长:越往后,开头那句“请用中文回答”的影响力越被稀释。
和几个邻近概念的区别
| 概念 | 典型表现 | 关键区别 |
|---|---|---|
| 语言漂移 | 一次回答内部语言逐渐偏移 | 是过程性的,同一段输出里前后不一致 |
| 语码转换(Code-switching) | “这个 API 的 latency 有点高” | 人类语言习惯,通常是有意为之且合理 |
| 语言混淆(Language Confusion) | 一句话里单词级别乱跳 | 粒度更碎,多指向模型能力问题 |
| 不遵守语言指令 | 整篇英文回答中文提问 | 从头就错,不叫“漂” |
对实际工作意味着什么
对从业者:把输出语言当成一项可测指标,而不是默认行为。提示词里显式写死语言,示例也用目标语言,长上下文里语言约束值得再说一遍;做评测时单列一项“语言一致性”。不同厂商、不同模型对这件事的处理差异不小,具体机制以官方文档为准。
对普通职场人:看到回答中途切英文,先别默认它“更专业”,很可能只是话题进入了英文语料密集区。要拿去汇报的稿子务必通读一遍;长文档可以分段提要求,或者直接说“全文只用中文,专有名词可保留英文原文”。
