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

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

Чтобы использовать OpenAI Images Generations API, сначала перейдите на страницу OpenAI Images Generations API и нажмите кнопку «Acquire», чтобы получить необходимые для запроса учетные данные: Если вы еще не вошли в систему или не зарегистрированы, вас автоматически перенаправят на страницу входа, пригласив зарегистрироваться и войти в систему. После входа или регистрации вы автоматически вернетесь на текущую страницу. При первой подаче заявки вам будет предоставлен бесплатный лимит, который позволяет бесплатно использовать этот API.

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

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

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

Пример кода вызова на Python:
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)
После вызова мы обнаруживаем, что возвращаемый результат выглядит следующим образом:
{
  "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 — это ссылка на детали сгенерированного изображения, как показано на рисунке.

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

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

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

Пример кода вызова на Python:
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)
После вызова мы обнаруживаем, что возвращаемый результат выглядит следующим образом:
{
  "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 выглядит следующим образом:

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

Можно увидеть, что изображение, созданное с параметром hd, имеет более тонкие детали и большую согласованность по сравнению с standard.

Параметр размера изображения size

我们还可以设置生成图片的尺寸大小,我们可以进行下面的设置。 下面设置图片的尺寸大小为 1024 * 1024 ,具体设置如下图:

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

Python 样例调用代码:
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)
调用之后,我们发现返回结果如下:
{
  "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 的生成图片如下图所示:

与上述相同操作,仅需将图片的尺寸大小为 1792 * 1024 ,可以得到如下图所示的图片: 可以看到图片的尺寸大小很明显不一样,另外还可以设置更多尺寸大小,详情信息参考我们官网文档。

图片风格参数 style

图片风格参数 style 包含俩个参数,第一种 vivid 表示生成的图片是更加生动的,另一种 natural 表示生成的图片更加的自然一点。 下面设置图片风格参数为 vivid ,具体设置如下图:

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

Python 样例调用代码:
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)
调用之后,我们发现返回结果如下:
{
  "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 的生成图片如下图所示:

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

可以看到 vividnatural 生成的图片具有更加生动逼真。

图片链接的格式参数 response_format

最后一个图片链接的格式参数 response_format 也有俩种,第一种 b64_json 是对图片链接进行 Base64 编码,另一种 url 就是普通的图片链接,可以直接查看图片。 下面设置图片链接的格式参数为 url ,具体设置如下图:

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

Python 样例调用代码:
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_format": "url"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
调用之后,我们发现返回结果如下:
{
  "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 это можно напрямую открыть, содержание изображения показано на следующем изображении:

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

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

Поскольку время генерации изображений API OpenAI может быть относительно долгим, если API долго не отвечает, HTTP-запрос будет поддерживать соединение, что приведет к дополнительному расходу системных ресурсов, поэтому этот API также поддерживает асинхронные обратные вызовы. Общий процесс таков: когда клиент инициирует запрос, он дополнительно указывает поле callback_url, после чего 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 на указанный выше URL Webhook, а также заполнить соответствующие параметры, как показано в следующем коде:
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)
Нажав на запуск, вы сразу получите результат, как показано ниже:
{
  "task_id": "6a97bf49-df50-4129-9e46-119aa9fca73c"
}
Через некоторое время мы можем наблюдать результат сгенерированного изображения на URL Webhook, содержание следующее:
{
  "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: Внутренняя ошибка сервера, что-то пошло не так на сервере.

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

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "не удалось получить"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Заключение

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