OpenRouter gpt-oss-120b 模型不支持中文请求的调试记录
Categories:
在使用 OpenRouter 提供的免费模型 API 时, 我遇到了一个令人困惑的问题. 同样的请求结构, 仅仅修改了提示词的语言, 就会出现完全不同的结果.
问题复现
我使用 openai/gpt-oss-120b:free 模型进行测试, 两个请求的唯一区别在于提示词语言. 第一个请求使用中文提示:
curl https://openrouter.ai/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-or-v1-xxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "openai/gpt-oss-120b:free",
"messages": [
{
"role": "user",
"content": "你是一个专业的本地化翻译专家"
}
]
}'
这个请求总是返回 429 状态码, 表示请求过于频繁或超出了配额限制. 然而当我使用英文提示时:
curl https://openrouter.ai/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-or-v1-xxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "openai/gpt-oss-120b:free",
"messages": [
{
"role": "user",
"content": "You are a professional localization translation expert"
}
]
}'
请求能够正常响应, 返回预期的模型输出.
调试过程
这种不一致的行为让人困惑. 429 错误通常意味着速率限制, 但问题在于两个请求几乎同时发送, 不应该存在速率限制的问题. 于是我开始系统地排查可能的原因.
我首先检查了 API 密钥的配额限制, 确认并没有超出限制. 接着验证了请求频率, 发现短时间内只发送了少量请求, 不应该触发任何速率限制机制. 排除了这些常见原因后, 注意到唯一的变量是提示词的语言.
寻求更强大的 AI 模型协助时, 我咨询了 Opus 4.6 Max 和 GPT-5.2 Extra High. 尽管它们是当前最先进的语言模型之一, 但都未能明确指出这个 bug 的根本原因. 这说明一些边缘情况或特定限制可能只有在实际测试中才能发现.
手动验证
既然自动化调试工具未能给出答案, 我决定手动验证各种假设. 测试了不同的中文内容, 包括简单的问候、技术问题和长文本, 所有中文请求都返回 429 错误. 相反, 使用相同长度的英文请求则能正常响应.
这个现象指向了一个明确的结论: openai/gpt-oss-120b:free 模型不支持中文请求. 模型对中文内容的处理可能触发了一个未被文档说明的限制机制, 导致 API 直接返回 429 错误而非更友好的错误提示.
经验总结
这次调试经历有几个值得注意的要点. 首先是 API 错误信息可能具有误导性. 429 错误通常表示速率限制, 但在某些情况下可能隐藏了其他限制. 其次, 自动化调试工具虽然强大, 但不是万能的. 一些特定于模型或平台的限制只有在实际测试中才能发现.
另一个重要教训是验证假设的必要性. 当多个高级 AI 模型都未能找出问题时, 手动系统化的测试仍然是最可靠的方法. 通过控制变量和逐一验证, 最终能够定位到问题的根源.
对于需要处理多语言内容的应用, 这也提醒我们在选择模型时要仔细查阅文档或进行充分测试. 免费模型往往有各种限制, 这些限制可能不会在主要文档中明确说明.
相关工具
在处理多语言内容翻译时, 我开发了一个 VS Code 插件 Project Translator, 专门用于项目的多语言本地化工作流. 它可以自动识别需要翻译的文件, 集成多种翻译服务, 并保持翻译的上下文一致性.
这个插件的设计初衷就是解决实际项目中遇到的多语言处理痛点. 通过自动化的方式减少手动翻译的工作量, 同时保证翻译质量. 在开发过程中也遇到过各种 API 限制和边界情况, 每个问题都需要仔细调试和验证.
结语
技术调试过程中, 总会遇到一些意想不到的问题. 关键是保持耐心, 系统地排查可能的原因, 不放过任何一个细节. 有时候最先进的工具也帮不上忙, 反而需要最基础的验证方法.
OpenRouter 提供了丰富的模型选择和灵活的 API, 这是它的优势. 但同时也需要注意, 不同的模型可能有不同的限制和特性, 使用前最好进行充分的测试. 免费模型尤其如此, 它们的限制往往更加严格且不透明.