在 AI 中转站里用 codex 模型生图,结果要么甩你一个 502,要么绕一圈只回一段"我建议你这样设计……"的文字,图就是出不来?
先别急着怀疑自己的配置——这大概率不怪你,是中转站没把 codex 模型的"生图"链路接通。这篇不绕弯子:先带你几分钟把图跑通,再讲清楚为什么大多数中转站会失败。
先把图跑通(跟着做就行)
客户端一键接入(推荐)
不想碰命令行和配置文件,就用这个,最省事:
- 点击下载 Teamo 客户端
- 登录后,在客户端里找到 Codex,点「下载 & 安装」即可(你也可以自行从 OpenAI 官网安装 Codex);
- 点「一键接入」,客户端会自动把 Codex 与 TeamoRouter 连接并配置好,codex 模型直接可用;
- 配置完成后,让 codex 生成一张图试试,比如"画一个扁平风格的天气 App 图标,蓝色调"——几秒钟,图就该出来了。
整个过程不用手写一行配置,wire_api、生图开关这些最容易踩坑的地方,客户端都替你设好了。
进阶:手动改 config.toml
习惯命令行、想自己掌控配置的,也可以手动接(完整步骤可参考 Codex 安装文档)。
第一步,配置 API Key(环境变量):
export TEAMOROUTER_API_KEY="你的-teamorouter-key"
第二步,编辑 ~/.codex/config.toml:
model = "gpt-5-codex" # 具体 codex 模型名以后台为准
model_provider = "teamorouter"
[model_providers.teamorouter]
name = "TeamoRouter"
base_url = "https://api.teamorouter.com/v1" # 具体地址以官网/后台为准
env_key = "TEAMOROUTER_API_KEY"
wire_api = "responses" # 关键:生图必须走 responses,不能是 chat
[features]
image_generation = true # 打开内置生图
两个最容易踩的坑:wire_api 一定要是 responses(走 chat 就没有 image_generation 工具),[features].image_generation 记得设成 true。配好后,同样让 codex 生成一张图验证即可。
图出来了?顺带搞懂为什么别处不行
如果你之前在别的中转站反复失败,多半是踩了下面的坑。用中转站里 codex 模型的人应该都熟悉这种体验——写代码、聊天、改 bug 全都丝滑,唯独一让它生图就出事,常见三种翻车姿势:
- 直接报 502,请求根本没落地;
- 请求通了,但模型退化成纯文本,图变成一段"文字描述";
- 最玄学的一种:日志里看着像在生成,
partial_image也在动,可最后聚合出来是空的。
表现各不相同,根子却是同一个:codex 模型的生图,走的不是标准的 /v1/images/generations 接口。
它走的是 Responses API 里内置的 image_generation 工具,底层调用 gpt-image 系列模型(如 gpt-image-2),图像数据以 SSE 流式返回的 partial_image_b64 一块块吐出来,最后要把这些分片正确聚合,才能拼出完整的图。这条链路对中转站的要求比纯文本高得多,至少要同时做到三件事:
- 完整实现
/responses接口,而不只是最常见的/v1/chat/completions; - 忠实透传
image_generation工具调用,不偷换模型、不降级; - 正确聚合 SSE 流里的图像分片,不把
partial_image_b64弄丢。
绝大多数中转站就栽在这三步上:有的只代理了文本接口,/responses 根本没实现;有的为省成本偷偷把 codex 换成便宜替代品,工具调用直接失效;还有的接口实现了、但流式聚合写得潦草,图在上游生成好了却在中转站这层被丢掉。TeamoRouter 能开箱即用,原因也就在这一点上——它把这条链路完整、忠实地代理了下来,不缩水、不偷换模型,所以 codex 生图不用你自己写脚本去拼分片。
还是生不出来?排查这三点
万一图还是没出来,别急着换服务,按顺序自查一遍,八成能定位:
wire_api是不是responses。 最高频的坑。很多人从旧配置复制过来,wire_api还停在chat,那条链路上根本没有image_generation工具,codex 自然生不了图。(用客户端一键接入的可以跳过这条。)- Key 有没有生图权限。 有些中转站的 Key 默认只开文本模型,图像要单独申请或在后台勾选。用 TeamoRouter 默认就是通的,手里是别家老 Key 的,值得确认一下。
- codex 是不是被偷换了。 前两步都对、文本也正常、唯独生图静默失败,基本可以怀疑上游把 codex 换成了不支持工具调用的便宜替代品——这也是"模型是不是真货"为什么重要:它不只关系到生图,也关系到你每次调用拿到的到底是不是真模型。
常见问题(FAQ)
为什么在中转站里 Codex 生图会报 502、或只回一段文字?
因为生图不走普通聊天接口,而是 Responses API 的 image_generation 工具。中转站要是没实现 /responses、偷换了模型、或没正确聚合 SSE 图像分片,就会表现为 502、退化成纯文本,或者拿到一张空图。
Codex 生图用的是 /v1/images/generations 接口吗?
不是。它走 Responses API 内置的 image_generation 工具,底层调用 gpt-image 系列模型,图像以 SSE 的 partial_image_b64 分片流式返回,聚合后才成图。
最容易被忽略的配置是哪个?
wire_api。必须设成 responses,走 chat 就没有 image_generation 工具,自然生不了图。用客户端一键接入会自动配好这一项。
我的 Key 要单独开生图权限吗?
有些中转站默认只开文本模型,生图要单独申请或在后台勾选。TeamoRouter 默认就是通的;如果手里是别家老 Key,建议先确认。
怎么判断模型有没有被偷换?
如果文本一切正常、唯独生图静默失败,很可能上游把 codex 换成了不支持工具调用的便宜替代品。选"模型真实、不降级"的服务是最直接的规避方式。更多选型判断可参考 AI 中转平台推荐。
最后
被中转站的 codex"生不了图"折腾过,大概率不是你的锅,是中转站没把活干完。跟着上面的步骤把图跑通就行,省心。
附:TeamoRouter 国内直连、免翻墙,人民币支付(支付宝、微信直充),Claude / GPT / Gemini 一个入口全覆盖,Claude Code、Codex、Cursor、Cline 都能接;企业侧另有高 QPM、SLA、发票合同等。官网 teamorouter.com,客户端见 下载页。