Skip to content

Генерация изображений Imagen 3: Автоматическое сопоставление параметров size/quality OpenAI Images

Хотите вызывать Imagen 3 по привычке OpenAI Images API? Локальный прокси Antigravity Tools предоставляет /v1/images/generations и автоматически сопоставляет size / quality с настройками пропорции и разрешения, необходимыми для Imagen 3.

Чему вы научитесь

  • Генерировать изображения Imagen 3 с помощью POST /v1/images/generations, не меняя привычки вызова существующего клиента/SDK OpenAI
  • Стабильно управлять aspectRatio (16:9, 9:16 и т.д.) с помощью size: "WIDTHxHEIGHT"
  • Управлять уровнем разрешения imageSize (стандартный/2K/4K) с помощью quality: "standard" | "medium" | "hd"
  • Понимать возврат b64_json / url(data:...) и подтверждать фактически использованный аккаунт через заголовки ответа

Текущие проблемы

Вы могли столкнуться с этими ситуациями:

  • Клиент только умеет вызывать /v1/images/generations OpenAI, но вы хотите использовать Imagen 3
  • При одном и том же prompt иногда квадрат, иногда горизонтальный, управление пропорциями нестабильно
  • Вы написали size как 16:9, результат всё равно 1:1 (и не знаете почему)

Когда использовать этот метод

  • Вы уже используете локальный прокси Antigravity Tools, хотите чтобы «генерация изображений» также единообразно проходила через тот же шлюз
  • Вы хотите позволить инструментам, поддерживающим OpenAI Images API (Cherry Studio, Kilo Code и т.д.), напрямую генерировать изображения Imagen 3

🎒 Подготовка

Предварительная проверка

Этот урок предполагает, что вы уже запустили локальный прокси и знаете свой Base URL (например, http://127.0.0.1:<port>). Если ещё не реализовано, сначала завершите «Запуск локального прокси и подключение первого клиента».

Напоминание об аутентификации

Если вы включили proxy.auth_mode (например, strict / all_except_health), при вызове /v1/images/generations нужно принести:

  • Authorization: Bearer <proxy.api_key>

Основная идея

Что именно делает это «автоматическое сопоставление»?

Сопоставление OpenAI Images Imagen 3 означает: вы всё ещё отправляете prompt/size/quality по API OpenAI Images, прокси анализирует size как стандартное соотношение сторон (например, 16:9), анализирует quality как уровень разрешения (2K/4K), а затем использует формат внутреннего запроса для вызова вышестоящего gemini-3-pro-image.

Пояснение модели

gemini-3-pro-image — это имя модели генерации изображений Google Imagen 3 (из документации README проекта). В исходном коде по умолчанию используется эта модель для генерации изображений.

1) size -> aspectRatio (динамический расчёт)

  • Прокси будет анализировать size как WIDTHxHEIGHT, а затем сопоставлять со стандартным соотношением по соотношению сторон.
  • Если анализ size неудачен (например, не разделён x, или число недопустимо), откатится к 1:1.

2) quality -> imageSize (уровень разрешения)

  • quality: "hd" -> imageSize: "4K"
  • quality: "medium" -> imageSize: "2K"
  • quality: "standard" (или другие значения) -> не устанавливать imageSize (оставить по умолчанию)

3) n несколько изображений — это «параллельно отправить n раз»

Эта реализация не зависит от candidateCount > 1 вышестоящего уровня, а разбивает n генераций на параллельные несколько запросов, а затем объединяет результаты в возврат в стиле OpenAI data[].

Пошаговое руководство

Шаг 1: Подтвердите, что прокси запущен (опционально, но настоятельно рекомендуется)

Зачем Сначала подтвердите ваш Base URL и режим аутентификации, чтобы позже не ошибочно определить проблему как «неудача генерации изображений».

bash
 # Проверка работоспособности (при auth_mode=all_except_health также можно без аутентификации)
curl -sS http://127.0.0.1:PORT/healthz
powershell
 # Проверка работоспособности (при auth_mode=all_except_health также можно без аутентификации)
curl.exe -sS http://127.0.0.1:PORT/healthz

Что вы должны увидеть: Возвращается JSON, содержащий "status": "ok".

Шаг 2: Отправьте минимально доступный запрос генерации изображений

Зачем Сначала реализуйте цепочку с минимальными полями, затем наложите пропорцию/качество/количество и т.д. параметры.

bash
curl -sS http://127.0.0.1:PORT/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_PROXY_API_KEY" \
  -d '{
    "model": "gemini-3-pro-image",
    "prompt": "A minimal icon of a rocket, flat design",
    "n": 1,
    "size": "1024x1024",
    "quality": "standard",
    "style": "vivid",
    "response_format": "b64_json"
  }'
powershell
curl.exe -sS http://127.0.0.1:PORT/v1/images/generations `
  -H "Content-Type: application/json" `
  -H "Authorization: Bearer YOUR_PROXY_API_KEY" `
  -d '{
    "model": "gemini-3-pro-image",
    "prompt": "A minimal icon of a rocket, flat design",
    "n": 1,
    "size": "1024x1024",
    "quality": "standard",
    "style": "vivid",
    "response_format": "b64_json"
  }'

Что вы должны увидеть: В JSON ответа есть массив data, в массиве содержится поле b64_json (содержимое длинное).

Шаг 3: Подтвердите, какой аккаунт вы используете (смотрите заголовки ответа)

Зачем Генерация изображений также использует планирование пула аккаунтов; при устранении неполадок критично подтвердить «какой именно аккаунт генерирует».

bash
curl -i http://127.0.0.1:PORT/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_PROXY_API_KEY" \
  -d '{"prompt":"test","n":1,"size":"1024x1024"}'
powershell
curl.exe -i http://127.0.0.1:PORT/v1/images/generations `
  -H "Content-Type: application/json" `
  -H "Authorization: Bearer YOUR_PROXY_API_KEY" `
  -d '{"prompt":"test","n":1,"size":"1024x1024"}'

Что вы должны увидеть: В заголовке ответа содержится X-Account-Email: ....

Шаг 4: Управляйте соотношением сторон с помощью size (рекомендуется использовать только WIDTHxHEIGHT)

Зачем Вышестоящий уровень Imagen 3 принимает стандартизированное aspectRatio; вы просто напишете size как набор общих ширины и высоты, и сможете стабильно сопоставить со стандартным соотношением.

Вы передали sizeaspectRatio, рассчитанный прокси
"1024x1024"1:1
"1920x1080" / "1280x720"16:9
"1080x1920" / "720x1280"9:16
"800x600"4:3
"600x800"3:4
"2560x1080"21:9

Что вы должны увидеть: Пропорция изображения меняется вместе с изменением size.

Шаг 5: Управляйте уровнем разрешения с помощью quality (standard/medium/hd)

Зачем Вам не нужно помнить внутренние поля Imagen 3, используйте только quality OpenAI Images, чтобы переключить уровень разрешения.

Вы передали qualityimageSize, записанный прокси
"standard"Не устанавливать (использовать по умолчанию вышестоящего уровня)
"medium""2K"
"hd""4K"

Что вы должны увидеть: hd деталей более богато (одновременно медленнее/больше ресурсов, это поведение вышестоящего уровня, ориентируйтесь на фактический возврат).

Шаг 6: Решите, хотите ли b64_json или url

Зачем В этой реализации response_format: "url" не даст вам URL, доступный публично, а вернёт data:<mime>;base64,... Data URI; многие инструменты более подходят для прямого использования b64_json.

response_formatПоле data[]
"b64_json" (по умолчанию){ "b64_json": "..." }
"url"{ "url": "data:image/png;base64,..." }

Контрольные точки ✅

  • Вы можете вернуть минимум 1 изображение с помощью /v1/images/generations (data.length >= 1)
  • Вы можете увидеть X-Account-Email в заголовке ответа и при необходимости воспроизвести ту же проблему с аккаунтом
  • После изменения size на 1920x1080 пропорция изображения станет горизонтальной (16:9)
  • После изменения quality на hd прокси сопоставит это с imageSize: "4K"

Частые ошибки

1) size написано как 16:9 не даст 16:9

Здесь логика разбора size разделяется по WIDTHxHEIGHT; если size не такого формата, напрямую откатится к 1:1.

ЗаписьРезультат
"1920x1080"16:9
"16:9"Откат 1:1

2) Не включили аутентификацию, но принесли Authorization, это не приведёт к успеху

Аутентификация — это вопрос «обязательна ли»:

  • proxy.auth_mode=off: можно или нет принести Authorization
  • proxy.auth_mode=strict/all_except_health: без Authorization будет отклонено

3) При n > 1 может появиться «частичный успех»

Реализация — это параллельный запрос и объединение результатов: если часть запросов неудачна, всё равно может вернуть часть изображений, и в журналах записать причину неудачи.

Итог урока

  • Используйте /v1/images/generations для вызова Imagen 3, ключ — запомнить: size использует WIDTHxHEIGHT, quality использует standard/medium/hd
  • size управляет aspectRatio, quality управляет imageSize(2K/4K)
  • response_format=url возвращает Data URI, а не публичный URL

Предпросмотр следующего урока

В следующем уроке мы изучим Транскрипция аудио: Ограничения и обработка больших пакетов /v1/audio/transcriptions.


Приложение: Справочник по исходному коду

Нажмите, чтобы раскрыть расположение исходного кода

Обновлено: 2026-01-23

ФункцияПуть к файлуСтроки
Экспозиция маршрута OpenAI Imagessrc-tauri/src/proxy/server.rs123-146
Конечная точка генерации Images: разбор prompt/size/quality + сборка ответа OpenAIsrc-tauri/src/proxy/handlers/openai.rs1104-1333
---------
Объявление size/quality OpenAIRequest (для совместимости уровня протокола)src-tauri/src/proxy/mappers/openai/models.rs6-38
---------

Ключевые поля (из исходного кода):

  • size: анализируется как aspectRatio по WIDTHxHEIGHT
  • quality: hd -> 4K, medium -> 2K, остальные не устанавливают