> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI Images Generations API Заявка и использование

> OpenAI generation API guide - Ace Data Cloud

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

Этот документ в основном описывает процесс использования OpenAI Images Generations API, с помощью которого мы можем легко использовать функции генерации изображений от OpenAI.

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

Чтобы использовать OpenAI Images Generations API, сначала перейдите в [консоль Ace Data Cloud](https://platform.acedata.cloud/console/applications), чтобы получить ваш API Token, который следует сохранить на всякий случай.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Если вы еще не вошли в систему или не зарегистрированы, вы будете автоматически перенаправлены на страницу входа, где вас пригласят зарегистрироваться и войти. После завершения вы будете автоматически возвращены на текущую страницу.

**Один API Token позволяет вызывать все услуги платформы, не нужно отдельно запрашивать для каждой услуги.** При первой заявке предоставляется бесплатный лимит, чтобы вы могли попробовать; если лимит исчерпан, вы можете пополнить общий баланс в [консоли](https://platform.acedata.cloud/console/coin).

> 📘 Полная документация: [OpenAI Images Generations API →](https://platform.acedata.cloud/documents/openai-images-generations)

## Модель GPT-Image-2

`gpt-image-2` — это новое поколение модели генерации изображений, выпущенное OpenAI, которое имеет явные улучшения по сравнению с `dall-e-3` и `gpt-image-1` в следующих аспектах:

* **Улучшенная способность следовать инструкциям**: может точно понимать сложные композиции, подсчет, пространственные отношения и другие структурированные инструкции.
* **Более четкая текстовая рендеринг**: английский текст и цифры в таких сценах, как постеры, меню, инфографика, логотипы, почти не будут искажены.
* **Более разнообразное выражение стилей**: нативная поддержка различных стилей, таких как кинематографические портреты, винтажные постеры, детские иллюстрации, продуктовая фотография, инфографика и т.д.
* **Нативная поддержка нескольких соотношений сторон + высокое разрешение**: охватывает 5 соотношений (1:1, 4:3, 3:4, 16:9, 9:16) с 3 уровнями разрешения (1K / 2K / 4K).

Способ вызова полностью аналогичен другим моделям, просто установите поле `model` в `gpt-image-2`. В возвращаемом результате `url` — это постоянная ссылка на изображение, размещенная на `platform.cdn.acedata.cloud`, которую можно открыть в браузере или встроить на веб-страницу.

### Официальный маршрут / Обратный вариант (`: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`

`gpt-image-2` проверяет только формат `size`, если он не равен `auto` или пустой строке, он должен соответствовать формату `WIDTHxHEIGHT` (например, `1024x1024`, `2048x1152`, `800x600`); любые другие формы вернут 400. **Все размеры (1K / 2K / 4K / пользовательские) оплачиваются за одно изображение, без дополнительной платы за размер.**

Жесткие ограничения на пользовательские размеры: ширина и высота должны быть кратны 16, длина стороны ≤ 3840, общее количество пикселей ≤ 8,294,400. Превышение этих пределов будет отклонено и вернет 4xx.

| Соотношение | Рекомендуемое 1K | Рекомендуемое 2K | Рекомендуемое 4K |
| ----------- | ---------------- | ---------------- | ---------------- |
| 1:1         | `1024x1024`      | `2048x2048`      | `2880x2880`      |
| 4:3         | `1536x1024`      | `2048x1536`      | `3264x2448`      |
| 3:4         | `1024x1536`      | `1536x2048`      | `2448x3264`      |
| 16:9        | `1792x1024`      | `2048x1152`      | `3840x2160`      |
| 9:16        | `1024x1792`      | `1152x2048`      | `2160x3840`      |

> Вы также можете передать `size: "auto"` или **опустить поле `size`**, в этом случае модель сама выберет размер по умолчанию.
> На уровне 1K выходные данные не гарантируют строгую пиксельную выравненность — вы передаете `1024x1024`, возможно, получите `1254x1254`, соотношение останется неизменным. Если вы снова передадите это как `size`, оплата останется прежней.
> Однократный вызов 4K обычно требует 4–8 минут, рекомендуется использовать асинхронный обратный вызов с `callback_url`, упомянутым ниже.

> **О параметре `n`**
> В настоящее время `gpt-image-2` **не поддерживает `n > 1`**: этот параметр будет тихо проигнорирован, независимо от того, передаете ли вы `n=1` или `n=10`, однократный запрос всегда вернет 1 изображение и будет оплачен только за 1 изображение. Если вам нужно получить несколько кандидатных изображений за раз, пожалуйста, **инициируйте несколько запросов параллельно** (рекомендуется одновременно передавать разные `prompt` или разные `seed`, иначе полученные изображения могут быть очень похожи). Это ограничение также применяется к `gpt-image-1` / `gpt-image-1.5`, а также к сериям `nano-banana` / `nano-banana-2-lite` / `nano-banana-2` / `nano-banana-pro`. `dall-e-2` в настоящее время является единственной моделью, которая нативно поддерживает `n > 1`; `dall-e-3` поддерживает только `n = 1`.

Ниже приведены несколько реальных примеров из разных ракурсов, чтобы наглядно продемонстрировать возможности `gpt-image-2`.

### Сцена 1: Кинематографический портрет

В подсказках можно использовать кинотермины (35mm пленка, малая глубина резкости, неоновый свет и т.д.), чтобы точно контролировать атмосферу и текстуру.

Пример кода вызова на Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-image-2",
    "prompt": "Кинематографический портрет молодой женщины, стоящей в магазине у дома ночью, освещенной мягкими розовыми и циановыми неоновыми вывесками через окно. Снято на 35-мм пленку, малая глубина резкости, легкая зернистость, меланхоличное настроение.",
    "size": "1024x1536"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Возвращаемый результат:

```json theme={null}
{
  "success": true,
  "task_id": "ab58a5df-6f46-4874-bff6-93169e2849a3",
  "created": 1777048800,
  "data": [
    {
      "revised_prompt": "Кинематографический портрет молодой женщины, стоящей в магазине у дома ночью, освещенной мягкими розовыми и циановыми неоновыми вывесками через окно. Снято на 35-мм пленку, малая глубина резкости, легкая зернистость, меланхоличное настроение.",
      "url": "https://platform.cdn.acedata.cloud/gpt-image/ab58a5df-6f46-4874-bff6-93169e2849a3_0.png"
    }
  ]
}
```

Сгенерированное изображение:

<p>
  <img src="https://platform.cdn.acedata.cloud/gpt-image/ab58a5df-6f46-4874-bff6-93169e2849a3_0.png" width="500" className="m-auto" />
</p>

### Сцена 2: Ретро-путешествие постер (с текстовой отрисовкой)

`gpt-image-2` стабильно показывает хорошие результаты в типографике и отрисовке шрифтов, что делает его идеальным для создания постеров, меню, открыток и других дизайнов с текстом.

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "Ретро-постер путешествия по Амальфийскому побережью, Италия. Стилизованная арт-деко иллюстрация желтых домов, каскадирующихся вниз к бирюзовому морю, с маленькой белой парусной лодкой в гавани. Жирная типографика вверху гласит AMALFI, а внизу ITALIA 1958. Ограниченная цветовая палитра: кремовый, морской синий, лимонный желтый, терракотовый. Легкая текстура бумажной зернистости.",
    "size": "1024x1536"
}
```

Возвращаемый результат с полем `url`:

<p>
  <img src="https://platform.cdn.acedata.cloud/gpt-image/c6061f92-3fae-498e-af8e-688e7f415ba3_0.png" width="500" className="m-auto" />
</p>

Можно увидеть, что модель не только точно воспроизвела визуальный стиль постера в стиле Арт Деко, но и текст заголовка `AMALFI` и `ITALIA 1958` был четко и правильно отрисован.

### Сцена 3: Сложная композиция и подсчет

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

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "Деревянная книжная полка, состоящая из трех полок: на верхней полке должна быть одна книга. На второй полке должно быть три книги. На нижней полке должно быть семь книг. Мягкое теплое освещение, фотореалистично, уютная библиотечная атмосфера.",
    "size": "1024x1024"
}
```

Сгенерированное изображение:

<p>
  <img src="https://platform.cdn.acedata.cloud/gpt-image/64a3b932-a082-4cad-9f85-9d30474b104d_0.png" width="500" className="m-auto" />
</p>

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

### Сцена 4: Стиль иллюстрации (горизонтальный)

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

```python theme={null}
payload = {
    "model": "gpt-image-2",
    "prompt": "Мягкая, поэтическая иллюстрация детской книги с маленькой лисой, читающей книгу под светящимся грибом в лесу при лунном свете. Текстура акварели и карандаша, нежные пастельные цвета, мечтательная атмосфера, ощущение ручной работы.",
    "size": "1536x1024"
}
```

Сгенерированная горизонтальная иллюстрация:

![](https://platform.cdn.acedata.cloud/gpt-image/6cd57e69-d237-4cc1-a666-759a93964a08_0.png)

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

`gpt-image-2` обычно требует 60–90 секунд на один вызов. Если вы не хотите поддерживать долгое соединение, вы можете использовать механизм асинхронного обратного вызова `callback_url`, который будет работать так же, как и с другими моделями.

## Серия моделей Nano Banana

Серия `nano-banana` основана на Gemini и является моделью генерации изображений, которая подключена через тот же интерфейс `/openai/images/generations`, без необходимости переключения конечной точки, просто измените `model` на любое из приведенных ниже.

| Модель               | Оплата (Credits / раз) | Подходящие сценарии                                                           |
| -------------------- | ---------------------- | ----------------------------------------------------------------------------- |
| `nano-banana`        | 0.14                   | Обычная генерация изображений, самая быстрая и дешевая                        |
| `nano-banana-2-lite` | 0.14                   | Легкая модель изображений Gemini 3.1, поддерживает только 1K, низкая задержка |
| `nano-banana-2`      | 0.28                   | Качество и детали значительно улучшены                                        |
| `nano-banana-pro`    | 0.35                   | Флагманская модель в серии, лучшая композиция, детали и текст                 |

> **Важно: диапазон поддерживаемых параметров**
> Nano Banana подключается к протоколу OpenAI через адаптер и, по сравнению с `gpt-image-*`, поддерживает только следующие параметры: `model`, `prompt`, `size`.
>
> * `size` будет отображаться в соответствии с внутренним `aspect_ratio`, не перечисленные размеры будут преобразованы в `1:1`:
>   * `1024x1024` / `512x512` / `256x256` → `1:1`
>   * `1792x1024` → `16:9`
>   * `1024x1792` → `9:16`
> * Не поддерживаются параметры `n`, `quality`, `style`, `response_format`, `background`, `output_format` и т.д.; если они указаны, будут проигнорированы.
> * Структура ответа соответствует формату OpenAI (`data[].url`), но `created` фиксирован на `0`, и не будет возвращено `b64_json`, `revised_prompt` всегда будет равен исходному `prompt`.

### Основной вызов

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "nano-banana",
    "prompt": "маленькое красное яблоко на белом столе, фотореалистично",
    "size": "1024x1024"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Возвращаемый результат:

```json theme={null}
{
  "created": 0,
  "data": [
    {
      "url": "https://platform.cdn.acedata.cloud/nanobanana/6870b330-65c4-436c-bb80-819fdae7a7a4.png",
      "revised_prompt": "маленькое красное яблоко на белом столе, фотореалистично"
    }
  ]
}
```

生成的 изображения можно получить напрямую через возвращаемое поле `url`:

<p>
  <img src="https://platform.cdn.acedata.cloud/nanobanana/6870b330-65c4-436c-bb80-819fdae7a7a4.png" width="500" className="m-auto" />
</p>

### Обновление до флагманской модели `nano-banana-pro`

Просто измените `model` на `nano-banana-pro`, остальные параметры остаются прежними:

```python theme={null}
payload = {
    "model": "nano-banana-pro",
    "prompt": "abstract painting",
    "size": "1024x1024"
}
```

Пример ответа:

```json theme={null}
{
  "created": 0,
  "data": [
    {
      "url": "https://platform.cdn.acedata.cloud/nanobanana/6227fcc9-3442-4aa3-a76c-4a4441a99649.png",
      "revised_prompt": "abstract painting"
    }
  ]
}
```

<p>
  <img src="https://platform.cdn.acedata.cloud/nanobanana/6227fcc9-3442-4aa3-a76c-4a4441a99649.png" width="500" className="m-auto" />
</p>

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

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

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

Теперь вы можете заполнить соответствующие поля на интерфейсе, как показано на изображении:

<p>
  <img src="https://cdn.acedata.cloud/zv58ug.png" width="500" className="m-auto" />
</p>

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

Также вы можете заметить, что справа есть соответствующий код вызова, который вы можете скопировать и запустить, или просто нажать кнопку «Try» для тестирования.

<p>
  <img src="https://cdn.acedata.cloud/pbss4f.png" width="500" className="m-auto" />
</p>

Пример кода вызова на Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

После вызова мы получаем следующий результат:

```json theme={null}
{
  "created": 1721626477,
  "data": [
    {
      "revised_prompt": "A delightful image showcasing a young sea otter, who is born brown, with wide charming eyes. It is delightfully lying on its back, paddling in the calm sea waters. Its dense, velvety fur appears wet and shimmering, capturing the essence of its habitat. The small creature curiously plays with a sea shell with its small paws, looking absolutely innocent and charming in its natural environment.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/5d98aa7c-80c6-4523-b571-fc606ad455b9/generated_00.png?se=2024-07-23T05%3A34%3A48Z&sig=GAz%2Bi3%2BkHOQwAMhxcv22tBM%2FaexrxPgT9V0DbNrL4ik%3D&ske=2024-07-23T08%3A41%3A10Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T08%3A41%3A10Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

Возвращаемый результат содержит несколько полей, описание которых приведено ниже:

* `created`, ID, созданный для этой генерации изображения, используется для уникальной идентификации этой задачи.
* `data`, содержит информацию о результате генерации изображения.

Внутри `data` содержится конкретная информация о сгенерированном изображении, где `url` — это ссылка на детали сгенерированного изображения, как показано на изображении.

<p>
  <img src="https://cdn.acedata.cloud/dz7u0x.png" width="500" className="m-auto" />
</p>

## Параметр качества изображения `quality`

Теперь мы расскажем, как настроить некоторые детализированные параметры результата генерации изображения, среди которых параметр качества изображения `quality` включает два варианта: первый `standard` обозначает стандартное изображение, другой `hd` обозначает, что создаваемое изображение имеет более тонкие детали и большую согласованность.

Ниже мы устанавливаем параметр качества изображения на `standard`, конкретные настройки показаны на изображении:

<p>
  <img src="https://cdn.acedata.cloud/1q303w.png" width="500" className="m-auto" />
</p>

Также вы можете заметить, что справа есть соответствующий код вызова, который вы можете скопировать и запустить, или просто нажать кнопку «Try» для тестирования.

<p>
  <img src="https://cdn.acedata.cloud/c0ps6i.png" width="500" className="m-auto" />
</p>

Пример кода вызова на Python:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "quality": "standard"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

После вызова мы получаем следующий результат:

```json theme={null}
{
  "created": 1721636023,
  "data": [
    {
      "revised_prompt": "A cute baby sea otter is lying playfully on its back in the water, with its fur looking glossy and soft. One of its tiny paws is reaching out curiously, and it has an expression of pure joy and warmth on its face as it looks up to the sky. Its body is surrounded by bubbles from its playful twirling in the water. A gentle breeze is playing with its fur making it look more charming. The scene portrays the tranquility and charm of marine life.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/a93ee5e7-3abd-4923-8d79-dc9ef126da46/generated_00.png?se=2024-07-23T08%3A13%3A55Z&sig=wTXGYvUOwUIkaB2CxjK9ww%2FHjS8OwYUWcYInXYKwcAM%3D&ske=2024-07-23T11%3A32%3A05Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T11%3A32%3A05Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

Возвращаемый результат соответствует содержимому основного использования, можно увидеть, что изображение с параметром качества `standard` выглядит следующим образом:

<p>
  <img src="https://cdn.acedata.cloud/j5v15b.png" width="500" className="m-auto" />
</p>

与上述相同操作，仅需将图片质量参数设置为 `hd` ，可以得到如下图所示的图片：

<p>
  <img src="https://cdn.acedata.cloud/vjpbqr.png" width="500" className="m-auto" />
</p>

可以看到 `hd` 比 `standard` 生成的图片具有更精细的细节和更大的一致性。

## 图片大小尺寸参数 `size`

我们还可以设置生成图片的尺寸大小，我们可以进行下面的设置。

下面设置图片的尺寸大小为 `1024 * 1024` ，具体设置如下图：

<p>
  <img src="https://cdn.acedata.cloud/dx5rwh.png" width="500" className="m-auto" />
</p>

同时您可以注意到右侧有对应的调用代码生成，您可以复制代码直接运行，也可以直接点击「Try」按钮进行测试。

<p>
  <img src="https://cdn.acedata.cloud/0sbybl.png" width="500" className="m-auto" />
</p>

Python 样例调用代码：

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter"
    "size": "1024x1024"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

调用之后，我们发现返回结果如下：

```json theme={null}
{
  "created": 1721636652,
  "data": [
    {
      "revised_prompt": "A delightful depiction of a baby sea otter. The small mammal is captured in its natural habitat in the ocean, floating on its back. It has thick brown fur that is sleek and wet from the sea water. Its eyes are closed as if it is enjoying a moment of deep relaxation. The water around it is calm, reflecting the peacefulness of the scene. The background should hint at a diverse marine ecosystem, with visible strands of kelp floating on the surface, suggesting the baby otter's preferred environment.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/9d625ac6-fd2b-42a9-84a6-8c99eb357ccf/generated_00.png?se=2024-07-23T08%3A24%3A24Z&sig=AXtYXowEakGxfRp8LhC2DwqL%2F07LhEDW40oCP%2BdTO8s%3D&ske=2024-07-23T18%3A00%3A45Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T18%3A00%3A45Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

返回的结果与基本使用的内容一致，可以看到图片的尺寸大小为 `1024 * 1024` 的生成图片如下图所示：

<p>
  <img src="https://cdn.acedata.cloud/o4pvvx.png" width="500" className="m-auto" />
</p>

与上述相同操作，仅需将图片的尺寸大小为 `1792 * 1024` ，可以得到如下图所示的图片：

![](https://cdn.acedata.cloud/4pilae.png)

可以看到图片的尺寸大小很明显不一样，另外还可以设置更多尺寸大小，详情信息参考我们官网文档。

## 图片风格参数 `style`

图片风格参数 `style` 包含俩个参数，第一种 `vivid` 表示生成的图片是更加生动的，另一种 `natural` 表示生成的图片更加的自然一点。

下面设置图片风格参数为 `vivid` ，具体设置如下图：

<p>
  <img src="https://cdn.acedata.cloud/609l9i.png" width="500" className="m-auto" />
</p>

同时您可以注意到右侧有对应的调用代码生成，您可以复制代码直接运行，也可以直接点击「Try」按钮进行测试。

<p>
  <img src="https://cdn.acedata.cloud/ee3u9o.png" width="500" className="m-auto" />
</p>

Python 样例调用代码：

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "style": "vivid"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

调用之后，我们发现返回结果如下：

```json theme={null}
{
  "created": 1721637086,
  "data": [
    {
      "revised_prompt": "A baby sea otter with soft, shiny fur and sparkling eyes floating playfully on calm ocean waters. This adorable creature is trippingly frolicking amidst small, gentle waves under a bright, clear, sunny sky. The tranquility of the sea contrasts subtly with the delightful energy of this young otter. The critter gamely clings to a tiny piece of driftwood, its small paws adorably enveloping the floating object.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/6e48f701-7fd3-4356-839e-a2f6f0fe82d9/generated_00.png?se=2024-07-23T08%3A31%3A37Z&sig=4percxqTbUR1j3BQmkhvj%2FAhHzInKI%2FqiTo1MP69coI%3D&ske=2024-07-27T10%3A39%3A55Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-20T10%3A39%3A55Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

返回的结果与基本使用的内容一致，可以看到图片风格参数为 `vivid` 的生成图片如下图所示：

<p>
  <img src="https://cdn.acedata.cloud/e0rpc3.png" width="500" className="m-auto" />
</p>

与上述相同操作，仅需将图片风格参数为 `natural` ，可以得到如下图所示的图片：

<p>
  <img src="https://cdn.acedata.cloud/q9tqwu.png" width="500" className="m-auto" />
</p>

可以看到 `vivid` 比 `natural` 生成的图片具有更加生动逼真。

## 图片链接的格式参数 `response_format`

最后一个图片链接的格式参数 `response_format` 也有俩种，第一种 `b64_json` 是对图片链接进行 Base64 编码，另一种 `url` 就是普通的图片链接，可以直接查看图片。

下面设置图片链接的格式参数为 `url` ，具体设置如下图：

<p>
  <img src="https://cdn.acedata.cloud/2zbgrg.png" width="500" className="m-auto" />
</p>

同时您可以注意到右侧有对应的调用代码生成，您可以复制代码直接运行，也可以直接点击「Try」按钮进行测试。

<p>
  <img src="https://cdn.acedata.cloud/a9exmp.png" width="500" className="m-auto" />
</p>

Python 样例调用代码：

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "Милый детеныш морского выдры",
    "response_format": "url"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

После вызова мы обнаружили, что возвращаемый результат выглядит следующим образом:

```json theme={null}
{
  "created": 1721637575,
  "data": [
    {
      "revised_prompt": "Очаровательное изображение детеныша морской выдры. Выдра видна, как она спокойно отдыхает на спине среди нежных, голубых океанских волн. Шерсть детеныша выдры представляет собой милое сочетание мягких серовато-коричневых оттенков, слегка сверкающих на приглушенном солнечном свете. Его маленькие лапки касаются, слегка подняты к небу, как будто играют с невидимым объектом. Его круглые, выразительные глаза широко открыты от любопытства, искрящиеся жизнью и невинностью. Используйте реалистичный стиль, чтобы передать естественную среду обитания выдры и ее очаровательную пушистую внешность.",
      "url": "https://dalleprodsec.blob.core.windows.net/private/images/87792c5f-8b6d-412e-81dd-f1a1baa19bd2/generated_00.png?se=2024-07-23T08%3A39%3A47Z&sig=zzRAn30TqIKHdLVqZPUUuSJdjCYpoJdaGU6BeoA76Jo%3D&ske=2024-07-23T13%3A32%3A13Z&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96&sks=b&skt=2024-07-16T13%3A32%3A13Z&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d&skv=2020-10-02&sp=r&spr=https&sr=b&sv=2020-10-02"
    }
  ]
}
```

Возвращаемый результат соответствует основному использованию, можно увидеть, что формат параметра ссылки на изображение `url` для сгенерированного изображения [URL изображения](https://dalleprodsec.blob.core.windows.net/private/images/87792c5f-8b6d-412e-81dd-f1a1baa19bd2/generated_00.png?se=2024-07-23T08%3A39%3A47Z\&sig=zzRAn30TqIKHdLVqZPUUuSJdjCYpoJdaGU6BeoA76Jo%3D\&ske=2024-07-23T13%3A32%3A13Z\&skoid=e52d5ed7-0657-4f62-bc12-7e5dbb260a96\&sks=b\&skt=2024-07-16T13%3A32%3A13Z\&sktid=33e01921-4d64-4f8c-a055-5bdaffd5e33d\&skv=2020-10-02\&sp=r\&spr=https\&sr=b\&sv=2020-10-02) доступен для прямого доступа, содержание изображения показано на следующем рисунке:

<p>
  <img src="https://cdn.acedata.cloud/33hs4z.png" width="500" className="m-auto" />
</p>

При аналогичной операции, просто изменив формат параметра ссылки на изображение на `b64_json`, можно получить результат с закодированной в Base64 ссылкой на изображение, конкретный результат показан на следующем рисунке:

```json theme={null}
{
  "created": 1721638071,
  "data": [
    {
      "b64_json": "iVBORw0..............v//AQEAAP4AAAD+AAADAQAAAwEEA/4D//8Q/Pbw64mKbVTFoQAAAABJRU5ErkJggg==",
      "revised_prompt": "Очаровательное изображение молодого детеныша морской выдры. Выдра нежно плавает на спокойном синем море, наслаждаясь теплыми, золотыми лучами солнечного света, проникающими с ясного неба сверху. Шерсть выдры имеет насыщенный шоколадный цвет, и она выглядит невероятно мягкой и пушистой. Глаза выдры яркие и выразительные, полные детского любопытства и радости. У нее маленькие, торчащие уши и носик, похожий на пуговку, что добавляет к ее общей милоте. В море вокруг нее видны сверкающие капли воды, освеженные солнечным светом, зрелище, безусловно, восхитительное."
    }
  ]
}
```

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

Поскольку время генерации изображений API OpenAI может быть относительно долгим, если API долго не отвечает, HTTP-запрос будет поддерживать соединение, что приведет к дополнительному расходу системных ресурсов, поэтому этот API также предоставляет поддержку асинхронных обратных вызовов.

Общий процесс таков: когда клиент инициирует запрос, дополнительно указывается поле `callback_url`, после того как клиент инициирует API-запрос, API немедленно возвращает результат, содержащий информацию о поле `task_id`, представляющем текущий идентификатор задачи. Когда задача завершена, результат сгенерированного изображения будет отправлен на указанный клиентом `callback_url` в формате POST JSON, который также включает поле `task_id`, так что результат задачи можно связать по идентификатору.

Давайте рассмотрим пример, чтобы понять, как это работает.

Во-первых, Webhook-обратный вызов — это служба, которая может принимать HTTP-запросы, разработчики должны заменить его на URL своего собственного HTTP-сервера. Здесь для удобства демонстрации используется публичный сайт примера Webhook [https://webhook.site/](https://webhook.site/), открыв этот сайт, можно получить URL Webhook, как показано на рисунке:

![](https://cdn.acedata.cloud/cjjfly.png)

Скопировав этот URL, его можно использовать в качестве Webhook, пример здесь: `https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab`.

Затем мы можем установить поле `callback_url` на указанный выше URL Webhook, а также заполнить соответствующие параметры, как показано в следующем коде:

```python theme={null}
import requests

url = "https://api.acedata.cloud/openai/images/generations"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "dall-e-3",
    "prompt": "Милый детеныш морской выдры",
    "callback_url": "https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Нажав "Запустить", можно сразу получить результат, как показано ниже:

```json theme={null}
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
```

Через некоторое время мы можем наблюдать результат сгенерированного изображения на URL Webhook, содержание следующее:

```json theme={null}
{
  "success": true,
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c",
  "trace_id": "9b4b1ff3-90f2-470f-b082-1061ec2948cc",
  "data": {
    "created": 1721626477,
    "data": [
      {
        "revised_prompt": "Очаровательное изображение, демонстрирующее молодую морскую выдру...",
        "url": "https://dalleprodsec.blob.core.windows.net/private/images/..."
      }
    ]
  }
}
```

Можно увидеть, что в результате есть поле `task_id`, поле `data` содержит такие же результаты генерации изображений, как и при синхронном вызове, с помощью поля `task_id` можно связать задачи.

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

При вызове API, если возникнут ошибки, API вернет соответствующий код ошибки и информацию. Например:

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

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

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Заключение

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