模型对多语言指令的歧义消解方式与预期不符,但输出格式正确、延迟正常,无异常信号可追踪,只能靠人工审核或专项检测发现。建议对多语言输出增加针对性验证用例。
你把指令保留为英文,加了一条输出语言指令,得到的西班牙语输出流畅、切题、格式正确。但在团队没有人能看到的地方,它在各个方面都比英语输出差,因为下面的每一种失败情形产生的都是有效、自信满满的文本。
这份目录中的每一种失败都有相同的模式:模型消除歧义或处理不适用的约束时,做的是"合理"的事,而合理不等于你要求的。没有异常可以抛出,因为没有违反任何规则——模型收到的是一条未充分指定的指令,它自行补全了。
这正是这些错误只能通过母语审阅者或有针对性的检查来发现、本质上永远无法通过监控发现的原因。延迟正常、Schema 验证通过、语言检测器满意、回答切题——如果要在仪表盘上找信号,唯一通常会变动的指标是下游指标的缓慢漂移——某语种的解决率、踩踏率、升级率会在数月后才出现。
类似 Flag anything that looks off.(标记任何看起来不对劲的内容)这样的指令,要求模型解释两个英语习语并用西班牙语行动。它通常能做到,但解读比字面指令更宽松,而这种宽松会在hard case中显现。通用规则:指令中的习语只在跨语言场景下才收税,而且修复是免费的——改成 Mark anything inconsistent with the source document.(标记与源文档不一致的任何内容),指令现在在每种语言中都是字面意思了。
Summarise the article and translate it.(总结这篇文章并翻译它。)——翻译文章还是翻译总结?英语读者会结合上下文猜测,模型也会,而它的猜测受到它看到最多的英语文本的影响。同样的歧义在会完全省略代词的语言中会有不同的消解方式。任何包含未绑定的 it、them 或 the above 的指令都是潜在问题。指明对象。
Do not use jargon.(不要使用术语。)和 Write at a sixth-grade reading level.(以六年级阅读水平撰写。)都参照了英语教育和出版中存在的校准。以音节和句子统计定义的可读性公式不适用于翻译;以芬兰语请求某个年级水平只是在请求一个模型只能凭感觉去逼近的数字。用真正通用的术语说出你的实际需求——短句、常用词、不用缩写词。
Under 100 words(100 词以下)不是个可移植的单位。中文、日语和泰语不用空格分隔词,所以这个约束没有表面定义;德语合成词把英语需要四个词表达的内容合成一个词。用字符数,或者用每种语言的 token 预算。
Use title case for headings(标题使用首字母大写)在德语中没有意义,因为那里名词一律大写,而且在法语和西班牙语中是彻底错误的,它们在标题中使用句子大小写。模型在这些语言中被要求首字母大写时会输出看起来像英语翻译的东西。
引号不同——德语用低高配对,法语用带空格的书名号,CJK 用自己的括号。说 put the term in quotes(把术语放在引号中)会得到模型偏好的一种,往往是英语引号。
小数点位置用了本应是逗号的地方,月/日日期用了本应是日/月的地方,阿拉伯文数字用了本应是西方数字的地方——这些都是有效文本但都是错的。这些在《模型输出中的阿拉伯文数字》一文中有单独讨论。
输出 first name, last name(名,姓)的指令在家族名在前的语言和文化中是个类别错误,会悄无声息地让一部分用户的姓名颠倒。参见《家族名在前的姓名顺序》。
Never mention the word refund(永不提及 refund 这个词)约束的是英文字符串。写西班牙语的模型不会写"refund",会写 reembolso,而你的指令和你为执行它而建的过滤器都完全漏掉了它。
Few-shot 示例是提示词中杠杆效应最高的部分,因此也是留下英语假设后损害最大的地方。
输入包含美国街道地址、(555) 123-4567 格式的电话号码、06/03/2026 格式的日期以及 Dear Sir/Madam 结尾的示例,告诉模型这就是这个领域的样子。面对一张德国工单,模型已经被一个不匹配的模板 priming 了,它有时会重新格式化用户自己的数据去拟合——颠倒它本应保留的日期,或者把地址重组成德国邮政系统根本不用的顺序。
示例演示的是从输入到输出的映射,模型在改变语言的同时必须保持那个映射。结果往往读起来像英语答案的翻译,因为在某种意义上它就是。输出语法正确但有异域感,这是对模型西班牙语"听起来像翻译的"这一抱怨最常见的成因。
两者的修复方式相同:用目标语言的示例,用看起来像该语言真实输入的输入。完整论述见《为什么 few-shot 示例应该用目标语言》。
这些失败无法通过监控发现,所以检测必须是有意的。按大致成本排序:
Grep 自己的提示词,查找上述结构。习语、未绑定代词、词数、首字母大写、姓名顺序和英文字符串约束都可以通过阅读发现,这一步通常会找到好几个。
为你依赖的每个格式约束添加每种语言的检查:用字符长度替代词长度、期望的引号样式、期望的数字范围、期望的日期模式。
把你的否定约束翻译成每种支持的语言并检查所有语言,而不只是英语。这个列表很短,但它是这里风险最高的项目。
把英语控制组纳入你的评估中,这样每种语言的回归可以与任务失败区分开来。测试框架在于验证一个提示词在不同语言中是否表现相同。
找一位母语者每季度读二十篇每种语言的真实输出。上面没有任何东西可以替代它,而二十篇足够暴露系统性问题。
对于训练数据中代表性不足的语言,上面所有内容仍然适用,还会额外出现一组问题,包括更高效的信誓旦旦的捏造。这些在《低资源语言中的提示词工程》一文中有讨论。
Why Translating a Prompt Word for Word Produces Worse Output
Testing Whether a Prompt Works the Same Across Languages
Prompting Effectively in a Low-Resource Language