国内直连 gpt-image-2 的接入写法:端点、参数与超时设置
2026/8/22 11:25:04 网站建设 项目流程

生图API 怎么接 gpt-image-2?国内直连的完整写法

想在项目里用 gpt-image-2 出图,卡住的地方往往不是代码。官方接口国内直连不上,
注册要海外手机号,付款要国际信用卡,公司报销还拿不到发票。等这几关都过完,
项目排期早过了。

甜甜圈API(dashengfenshen.cn)把这一层做掉了:一个密钥,端点兼容 OpenAI 协议,
model改个字符串就切换模型。这篇讲 gpt-image-2 具体怎么调、参数怎么给,
以及超时和重试该怎么设。

它适合什么场景

生图这边我们常用的是三个模型,分工不一样:

模型 ID用在哪消耗
gpt-image-2质感和细节要求高的终稿按次计费
nano-banana-pro高清出图,支持超宽超高比例10 积分/次
nano-banana2跑量、草稿、批量试错8 积分/次

gpt-image-2 的长处是对复杂描述的理解和成品质感,短板是相对慢、相对贵。
所以它不该用来跑量——跑量用 nano-banana2 出十几张挑一张,
挑中的那张再用 gpt-image-2 或 nano-banana-pro 出终稿,这样成本和效果都合适。

接进来的完整写法

端点和 OpenAI 的chat/completions一致,所以现有代码几乎不用改,
换掉 baseURL 和密钥就能跑,不用装任何 SDK。

文生图,content直接给一段描述:

asyncfunctiontextToImage(prompt,model='gpt-image-2'){constr=awaitfetch('https://API_HOST/v1/chat/completions',{method:'POST',headers:{Authorization:`Bearer${process.env.TTQ_API_KEY}`,'Content-Type':'application/json',},body:JSON.stringify({model,messages:[{role:'user',content:prompt}],}),// 生图比对话慢得多,别照抄对话那套 30 秒signal:AbortSignal.timeout(120_000),});if(!r.ok)thrownewError(`${model}HTTP${r.status}`);returnr.json();}

图生图(改图、换背景、局部调整)把content换成数组,图和文字一起给:

asyncfunctionimageToImage(imageUrl,instruction,model='gpt-image-2'){returnfetch('https://API_HOST/v1/chat/completions',{method:'POST',headers:{Authorization:`Bearer${process.env.TTQ_API_KEY}`,'Content-Type':'application/json',},body:JSON.stringify({model,messages:[{role:'user',content:[{type:'image_url',image_url:{url:imageUrl}},{type:'text',text:instruction},],}],}),signal:AbortSignal.timeout(120_000),}).then((r)=>r.json());}

两个函数的区别只有content一处,其余完全一样——封装一次就够,
不用为文生图和图生图各写一套。

失败要能重投。生图的失败率比对话高,描述触发了内容策略、上游偶发超时都会失败。
把 prompt、model、参考图 URL 落进任务表,失败的按 id 重投,
不要让人工重新填一遍描述。

为什么超时要给到两分钟

对话接口是流式的,首字节很快就回来,所以 30 秒超时够用。
生图不一样——它要等整张图生成完才返回,中间没有任何输出。
模型越重、分辨率越高,这个等待越长。

把超时设成 30 秒的直接后果是:服务端其实出图成功了,但你的客户端已经断开,
这次调用照样计费,图却拿不到。
这是最冤的一种失败。

所以实操上有两条:超时按模型分档,跑量的快模型给 60 秒、终稿的重模型给 120 秒;
重试之前先确认上一次是真失败还是只是你超时了,否则会重复计费。

同理,前端不要直接调这个接口。让前端等两分钟不现实,
正确做法是后端收到请求先落一条任务记录返回 id,后台去跑,前端轮询自己的任务表。
顺带也避免了把密钥打进前端包。

常见问题

Q:出一张图要多久?
A:和模型、分辨率、描述复杂度都有关。跑量的快模型通常几秒到十几秒,
终稿模型会明显更久。上线前拿自己的真实描述跑一轮统计一下,别照抄别人的数字。

Q:一个密钥能不能同时调生视频?
A:可以,同一个端点换model就行。生视频的耗时是分钟级,
超时要单独放长,别和生图共用一套配置。

Q:图生图的参考图能用本地文件吗?
A:image_url收的是可访问的 URL,本地文件要先传到自己的对象存储或图床。
注意那个 URL 要能被服务端访问到,内网地址不行。

Q:返回的图片链接能直接存进数据库吗?
A:不建议。返回链接是有有效期的,过期就取不回来了。
拿到之后立刻转存到自己的存储,数据库里存自己的地址。

成本怎么控

关键是分级:跑量用便宜的快模型多出几版,挑中的才用贵的出终稿。
一上来就用最贵的模型试错,钱都花在废图上了。

再加一层结果缓存——同样的描述和参数如果已经出过图,直接返回旧结果,
不要重复调用。批量场景下这一层能省下的比换模型还多。


接口服务:甜甜圈API(dashengfenshen.cn)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询