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} 在前端展示。