跳转到内容

格式转换错误: No choices in response - CC Switch / Claude Code

Quick fix

ClinePass 把响应套了一层 data 信封导致解析失败,可升级含修复的 CC Switch 版本,或临时用本地代理解包 response.data 再转发。

报错原文
Gateway returned HTTP 422
格式转换错误: No choices in response
probedModel: claude-sonnet-4-6

ClinePass(api.cline.bot)的非流式 OpenAI Chat Completions 响应把真正的结果包在了一层顶层 data 字段里:choices 位于 response.data.choices,而不是标准的 response.choices。CC Switch 本地路由在做非流式响应格式转换时只读取顶层 choices,找不到就抛出 422「格式转换错误: No choices in response」。

同一 endpoint 的流式(SSE)响应分片里 choices 在顶层、不套信封,所以 stream=true 时完全正常;直连上游用 stream:false 请求 100% 复现 {"data":{"choices":[...]},"success":true} 信封。该问题不止出现在 Claude Desktop 的模型映射路径:Claude Code 的本地路由 claude 通道、Codex 的 Responses→Chat 转换路径(报错文案略为不同:No choices in chat response,说明存在独立的解析点)都会命中,且与具体模型无关(cline-pass/kimi-k3、cline-pass/deepseek-v4.1-flash 均复现)。另外该失败不会写入 proxy_request_logs,只能从 cc-switch.log 中发现。

  1. 升级到包含修复 PR #5671 的 CC Switch 版本(该 PR 在非流式 openai_chat 响应转换前,若顶层没有 choices 而 response.data.choices 存在,就先解包 response.data 再转换)。本 issue 仍为 open,升级前请确认所用版本已合并该 PR;报告者已确认 3.18.0 和 3.20.4 均受影响。

  2. 临时绕过方案:在 CC Switch 与 ClinePass 之间加一个小型本地代理(例如 Node.js),把上游响应中的 response.data 解包后再转发给 CC Switch。报告者确认这样可以消除解析错误,缺点是需要额外进程、端口和启动配置。

  3. 如果客户端支持,尽量走流式(stream: true)请求:流式 SSE 分片的 choices 在顶层,不套 data 信封,不会触发该错误。

ToolClaude Code(含 Claude Desktop 模型映射、Codex 本地路由)
Version3.18.0 - 3.20.4(均为受影响版本,issue 尚未关闭)
PlatformsWindowsmacOS
直连上游 API 返回 200,为什么 CC Switch 还是报错?
因为上游返回的 Chat Completions 结果被包在顶层 data 字段里(response.data.choices),CC Switch 非流式转换路径只找 response.choices,找不到就返回 422「No choices in response」。API key、模型、订阅本身都是正常的。
为什么同样的 ClinePass 配置在 GitHub Copilot / VS Code 里能用?
报告者推测 GitHub Copilot / VS Code 默认使用流式请求,而流式 SSE 分片的 choices 在顶层、不套 data 信封,所以不会触发这个问题。
为什么流式(stream: true)请求不会报错?
因为流式响应的 SSE 分片中 choices 就在顶层;data 信封只出现在非流式(stream: false)的响应里,只有非流式转换路径会撞上。
为什么 CC Switch 的用量/请求日志里看不到这些 422 失败?
有用户确认该失败不会写入 proxy_request_logs(status_code=422 的记录为 0),因为转换在记账之前就返回了;只能从 cc-switch.log 的 ERROR 日志(如 proxy::handlers 的「转换响应失败」)中发现。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。