摘要:本文针对使用 AI 中转站接入 Codex 模型时生图失败的常见问题,提供了两种解决方案:推荐使用 Teamo 客户端一键接入,或手动配置 config.toml 文件。文章深入剖析了失败的根本原因——Codex 生图依赖 Responses API 的 image_generation 工具和 SSE 流式图像分片聚合,而多数中转站未完整实现此链路。最后,提供了三点关键排查步骤,帮助用户快速定位并解决问题。

在 AI 中转站里用 Codex 模型生图,结果要么甩你一个 502,要么绕一圈只回一段"我建议你这样设计……"的文字,图就是出不来?

先别急着怀疑自己的配置——这大概率不怪你,是中转站没把 Codex 模型的"生图"链路接通。这篇教程先带你把图跑通,再讲清楚为什么大多数中转站会失败。

先把图跑通(跟着做就行)

客户端一键接入(推荐)

不想碰命令行和配置文件,就用这个,最省事:

  1. 点击下载 Teamo 客户端

  2. 登录后,在客户端里找到 Codex,点「下载 & 安装」即可(你也可以自行从 OpenAI 官网安装 Codex);

  3. 点「一键接入」,客户端会自动把 Codex 与 Teamo 连接并配置好,Codex 模型直接可用

  4. 配置完成后,让 Codex 生成一张图试试,比如"画一个扁平风格的天气 App 图标,蓝色调"——几秒钟,图就该出来了。

整个过程不用手写一行配置,wire_api、生图开关这些最容易踩坑的地方,客户端都替你设好了。

进阶:手动改 config.toml

习惯命令行、想自己掌控配置的,也可以手动接。

第一步,配置 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 一块块吐出来,最后要把这些分片正确聚合,才能拼出完整的图。这条链路对中转站的要求比纯文本高得多,至少要同时做到三件事:

  1. 完整实现 /responses 接口,而不只是最常见的 /v1/chat/completions

  2. 忠实透传 image_generation 工具调用,不偷换模型、不降级;

  3. 正确聚合 SSE 流里的图像分片,不把 partial_image_b64 弄丢。

绝大多数中转站就栽在这三步上:有的只代理了文本接口,/responses 根本没实现;有的为省成本偷偷把 codex 换成便宜替代品,工具调用直接失效;还有的接口实现了、但流式聚合写得潦草,图在上游生成好了却在中转站这层被丢掉。Teamo 能开箱即用,原因也就在这一点上——它把这条链路完整、忠实地代理了下来,不缩水、不偷换模型,所以 codex 生图不用你自己写脚本去拼分片。

还是生不出来?排查这三点

万一图还是没出来,别急着换服务,按顺序自查一遍,八成能定位:

  1. wire_api 是不是 responses 最高频的坑。很多人从旧配置复制过来,wire_api 还停在 chat,那条链路上根本没有 image_generation 工具,codex 自然生不了图。(用客户端一键接入的可以跳过这条。)

  2. Key 有没有生图权限。 有些中转站的 Key 默认只开文本模型,图像要单独申请或在后台勾选。用 Teamo 默认就是通的,手里是别家老 Key 的,值得确认一下。

  3. codex 是不是被偷换了。 前两步都对、文本也正常、唯独生图静默失败,基本可以怀疑上游把 codex 换成了不支持工具调用的便宜替代品——这也是"模型是不是真货"为什么重要:它不只关系到生图,也关系到你每次调用拿到的到底是不是真模型。

最后

被中转站的 codex"生不了图"折腾过,大概率不是你的锅,是中转站没把活干完。跟着上面的步骤把图跑通就行,省心。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐