Skip to main content
OpenAI сервис редактирования изображений позволяет передавать любое количество изображений и команд, выводя измененные изображения. В настоящее время интерфейс поддерживает dall-e-2, gpt-image-1, новейшую gpt-image-2, а также модели из серии nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro, подключаемые через тот же интерфейс. В этом документе в основном описывается процесс использования OpenAI Images Edits API, с помощью которого мы можем легко использовать официальные функции редактирования изображений OpenAI.

Процесс заявки

Чтобы использовать OpenAI Images Edits API, сначала перейдите в консоль Ace Data Cloud и получите ваш API Token для резервного копирования. Если вы еще не вошли в систему или не зарегистрированы, вы будете автоматически перенаправлены на страницу входа, где вас пригласят зарегистрироваться и войти. После завершения вы будете автоматически возвращены на текущую страницу. Один API Token позволяет вызывать все услуги платформы, не нужно отдельно запрашивать для каждой услуги. При первой заявке предоставляется бесплатный лимит, чтобы вы могли попробовать; при недостатке лимита можно пополнить общий баланс в консоли.
📘 Полная документация: OpenAI Images Edits API →

Модель GPT-Image-2

gpt-image-2 в сценариях редактирования изображений имеет очень заметные улучшения по сравнению с gpt-image-1:
  • Структура остается более стабильной: при смене кожи, цветовой гаммы или фона почти не нарушается оригинальная компоновка и композиция изображения.
  • Текст сохраняется более точно: изображения с текстом, такие как инфографика, постеры, меню и т.д., остаются четкими и читаемыми после редактирования.
  • Поддержка прямой передачи URL: помимо традиционной загрузки файлов multipart/form-data, gpt-image-2 также дополнительно поддерживает передачу URL изображений в формате JSON, что позволяет не загружать изображения на локальный компьютер, что идеально подходит для интеграции на сервере.
  • Поддержка прямой передачи base64: как и в официальной версии, поле image также может принимать base64 (например, data:image/png;base64,... или чистый base64), что позволяет редактировать локальные изображения без предварительной загрузки на хостинг.
  • Поддержка высококачественной перерисовки: можно передать оригинальное изображение 1K и запросить вывод 2K / 4K с помощью параметра size, модель будет одновременно увеличивать изображение в процессе редактирования.

Официальный маршрут / Обратный вариант (:official / :reverse)

gpt-image-2 по умолчанию использует обратный маршрут. С помощью суффикса имени модели можно явно выбрать маршрут:
  • gpt-image-2:official: официальный маршрут. Поддерживает n > 1 (возвращает несколько изображений за раз) и настоящие 2K / 4K, оплата производится за каждое изображение, цена составляет 2 раза больше, чем у стандартного gpt-image-2. В настоящее время доступно только через канал openai-hk, при недоступности маршрута возвращается ошибка, без понижения до обратного маршрута.
  • gpt-image-2:reverse: полностью эквивалентно стандартному gpt-image-2 (обратный маршрут), цена остается прежней.
Ограничения, упомянутые ниже в разделе “О параметре n”, применимы только к стандартному / обратному маршруту; gpt-image-2:official поддерживает n > 1 и взимает плату за каждое изображение.

Поддерживаемые значения size

Ограничения интерфейса редактирования по size полностью совпадают с интерфейсом генерации — gpt-image-2 требует, чтобы size был auto, пустым или соответствовал формату WIDTHxHEIGHT, любые другие формы вернут 400. Все размеры (1K / 2K / 4K / пользовательские) оплачиваются за каждое изображение независимо от разрешения оригинала и запрашиваемого значения size. Жесткие ограничения на пользовательские размеры также применимы: ширина и высота должны быть кратны 16, длина стороны ≤ 3840, общее количество пикселей ≤ 8,294,400.
Например: если оригинальное изображение 1024x1024, при передаче size как 2048x2048, модель перерисует и выведет 2K изображение; при передаче size как 3840x2160 будет выведено 4K горизонтальное изображение; передача auto или пропуск приведет к выбору модели. Все три случая имеют одинаковую стоимость.
О параметре n Интерфейс редактирования gpt-image-2 в настоящее время не поддерживает n > 1: этот параметр будет тихо проигнорирован, независимо от того, передаете ли вы n=1 или n=10, один запрос всегда вернет 1 изображение и будет взиматься плата только за 1 изображение. Если вам нужно получить несколько вариантов редактирования, пожалуйста, инициируйте несколько запросов параллельно. Это ограничение также применимо к gpt-image-1 / gpt-image-1.5, а также к сериям nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro. dall-e-2 в настоящее время является единственной моделью редактирования, которая изначально поддерживает n > 1.
Ниже приведены два различных примера, чтобы почувствовать возможности редактирования gpt-image-2.

Способ вызова 1: JSON + URL изображения (рекомендуется)

Прямо отправьте запрос в формате application/json, поле image заполните URL одной картинки, модель загрузит это изображение и отредактирует его в соответствии с prompt. Например, вот это оригинальное изображение, созданное с помощью gpt-image-2 в качестве научно-популярного справочника:

Мы хотим изменить его на цветовую гамму “ночного режима”. Можно вызвать так:
или на Python:
Результат будет следующим:
Отредактированное изображение выглядит следующим образом:

Можно увидеть, что структура модулей, информационные разделы и типографика были строго сохранены, только цветовая схема была инвертирована в темный режим.
Подсказка: поле image также поддерживает передачу массива, например, "image": ["url1", "url2", "url3"], максимум можно передать 16 изображений для одновременного редактирования.
Прямой ввод base64: image (и каждый элемент массива) может быть не только URL, но и base64 — data:image/png;base64,... или чистый base64, что подходит для локальных изображений, которые не нужно загружать на хостинг. Например:

Способ вызова два: JSON + несколько изображений

gpt-image-2 поддерживает одновременное использование нескольких изображений для генерации конечного результата, например, объединение нескольких фотографий продуктов в одну корзину подарков:

Пример сценария: смена стиля + сохранение структуры

Вот еще один пример, где деревянная полка заменяется на современную плавающую полку, но строго сохраняется количество и расположение книг на каждом уровне. Исходное изображение (деревянная полка, сгенерированная с помощью gpt-image-2):

Вызов:
Результат редактирования (task_id: e9544dba-727e-44a2-81e1-223d49869380):

Можно увидеть, что стиль и окружение были полностью заменены в соответствии с подсказкой, но количество книг на каждом уровне (1 / 3 / 7) по-прежнему строго сохранено, и по требованию добавлен горшок с суккулентом.

Способ вызова три: multipart/form-data (совместимо с OpenAI SDK)

Если вы уже используете официальный OpenAI Python SDK, прежний способ загрузки multipart/form-data также применим, просто измените model на gpt-image-2:
При использовании SDK необходимо сначала импортировать две переменные окружения, OPENAI_BASE_URL установить на https://api.acedata.cloud/openai, а OPENAI_API_KEY установить на полученный токен:

Модели серии Nano Banana

Серия nano-banana также подключена к /openai/images/edits в сценариях редактирования, просто измените model на любое из значений в таблице ниже.
Важно: Поддерживаемые параметры Nano Banana подключается к протоколу OpenAI через адаптер, поддерживает только следующие параметры: model, prompt, image.
  • image можно загрузить через multipart/form-data (внутри worker будет преобразован в data:<mime>;base64,... для передачи вверх), также можно передать строку URL изображения через поле формы.
  • Параметры mask, n, size, response_format не поддерживаются; если они указаны, будут проигнорированы.
  • Структура ответа соответствует формату OpenAI (data[].url), но created фиксирован на 0, и не будет возвращено b64_json, revised_prompt всегда равен исходному prompt.

Вызов через форму + URL изображения

Результат будет следующим:
Отредактированное изображение:

Вызов через форму + локальный файл

Асинхронный обратный вызов

Механизм асинхронного обратного вызова callback_url также работает для nano-banana, процесс вызова полностью аналогичен другим моделям, подробности см. в разделе Асинхронный обратный вызов.

Основное использование

Теперь можно использовать код для вызова, ниже приведен пример вызова через CURL:
При первом использовании этого интерфейса необходимо заполнить как минимум четыре поля: одно из них authorization, которое можно выбрать из выпадающего списка. Другой параметр — это model, model — это категория модели OpenAI, которую мы выбираем, здесь у нас в основном 1 модель, подробности можно посмотреть в предоставленных моделях. Еще один параметр — это prompt, prompt — это текст, который мы вводим для генерации изображения. Последний параметр — это image, этот параметр требует путь к изображению, которое нужно отредактировать, изображение показано ниже:

Пример кода на Python с аналогичным эффектом вызова:
Для использования Python необходимо сначала импортировать две переменные окружения: одну OPENAI_BASE_URL, которую можно установить как https://api.acedata.cloud/openai, и другую переменную для учетных данных OPENAI_API_KEY, значение которой берется из authorization, в Mac OS можно установить переменные окружения следующими командами:
После вызова мы обнаружим, что в текущем каталоге будет создано изображение gift-basket.png, конкретный результат будет следующим:

Таким образом, мы завершили редактирование изображения, в настоящее время интерфейс Edits поддерживает три модели: dall-e-2, gpt-image-1 и gpt-image-2, из которых gpt-image-2 является рекомендуемой моделью, подробности см. в разделе Модель GPT-Image-2.

Асинхронный обратный вызов

Поскольку время редактирования изображений API OpenAI Images Edits может быть относительно долгим, если API долго не отвечает, HTTP-запрос будет поддерживать соединение, что приведет к дополнительному потреблению системных ресурсов, поэтому этот API также предоставляет поддержку асинхронного обратного вызова. Общий процесс: когда клиент инициирует запрос, дополнительно указывается поле callback_url, после того как клиент инициирует API-запрос, API немедленно возвращает результат, содержащий информацию о поле task_id, представляющем текущий идентификатор задачи. Когда задача завершена, результат редактирования изображения будет отправлен на указанный клиентом callback_url в формате POST JSON, который также включает поле task_id, таким образом, результат задачи можно связать по ID. Ниже мы рассмотрим пример, чтобы понять, как это работает. Во-первых, обратный вызов Webhook — это служба, которая может принимать HTTP-запросы, разработчики должны заменить ее на URL своего собственного HTTP-сервера. Для удобства демонстрации используется публичный сайт примера Webhook https://webhook.site/, открыв этот сайт, вы получите URL Webhook, как показано на изображении: Скопируйте этот URL, чтобы использовать его в качестве Webhook, пример здесь: https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Далее мы можем установить поле callback_url на указанный Webhook URL, а также заполнить соответствующие параметры, как показано в следующем коде:
После вызова можно сразу получить результат, как показано ниже:
Через некоторое время мы можем наблюдать результаты редактирования изображения по Webhook URL, содержание следующее:
Можно увидеть, что в результате есть поле task_id, поле data содержит такие же результаты редактирования изображения, как и при синхронном вызове, с помощью поля task_id можно связать задачи.

Обработка ошибок

При вызове API, если возникнет ошибка, API вернет соответствующий код ошибки и информацию. Например:
  • 400 token_mismatched: Неверный запрос, возможно, из-за отсутствующих или недействительных параметров.
  • 400 api_not_implemented: Неверный запрос, возможно, из-за отсутствующих или недействительных параметров.
  • 401 invalid_token: Неавторизован, недействительный или отсутствующий токен авторизации.
  • 429 too_many_requests: Слишком много запросов, вы превысили лимит частоты.
  • 500 api_error: Внутренняя ошибка сервера, что-то пошло не так на сервере.

Пример ответа об ошибке

Заключение

С помощью этого документа вы узнали, как легко использовать API редактирования изображений OpenAI для использования официальной функции редактирования изображений OpenAI. Надеемся, что этот документ поможет вам лучше интегрировать и использовать этот API. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться в нашу техническую поддержку.