跳到正文

CC-024:第三方 Anthropic 兼容端点返回 system role 400


问题现象

第三方端点返回类似错误:

400 ... messages[1].role: unknown variant `system`, expected `user` or `assistant`

这通常表示第三方所谓“Anthropic 兼容”接口没有实现 Claude Code 当前使用的完整 Messages API 行为。兼容范围应由该端点发布方证明,不能仅凭 Base URL 可连接就认定兼容。


已撤下的旧方案

旧版页面建议把任意第三方端点伪装成 Microsoft Foundry,设置 CLAUDE_CODE_USE_FOUNDRYANTHROPIC_FOUNDRY_*,并引用非官方论坛作为“标准做法”。Anthropic 官方资料只把相应变量用于实际的 Foundry 集成,本次没有官方依据支持将其用于无关端点,因此该方案已撤下。


最小排查

  1. 向第三方端点发布方确认其明确支持 Claude Code 当前版本和 Anthropic Messages API,而不只是基础 Chat Completions
  2. 使用该发布方正式记录的协议、Base URL、模型 ID 与鉴权头;不要从同名模型或搜索结果推断
  3. 用新的空会话发送最小请求,保存去除 Key/Token 后的响应状态与 request ID
  4. 如果端点只支持 OpenAI Chat Completions,应改用官方支持该协议的客户端,不要强行把它伪装成 Anthropic/Foundry
  5. 如果使用的确实是 Microsoft Foundry,按 Anthropic LLM Gateway 文档 与 Microsoft 官方资料配置

资料来源:Anthropic LLM Gateway 文档(2026-07-26 核对)