跳转到内容

Failed to deserialize the JSON body: unknown variant `image_url` - cc-switch Codex

Quick fix

对话中发送过图片后 DeepSeek 拒绝该会话历史,开启一段新对话即可恢复。

报错原文
{"error":{"message":"CC Switch local proxy failed while handling Codex endpoint /responses. Provider: DeepSeek; model: deepseek-v4-flash; upstream_status: HTTP 400; cause: Failed to deserialize the JSON body into the target type: messages[139]: unknown variant `image_url`, expected `text` at line 1 column 387526","type":"invalid_request_error","code":"invalid_request_error","param":null,"provider":"DeepSeek","model":"deepseek-v4-flash","endpoint":"/responses","upstream_status":400}}

在 Codex 对话中只要发送过一次图片(截图),该图片会以 `image_url` 类型的消息进入会话历史。此后每一次请求都会携带包含图片的完整历史,而 DeepSeek(包括 deepseek-v4-flash 和 deepseek-v4-pro)的接口只接受 `text` 类型的消息内容,于是 cc-switch 本地代理在转发 /responses 请求时被上游返回 HTTP 400,报 `unknown variant `image_url`, expected `text` 反序列化错误。这就是为什么即使之后只发文字、重启 cc-switch、删除并重新配置供应商也依然报错——问题出在该会话的历史消息里。

有用户报告使用理论上是多模态模型的 Qwen3.7-max 也遇到了同样的报错,说明该问题与具体模型是否支持图片无关,而是上游接口对消息体结构的限制。

  1. 在 Codex 中开启一段新的对话(不要在原来的会话里继续),之后即可正常发送文字消息;多位用户确认新建对话后即使再传截图也能正常使用。

  2. 如果业务上必须让模型处理图片,请确认所用供应商的模型是否真正支持 `image_url` 消息类型;DeepSeek 通道目前不支持,遇到图片必然触发此错误。

ToolCodex
Version3.16.1(报告时的 cc-switch 版本,是否为受影响范围未知)
PlatformsmacOS
删除供应商重新配置、切换成 deepseek-v4-pro 能解决吗?
不能。有用户尝试删除供应商重新配置、切换 deepseek-v4-pro、重启 cc-switch 都无效,因为错误来自当前对话历史中包含的图片消息,只有开启新对话才能解决。
为什么之后只发文字消息也报同样的错?
因为每次请求都会携带完整的会话历史,历史里那条 `image_url` 类型的图片消息会一直存在,DeepSeek 接口无法接受它,所以整个会话持续报错。
cc-switch 上测试连接正常,但 Codex 跑不起来,是同一个问题吗?
是的。连接测试只验证供应商配置,不携带图片消息;实际对话中带上了历史里的图片,才触发上游 400 错误。
用的是多模态模型(如 Qwen3.7-max)为什么也报这个错?
有用户反馈即使用理论上的多模态模型也出现同样报错,说明限制在于上游接口对消息体结构的反序列化要求,而非模型是否支持图片。

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