GPT image-2 怎么调用?2026 完整接入教程 + 踩坑实录
上周接了个小活,甲方要做批量生成商品主图的工具。需求很明确:传一段文字描述,出一张高质量商品图。我第一反应是 DALL·E 3,但试了几张发现文字渲染还是拉胯,英文勉强能看,中文直接乱码。然后想起 OpenAI 前阵子放出来的 GPT image-2 —— 就是 ChatGPT 里那个画图贼强的模型,现在 API 终于开放了。折腾了两天,踩了不少坑,总算跑通了整个流程,写篇文章记录一下。
GPT image-2 是 OpenAI 2026 年开放 API 的最新图像生成模型,通过 gpt-image-1 端点调用,支持文字渲染、风格控制和透明背景输出,生成质量比 DALL·E 3 有明显提升。下面是完整的接入方案和我踩过的坑。
先说结论
| 对比项 | DALL·E 3 | GPT image-2 (gpt-image-1) |
|---|---|---|
| 文字渲染 | 英文勉强,中文基本废 | 英文准确,中文可用 |
| 风格可控性 | 一般,prompt 要写很长 | 强,短 prompt 也能出好图 |
| 透明背景 | 不支持 | 支持(output_format=png) |
| 图片编辑 | 需要单独用 edit 端点 | 同一端点支持生成+编辑 |
| 价格(1024×1024) | ~$0.04 | 按 token 计费,约 $0.02-0.07 |
| API 端点 | /v1/images/generations | /v1/images/generations |
环境准备
Python 3.9+,装最新版 openai SDK:
pipinstallopenai>=1.75.0注意版本,老版本 SDK 不支持gpt-image-1的部分参数,我一开始用的 1.68 就报了参数错误,升级后才好。
方案一:基础文生图
最简单的调用方式,和 DALL·E 3 的接口几乎一样,换个 model 参数就行:
fromopenaiimportOpenAI client=OpenAI(api_key="your-key",base_url="https://api.ofox.ai/v1"# 聚合接口,一个 Key 调所有模型)result=client.images.generate(model="gpt-image-1",prompt="一只橘猫坐在赛博朋克风格的霓虹灯街道上,旁边有一个写着「深夜食堂」的招牌,招牌文字清晰可读",size="1024x1024",quality="high",output_format="png",n=1)# 返回的是 base64 编码的图片数据importbase64 image_data=base64.b64decode(result.data[0].b64_json)withopen("cat_cyberpunk.png","wb")asf:f.write(image_data)print("图片已保存")跑出来的效果说实话惊到我了,「深夜食堂」四个字居然真的是对的,笔画没乱。DALL·E 3 画中文基本就是鬼画符。
几个关键参数说明:
quality:low、medium、high,价格差不少,测试阶段用 low 就行output_format:png支持透明背景,jpeg体积小,webp也支持size:支持1024x1024、1024x1536(竖图)、1536x1024(横图)、auto
方案二:图片编辑(局部重绘)
这个是我觉得 GPT image-2 最实用的能力 —— 传一张图进去,告诉它改哪里:
fromopenaiimportOpenAIfrompathlibimportPathimportbase64 client=OpenAI(api_key="your-key",base_url="https://api.ofox.ai/v1")# 读取原图image_path=Path("product_photo.png")image_data=base64.standard_b64encode(image_path.read_bytes()).decode("utf-8")result=client.images.edit(model="gpt-image-1",image=[{"type":"input_image","image_url":f"data:image/png;base64,{image_data}",}],prompt="把背景换成纯白色,保持商品主体不变,添加柔和的阴影效果",size="1024x1024",quality="high",)edited_image=base64.b64decode(result.data[0].b64_json)withopen("product_white_bg.png","wb")asf:f.write(edited_image)做电商抠图换背景简直好用,之前要用 remove.bg + PS 手动调,现在一个 API 调用搞定。
方案三:透明背景 + 批量生成
做商品主图最常见的需求 —— 生成透明背景的图,方便后期合成:
fromopenaiimportOpenAIimportbase64importtime client=OpenAI(api_key="your-key",base_url="https://api.ofox.ai/v1")products=["一瓶极简风格的护肤精华液,磨砂玻璃瓶身,金色瓶盖","一双白色运动鞋,侧面视角,微微悬浮","一个黑色真皮钱包,半打开状态,45度角俯拍",]fori,descinenumerate(products):result=client.images.generate(model="gpt-image-1",prompt=f"{desc},透明背景,产品摄影风格,柔和的工作室灯光",size="1024x1024",quality="high",output_format="png",# 必须 png 才支持透明通道background="transparent",# 关键参数)img=base64.b64decode(result.data[0].b64_json)withopen(f"product_{i+1}.png","wb")asf:f.write(img)print(f"第{i+1}张生成完成")time.sleep(1)# 别太快,容易触发限流background="transparent"这个参数是 GPT image-2 新加的,DALL·E 3 没有。生成出来直接就是透明底,不用再后处理。
踩坑记录
说几个我实际踩到的坑。
坑 1:返回格式变了
DALL·E 3 默认返回url(一个临时链接),GPT image-2 默认返回b64_json。我一开始还按老代码去取result.data[0].url,结果拿到 None,debug 了半小时才发现。如果你确实想要 URL,需要显式传response_format="url",但官方文档说 URL 会在一小时后过期,建议还是用 base64 自己存。
坑 2:quality 参数对价格影响很大
GPT image-2 的计费是按 token 算的,不是按张。high质量的 1024×1024 大概消耗 4000-8000 token,low只要 1000-2000。我第一天测试没注意,全用 high,一天下来烧了好几十块。测试阶段真的用 low 就够了。
坑 3:中文 prompt 的玄学
虽然说支持中文文字渲染,但 prompt 里中文描述太长的时候,偶尔会出现文字错误。一个 workaround 是把需要渲染的文字用引号括起来,并且单独强调一下:
# 不太稳定的写法prompt="画一个咖啡店招牌,上面写着今日特惠拿铁半价"# 更稳定的写法prompt='画一个咖啡店招牌,上面写着「今日特惠 拿铁半价」,文字必须清晰准确,每个汉字都要正确'坑 4:并发限制
GPT image-2 的 rate limit 比文本模型严格不少。我用 asyncio 开了 10 个并发,直接被 429 了。后来改成 3 个并发 + 每次间隔 2 秒,才稳定下来。批量生成的话建议做个简单的队列。
调用链路
整个调用流程其实很简单,画个图看一下:
ofox.ai 是一个 AI 模型聚合平台,兼容 OpenAI API 协议,一个 Key 可以调用 GPT-5、Claude Opus 4.6、Gemini 3 等 50+ 模型,也包括 gpt-image-1。改个 base_url 就能用,不用折腾鉴权的事。
小结
GPT image-2 的 API 比 DALL·E 3 强了一个档次,文字渲染和透明背景这两个能力做电商图、营销素材、UI 素材都很实用。价格按 token 计费,小批量用其实不贵,大批量注意控制 quality 参数。
那个商品主图工具已经上线了,甲方还挺满意的。唯一的槽点是生成速度偏慢,high 质量的图大概要 10-15 秒,比 DALL·E 3 慢一些,但质量确实好,这个 trade-off 我能接受。
