GPT-Image-2 使用指南
GPT-Image-2 是 YYCode 提供的 AI 圖片生成服務,使用 gpt.yycode.net 獨立圖片介面完成文生圖、圖生圖和異步任務查詢。
準備工作
1. 建立 API Key
前往 YYCode 權杖管理頁面,建立或複製 API Key。
建立完成後請妥善儲存,後續所有請求都需要在 Header 中攜帶此 Key。
2. 介面地址
GPT-Image-2 使用獨立 Base URL:
https://gpt.yycode.net
所有圖片請求同時攜帶 YYCode 中轉站地址:
x-demo-base-url: https://yycode.net
AI Agent 一鍵接入
使用 Claude Code、Codex 等支援 Skills 的 AI 編碼工具時,直接將以下內容發送給 AI:
請為這個專案接入 YYCode GPT-Image-2 圖片生成服務。
Base URL:
https://gpt.yycode.net
文生圖:
POST /api/images/generate
圖生圖:
POST /api/images/edit
查詢任務:
GET /api/jobs/{jobId}
請求 Header:
x-demo-base-url: https://yycode.net
x-demo-api-key: YOUR_API_KEY
x-demo-async: 1
文生圖使用 JSON 請求体;圖生圖使用 multipart/form-data,並用 image 欄位上传原圖。
提交任務回傳 jobId 後,每 6 秒查詢 /api/jobs/{jobId}。
回傳 status=succeeded 後讀取 images[].b64 和 images[].mimeType,將 base64 儲存為圖片檔案。
AI Agent 會按照上述介面、Header、輪詢方式和圖片儲存方式完成客戶端程式碼接入。
API 詳細說明
文生圖(Text to Image)
提交生成任務:
curl 'https://gpt.yycode.net/api/images/generate' \
-H 'Content-Type: application/json' \
-H 'x-demo-base-url: https://yycode.net' \
-H 'x-demo-api-key: YOUR_API_KEY' \
-H 'x-demo-async: 1' \
-d '{
"model": "gpt-image-2",
"prompt": "一只可愛的猫咪在陽光下打盹",
"n": 1,
"size": "1024x1024"
}'
成功回應:
{
"ok": true,
"pending": true,
"jobId": "job_1782732290788_3",
"meta": {
"requestId": "req_1782732290788_1"
}
}
查詢任務結果
將 job_1782732290788_3 替換為提交任務時回傳的 jobId:
curl 'https://gpt.yycode.net/api/jobs/job_1782732290788_3'
任務處理中:
{
"ok": true,
"pending": true,
"jobId": "job_1782732290788_3",
"status": "running",
"meta": {
"requestId": "req_1782732290788_1"
}
}
任務完成:
{
"ok": true,
"images": [
{
"b64": "iVBORw0KGgo...",
"filename": null,
"mimeType": "image/png"
}
],
"usage": null,
"raw": {},
"meta": {
"requestId": "req_1782732290788_1"
},
"jobId": "job_1782732290788_3",
"status": "succeeded"
}
最終圖片資料為 images[0].b64,圖片格式為 images[0].mimeType。前端展示時使用 data:${mimeType};base64,${b64},下載時將 base64 解碼為圖片檔案。
圖生圖(Image to Image)
圖生圖使用 multipart/form-data 上傳原圖,並通過 image 欄位提交圖片檔案。
上傳一張原圖:
curl 'https://gpt.yycode.net/api/images/edit' \
-H 'x-demo-base-url: https://yycode.net' \
-H 'x-demo-api-key: YOUR_API_KEY' \
-H 'x-demo-async: 1' \
-F 'model=gpt-image-2' \
-F 'prompt=把這张圖改成水彩風格' \
-F 'n=1' \
-F 'size=1024x1024' \
-F '[email protected]'
上傳多張原圖:
curl 'https://gpt.yycode.net/api/images/edit' \
-H 'x-demo-base-url: https://yycode.net' \
-H 'x-demo-api-key: YOUR_API_KEY' \
-H 'x-demo-async: 1' \
-F 'model=gpt-image-2' \
-F 'prompt=參考這些圖片生成統一的賽博朋克風格海報' \
-F 'n=1' \
-F 'size=1536x1024' \
-F '[email protected]' \
-F '[email protected]'
圖生圖注意事項:
image為圖片檔案欄位,上傳多張圖片時重複傳入imagemask為圖片蒙版欄位,用於局部編輯- 請求頭不手動設置
Content-Type,由curl或 SDK 自動生成 multipart boundary - 圖生圖任務同樣回傳
jobId,並通過GET /api/jobs/{jobId}查詢結果
參數說明
| 參數 | 說明 |
|---|---|
model |
固定填寫 gpt-image-2 |
prompt |
圖片生成或圖片編輯提示詞 |
n |
生成圖片數量,範圍 1 到 10 |
size |
輸出圖片尺寸,格式為 <width>x<height> |
output_format |
輸出格式,支援 png、jpeg、webp |
quality |
圖片品質,支援 auto、low、medium、high、standard、hd |
background |
背景模式,支援 auto、opaque |
image |
圖生圖原圖檔案欄位,支援重複傳入 |
mask |
圖生圖蒙版檔案欄位,用於局部編輯 |
size 支援
size 使用真實像素尺寸,寬高均為 16 的倍數,最長邊不超過 3840,總像素不超過 3840x2160。
| 尺寸 | 說明 |
|---|---|
1024x1024 |
正方形圖片 |
1536x1024 |
橫向圖片 |
1024x1536 |
豎向圖片 |
1920x1080 |
橫屏高清圖片 |
1080x1920 |
豎屏高清圖片 |
3840x2160 |
4K 橫屏圖片 |
2160x3840 |
4K 豎屏圖片 |
Python 範例
import base64
import time
import requests
# 替換為你的 YYCode API Key
base_url = "https://gpt.yycode.net"
api_key = "YOUR_API_KEY"
headers = {
"Content-Type": "application/json",
"x-demo-base-url": "https://yycode.net",
"x-demo-api-key": api_key,
"x-demo-async": "1",
}
# 步驟一:提交文生圖任務
submit = requests.post(
f"{base_url}/api/images/generate",
headers=headers,
json={
"model": "gpt-image-2",
"prompt": "一只可愛的猫咪在陽光下打盹",
"n": 1,
"size": "1024x1024",
},
timeout=30,
)
submit.raise_for_status()
job_id = submit.json()["jobId"]
print(f"任務已提交: {job_id}")
# 步驟二:每 6 秒輪詢查詢任務狀態
while True:
result = requests.get(
f"{base_url}/api/jobs/{job_id}",
timeout=30,
)
result.raise_for_status()
data = result.json()
if data.get("pending"):
print("任務處理中...")
time.sleep(6)
continue
if data.get("status") == "succeeded":
# 步驟三:將 base64 圖片儲存為本機檔案
image = data["images"][0]
mime_type = image.get("mimeType") or "image/png"
suffix = mime_type.split("/")[-1].replace("jpeg", "jpg")
filename = f"{job_id}.{suffix}"
with open(filename, "wb") as file:
file.write(base64.b64decode(image["b64"]))
print(f"圖片生成完成: {filename}")
break
raise RuntimeError(data.get("error", {}).get("message", "任務失敗"))
計費說明
- 圖片生成消耗
x-demo-api-key所屬 YYCode 帳戶額度 - 提交任務回傳
jobId表示後台任務已建立 - 任務狀態為
succeeded且回傳images後,本次圖片生成完成 - 任務狀態為
failed時,回應中回傳錯誤資訊 - 帳戶用量記錄在 YYCode 後台展示
圖片回傳說明
YYCode 圖片介面回傳標準化 images 數組。每張圖片包含 b64 和 mimeType 欄位,接入方使用 b64 解碼儲存檔案,或拼接 data:${mimeType};base64,${b64} 在前端展示。