Перейти до основного вмісту
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, конкретні налаштування наведені на малюнку нижче:

Водночас ви можете помітити, що праворуч є відповідний код виклику, ви можете скопіювати код і безпосередньо виконати його, або просто натиснути кнопку «Спробувати» для тестування.

Приклад коду виклику на 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, конкретні налаштування наведені на малюнку нижче:

Водночас ви можете помітити, що праворуч є відповідний код виклику, ви можете скопіювати код і безпосередньо виконати його, або просто натиснути кнопку «Спробувати» для тестування.

Приклад коду виклику на 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, можна отримати зображення, показане нижче:

Можна побачити, що зображення, згенероване з параметром vivid, є більш яскравим і реалістичним, ніж з natural.

Формат параметра посилання на зображення response_format

Останній параметр формату посилання на зображення response_format також має два варіанти, перший b64_json є кодуванням посилання на зображення в Base64, інший url є звичайним посиланням на зображення, яке можна безпосередньо переглядати. Нижче налаштування формату посилання на зображення на url, конкретні налаштування наведені на малюнку нижче:

Водночас ви можете помітити, що праворуч є відповідний код виклику, ви можете скопіювати код і безпосередньо виконати його, або просто натиснути кнопку «Спробувати» для тестування.

Приклад коду виклику на 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 Images Generations може бути відносно тривалим, якщо 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. Якщо у вас є будь-які питання, будь ласка, звертайтеся до нашої команди технічної підтримки.