
GPT Image 2 API 接入完整教程:Python / Node.js / Curl 全流程
GPT Image 2 API 接入開發者教程。涵蓋鑑權、所有參數詳解、Python 和 Node.js 程式碼範例、圖片編輯、批次生成、錯誤處理和成本最佳化——一篇文章學完上線。
如果你想把 GPT Image 2 整合到自己的產品、自動化流水線或批次生成工作流,API 是唯一的路徑。這篇文章覆蓋了你需要的全部內容——鑑權、參數詳解、Python 和 Node.js 程式碼範例、圖片編輯、錯誤處理、成本最佳化。
讀完這篇你能直接拿去對接生產環境的真實流量。
準備工作
開始前你需要:
- 一個 OpenAI 開發者帳號(platform.openai.com)
- 已儲值的帳單帳號(圖像生成是付費的,新帳號可能有試用額度)
- API Key——在 platform.openai.com/api-keys 生成
- Python 3.8+ 或 Node.js 18+
國內開發者:穩定 API 接入路徑
如果你在國內開發、對 OpenAI 直連不穩定有顧慮,或者希望由一個穩定中轉服務統一處理失敗重試、彙總計費、SLA 保證,可以發郵件到 support@gpt-image2.art 申請獲取一個可商用的 GPT Image 2 中轉 API Key。中轉服務保留了同樣的 gpt-image-2 模型名、同樣的參數規範、同樣的回應格式——你的程式碼不需要任何修改,只換 base URL 即可。
第一步:安裝 SDK
Python
pip install openai pillowpillow 是可選的,只有在需要對返回的圖片做後處理時才裝。
Node.js
npm install openai
# 或
pnpm add openai第二步:設定 API Key
永遠不要硬編碼 API Key。用環境變數。
新建 .env 檔案:
OPENAI_API_KEY=sk-proj-your-key-here程式碼裡載入(Python 用 python-dotenv,Node.js 原生支援或用 dotenv)。
第三步:生成第一張圖
Python — 最簡可運行範例
import os
from openai import OpenAI
import base64
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
result = client.images.generate(
model="gpt-image-2",
prompt="一支白色不鏽鋼保溫杯立在淺米色亞麻桌布上,高級產品攝影,1:1 方圖。",
size="1024x1024",
quality="medium",
n=1,
)
# 圖片以 base64 返回
image_b64 = result.data[0].b64_json
with open("output.png", "wb") as f:
f.write(base64.b64decode(image_b64))
print("已儲存到 output.png")Node.js — 最簡可運行範例
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const result = await client.images.generate({
model: 'gpt-image-2',
prompt:
'一支白色不鏽鋼保溫杯立在淺米色亞麻桌布上,高級產品攝影,1:1 方圖。',
size: '1024x1024',
quality: 'medium',
n: 1,
});
const imageB64 = result.data[0].b64_json;
fs.writeFileSync('output.png', Buffer.from(imageB64, 'base64'));
console.log('已儲存到 output.png');Curl — 用於 shell 程式腳本和快速測試
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "一支白色不鏽鋼保溫杯立在淺米色亞麻桌布上。",
"size": "1024x1024",
"quality": "medium",
"n": 1
}'所有參數詳解
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
model | string | 是 | 必須是 gpt-image-2 |
prompt | string | 是 | 圖像描述,最長 32,000 字元 |
size | string | 否 | 縱橫比(1:1、16:9、9:16)或顯式像素(1024x1024、1536x1024、1024x1536) |
resolution | string | 否 | 1K(約 1MP)/ 2K(約 4MP)/ 4K(約 8MP)——部分中轉支援顯式解析度檔位 |
quality | string | 否 | low / medium / high,影響輸出 token 數和價格 |
n | integer | 否 | 一次生成幾張,1-10 |
image_urls | array | 否 | 1-16 張參考圖(圖像編輯 / 圖生圖用,每張 ≤50MB,支援 JPEG / PNG / WEBP) |
output_format | string | 否 | png(預設)、jpeg、webp |
output_compression | integer | 否 | 0-100,僅 jpeg/webp 有效 |
background | string | 否 | transparent 生成帶 alpha 通道的 PNG |
moderation | string | 否 | auto(預設)或 low,影響內容過濾嚴格度 |
callback_url | string | 否 | HTTPS 回調位址,任務完成後回調(非同步中轉支援) |
user | string | 否 | 穩定的使用者 ID,用於 OpenAI 濫用監控 |
圖片編輯——殺手鐧
GPT Image 2 的指令編輯能力是它相比 diffusion 模型最大的 API 優勢。你上傳一張已有圖片 + 一段描述要改什麼的 prompt。
Python
result = client.images.edit(
model="gpt-image-2",
image=open("original.png", "rb"),
prompt="把杯子的顏色從白色改成藏青色,其他全部保持不變。",
size="1024x1024",
quality="medium",
)
with open("edited.png", "wb") as f:
f.write(base64.b64decode(result.data[0].b64_json))Node.js
import { toFile } from 'openai';
const result = await client.images.edit({
model: 'gpt-image-2',
image: await toFile(fs.createReadStream('original.png'), 'original.png'),
prompt: '把杯子的顏色從白色改成藏青色,其他全部保持不變。',
size: '1024x1024',
quality: 'medium',
});prompt 裡**「其他全部保持不變」**這句話非常關鍵——不寫的話模型可能會重畫無關區域。
批次生成:避免觸發限流的並發控制
不要傻乎乎地 Promise.all() 100 個請求——會被限流。用受限並發。
Python — 用 asyncio + semaphore
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key=os.environ["OPENAI_API_KEY"])
async def generate_one(prompt: str, semaphore: asyncio.Semaphore):
async with semaphore:
result = await client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
async def batch_generate(prompts: list[str], concurrency: int = 5):
semaphore = asyncio.Semaphore(concurrency)
tasks = [generate_one(p, semaphore) for p in prompts]
return await asyncio.gather(*tasks)
results = asyncio.run(batch_generate(["prompt 1", "prompt 2", ...]))Node.js — 用 p-limit
import pLimit from 'p-limit';
const limit = pLimit(5); // 同時最多 5 個請求
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({
model: 'gpt-image-2',
prompt,
size: '1024x1024',
quality: 'medium',
});
return result.data[0].b64_json;
})
);
const results = await Promise.all(tasks);生產環境的錯誤處理
API 失敗有幾種不同情形,每種都要分別處理:
from openai import OpenAI, APIError, RateLimitError, APIConnectionError, BadRequestError
import time
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
def safe_generate(prompt: str, max_retries: int = 3):
for attempt in range(max_retries):
try:
result = client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="medium",
)
return result.data[0].b64_json
except RateLimitError:
# 429——退避後重試
wait = (2 ** attempt) * 5
print(f"被限流;等待 {wait} 秒")
time.sleep(wait)
except BadRequestError as e:
# 400——通常是內容策略違規,不要重試
print(f"請求錯誤:{e}")
return None
except APIConnectionError:
# 網路抖動——重試
time.sleep(2 ** attempt)
except APIError as e:
# 5xx 伺服器端錯誤——退避重試
time.sleep(2 ** attempt)
return None成本最佳化:具體可執行的幾招
1. 選對 quality 檔
| 檔位 | 單張成本(1024×1024) | 適用場景 |
|---|---|---|
low | ~$0.011 / ¥0.08 | 草稿、A/B 測、prompt 迭代 |
medium | ~$0.042 / ¥0.30 | 大多數生產用途 |
high | ~$0.167 / ¥1.20 | 最終主圖、印刷級素材 |
很多團隊預設用 high,結果多付了 4 倍價錢。95% 的活兒用 medium 就夠了。
2. 用 images.edit 迭代,不要重新 generate
指令編輯和生成同價,但一次就出對,省下 4 次重抽。多輪細節調整下,這是 5 倍成本節省。
3. 重複 prompt 做快取
如果你的產品場景裡同一個 prompt 會反覆觸發(比如使用者預覽同樣的產品圖),用 hash(prompt + size + quality) 做 key 快取到 CDN。
4. 用 low 探索 + high 定稿
常用的工作流:
# 第一步:5 個 prompt 變體跑 low 檔(總共 ¥0.40)
candidates = [generate(p, quality="low") for p in variants]
# 第二步:選最好的,high 檔重出
best_prompt = pick_winner(candidates)
final = generate(best_prompt, quality="high") # ¥1.20總成本約 ¥1.60,而不是 5 個變體全跑 high 的 ¥6。
5. 在 OpenAI 後台設定硬性消費上限
不要相信程式碼不出 bug——在 platform.openai.com/account/billing/limits 設定消費上限。
進度回饋(可選)
長批次任務可能想給前端顯示進度。圖像生成介面本身不是串流的,但你可以包裝非同步進度上報:
let completed = 0;
const tasks = prompts.map((prompt) =>
limit(async () => {
const result = await client.images.generate({ /* ... */ });
completed++;
onProgress({ completed, total: prompts.length });
return result.data[0].b64_json;
})
);接入常見錯誤
| 錯誤 | 後果 | 修復 |
|---|---|---|
| 硬編碼 API Key | 被 Git 洩露 | 永遠用環境變數 |
取 result.data[0].url | 欄位不一定存在(取決於 response_format) | 用 b64_json 本地解碼 |
| 編輯介面上傳巨大原圖 | 慢 + 貴 | 上傳前縮到 1024×1024 |
| 忽略 400 錯誤 | 在不可恢復的失敗上耗光重試次數 | 區分 4xx(不重試)和 5xx(重試) |
| 不做並發控制 | 觸發 429 雪崩 | 用 semaphore 受限並發 |
| 日誌直接列印完整 prompt | 使用者輸入洩露隱私 | 寫日誌前 hash 或脫敏 |
上線前 checklist
| 項 | 完成 |
|---|---|
| API Key 在環境變數裡,程式碼和日誌都沒有 | □ |
| quality 檔位匹配場景(預設 medium) | □ |
| 批次任務有受限並發(p-limit / Semaphore) | □ |
| 錯誤處理區分 4xx vs 5xx | □ |
| OpenAI 後台設定硬性消費上限 | □ |
| 使用者輸入做了內容策略合規檢查 | □ |
| 輸出存在自己的儲存(不依賴 OpenAI 臨時 URL) | □ |
| 重複 prompt 有快取層 | □ |
| 監控了單圖成本和錯誤率 | □ |
非同步任務模式(高並發場景)
高並發批次生成時,部分 GPT Image 2 中轉服務支援非同步任務模式:你提交請求立刻拿到 task ID,然後輪詢任務結果或接收回調。這樣可以避免大批次請求時 HTTP 逾時。
典型非同步流程:
# 1. 提交請求 → 拿到 task_id
response = client.images.generate(
model="gpt-image-2",
prompt="...",
size="1024x1024",
quality="high",
callback_url="https://your-app.com/api/image-callback", # 可選
)
task_id = response.id
# 2. 每隔幾秒輪詢任務狀態
while True:
status = client.images.retrieve(task_id)
if status.status == "completed":
image_url = status.data[0].url
break
elif status.status == "failed":
raise Exception(status.error)
time.sleep(3)非同步模式適用於:
- 電商隔夜批次生成幾百張產品變體
- 行銷團隊跑 A/B prompt 測試
- 使用者提交請求後稍後通知的場景
GPT Image 2 API 常見問題(FAQ)
問:GPT Image 2 API 的模型名是什麼?
gpt-image-2。所有請求都用這個字串。
問:GPT Image 2 API 支援圖生圖 / 圖像編輯嗎?
支援。用 images.edit + image 參數,或者向支援 image_urls(1-16 張參考圖)的中轉服務傳參。參考圖對角色一致性、IP 設計、產品圖保持高度一致非常關鍵。
問:GPT Image 2 API 免費嗎? 不免費,按 token 計費。新 OpenAI 帳號可能有試用額度,部分第三方中轉提供免費試用。
問:GPT Image 2 API 單張圖多少錢? 按 1024×1024 算,low / medium / high 大約 $0.011 / $0.042 / $0.167(約 ¥0.08 / ¥0.30 / ¥1.20)。更大尺寸和帶參考圖的請求成本更高。
問:prompt 最長多少字元? 最多 32,000 字元。但實際超過 1500 字元後邊際收益迅速遞減。
問:怎麼用 API 生成透明背景 PNG?
設定 background: "transparent" + output_format: "png"。
問:GPT Image 2 支援哪些解析度?
常用預設:1024x1024、1536x1024、1024x1536。部分中轉服務額外支援 1K / 2K / 4K 檔位以做顯式解析度控制。
問:API 限流怎麼辦?
取決於你的 OpenAI 帳戶檔位。免費檔限流最嚴,使用量越大檔位越高。用受限並發(p-limit / Semaphore)保持在限流之內。
問:GPT Image 2 API 報錯怎麼處理? 區分 4xx(不要重試,通常是內容策略違規)和 5xx(可重試,用退避演算法)。具體見上面的錯誤處理章節。
問:能取消正在執行的 GPT Image 2 API 請求嗎?
同步請求只能關閉連線。支援非同步的中轉服務通常有 cancel 介面,但只能在任務還在排隊時取消。
問:API 支援串流返回嗎? 圖像生成本身不是串流(結束時返回完整圖)。前端進度條可以包裝一層自訂進度上報(見上面「進度回饋」章節)。
想看完整可運行的參考實作?
完整 Next.js + GPT Image 2 + Stripe + 圖像儲存的參考工程:gpt-image2.art,真實出圖案例(帶完整 prompt):gpt-image2.art/zh/explore。
想要帶 SLA 的可商用 API Key?
如果你不想自己折騰 OpenAI 帳號、綁卡、解決國內存取穩定性、限流配額——可以發郵件到 support@gpt-image2.art 購買中轉 GPT Image 2 API。我們提供:
- 一個穩定的 API endpoint,內建 failover
- 人民幣計費,不需要 USD 跨境匯款
- 非同步任務模式 + callback 回調原生支援
- 月用量 > 10K 張的團隊享受批量價
- 同
gpt-image-2模型名、同參數規範——你的程式碼不需要改,只換 base URL
延伸閱讀
images.edit 迭代,不要重新 generate3. 重複 prompt 做快取4. 用 low 探索 + high 定稿5. 在 OpenAI 後台設定硬性消費上限進度回饋(可選)接入常見錯誤上線前 checklist非同步任務模式(高並發場景)GPT Image 2 API 常見問題(FAQ)想看完整可運行的參考實作?想要帶 SLA 的可商用 API Key?延伸閱讀更多文章

GPT Image 2 Prompt 寫作指南:讓命中率從 30% 漲到 90% 的 7 條規律
一份基於 200+ 張實測的 GPT Image 2 prompt 寫作指南。講清結構、關鍵詞、避坑、以及決定「一次出圖 vs 重抽 5 次」的 7 條規律——每條都能在 30 秒內用到下一條 prompt 上。

用 GPT Image 2 一句話生成知識圖譜:公考、小紅書、講義、PPT、SOP 五大場景提示詞模板
一套可複製的 5 段式提示詞框架,把任何主題一鍵變成知識圖譜資訊圖。覆蓋公考備考講義、小紅書知識卡片、教學課件、商務幻燈、企業 SOP 五大高頻場景,附完整模板與避坑清單。

GPT Image 2 商用 / 版權 / 商業落地完整指南:能賣嗎?怎麼賣?哪些坑要避開?
一篇看懂 GPT Image 2 商用規則——能不能用來賣貨、版權歸誰、淘寶/亞馬遜/抖音/小紅書各平台政策、什麼內容會被封號、怎麼發圖既不違規又能拿到收入。
Generate your first image with GPT Image 2 — right now
Reliable non-Latin text rendering, directed editing, and 50+ ready-to-use prompts. No downloads — just open in your browser.