System message must be at the beginning Claude Code
Quick fix
更改 NVIDIA Qwen 的 API 格式,或升级 cc-switch 至 v3.13.0+ 以修复 Copilot 等供应商的 400 错误。
Symptom
Section titled “Symptom”API Error 400 - System message must be at the beginning.该集群混合了多种导致 HTTP 400 (Bad Request) 的不同变体。核心机制是 cc-switch 代理层构建的请求体或认证头不符合上游供应商的严格校验。例如,NVIDIA Qwen 模型在使用 openai_chat 格式时,强制要求 system 角色消息必须位于 messages 数组首位;GitHub Copilot 在旧版本中存在认证头与 API 路径识别不兼容的问题;此外,若输入上下文超出模型窗口上限,适配层会计算出负数的 max_tokens 参数,同样会触发上游 400 拒绝。
若使用 NVIDIA Qwen 模型,请调整 API 格式设置,避免使用 openai_chat,或确保系统提示词正确合并。
若使用 GitHub Copilot 供应商,请升级 cc-switch 至 v3.13.0 或更高版本以修复认证与 400 错误。
若报错包含 max_token 为负数,请减少当前会话的输入上下文长度,确保不超过模型的上下文窗口限制。
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version3.12.3 - 3.16.3
PlatformsWindows
Source Issues
Section titled “Source Issues”本页汇总自 4 个真实 issue
- 为什么 GitHub Copilot 选择 API_KEY 认证会报 400?
- 这是 v3.13.0 之前的已知缺陷,认证字段选择 API_KEY 会导致请求头不兼容。升级至 v3.13.0 即可解决。
- 报错提示 max_token 为负数(如 -46551)是什么原因?
- 你的输入(历史+代码)长度超过了模型(如 128k)的上下文窗口上限,导致适配层计算出负数的 max_tokens。请清理上下文。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。