Руководство по использованию GPT-Image-2
GPT-Image-2 — это сервис AI-генерации изображений, предоставляемый YYCode. Он использует независимый интерфейс изображений gpt.yycode.net для text-to-image, image-to-image и асинхронного запроса задач.
Подготовка
1. Создайте API Key
Перейдите на страницу управления токенами YYCode, создайте или скопируйте API Key.
После создания сохраните его безопасно: все последующие запросы должны передавать этот Key в Header.
2. Адрес интерфейса
GPT-Image-2 использует отдельный Base URL:
https://gpt.yycode.net
Все запросы изображений также передают адрес посредника YYCode:
x-demo-base-url: https://yycode.net
Подключение AI Agent в один шаг
При использовании AI-инструментов для кодинга с поддержкой Skills, таких как Claude Code и Codex, отправьте AI следующий текст:
Подключи к этому проекту сервис генерации изображений YYCode GPT-Image-2.
Base URL:
https://gpt.yycode.net
Text to Image:
POST /api/images/generate
Image to Image:
POST /api/images/edit
Запрос задачи:
GET /api/jobs/{jobId}
Request Header:
x-demo-base-url: https://yycode.net
x-demo-api-key: YOUR_API_KEY
x-demo-async: 1
Text to Image использует JSON-тело запроса; Image to Image использует multipart/form-data и загружает исходное изображение через поле image.
После отправки задачи и получения jobId запрашивай /api/jobs/{jobId} каждые 6 секунд.
После возврата status=succeeded считай images[].b64 и images[].mimeType, затем сохрани base64 как файл изображения.
AI Agent выполнит интеграцию клиентского кода согласно указанным интерфейсам, Header, способу polling и сохранению изображений.
Подробное описание 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
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 to Image:
image— поле файла изображения; при загрузке нескольких изображений передавайтеimageповторноmask— поле файла маски изображения для локального редактирования- Не задавайте
Content-Typeв заголовке вручную:curlили SDK автоматически сгенерирует multipart boundary - Задача Image to Image также возвращает
jobId, а результат запрашивается черезGET /api/jobs/{jobId}
Описание параметров
| Параметр | Описание |
|---|---|
model |
Всегда указывать gpt-image-2 |
prompt |
Prompt для генерации или редактирования изображения |
n |
Количество генерируемых изображений, диапазон от 1 до 10 |
size |
Размер выходного изображения в формате <width>x<height> |
output_format |
Формат вывода: png, jpeg, webp |
quality |
Качество изображения: auto, low, medium, high, standard, hd |
background |
Режим фона: auto, opaque |
image |
Поле исходного файла для Image to Image, поддерживает повторную передачу |
mask |
Поле файла маски для Image to Image, используется для локального редактирования |
Поддержка size
size использует реальные размеры в пикселях; ширина и высота должны быть кратны 16, длинная сторона не больше 3840, общее число пикселей не больше 3840x2160.
| Размер | Описание |
|---|---|
1024x1024 |
Квадратное изображение |
1536x1024 |
Горизонтальное изображение |
1024x1536 |
Вертикальное изображение |
1920x1080 |
Горизонтальное HD-изображение |
1080x1920 |
Вертикальное HD-изображение |
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",
}
# Шаг 1: отправить задачу Text to Image
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}")
# Шаг 2: каждые 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":
# Шаг 3: сохранить 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", "Задача завершилась ошибкой"))
Описание биллинга
- Генерация изображений расходует квоту аккаунта YYCode, которому принадлежит
x-demo-api-key - Возврат
jobIdпри отправке означает, что фоновая задача создана - Когда статус задачи
succeededи возвращеныimages, текущая генерация изображения завершена - При статусе
failedв ответе возвращается информация об ошибке - Записи расхода аккаунта отображаются в панели YYCode
Описание возврата изображений
Интерфейс изображений YYCode возвращает стандартизированный массив images. Каждое изображение содержит поля b64 и mimeType; интегратор декодирует b64 для сохранения файла или собирает data:${mimeType};base64,${b64} для отображения на фронтенде.