メインコンテンツへスキップ
DALL-E 3 は OpenAI が開発した2つのバージョンの画像生成モデルで、テキストの説明に基づいて高品質の画像を生成することができます。 この記事では、OpenAI Images Generations API の操作の使用フローについて説明します。これを利用することで、公式の OpenAI DALL-E の画像生成機能を簡単に使用できます。

申請フロー

OpenAI Images Generations API を使用するには、まず OpenAI Images Generations API ページにアクセスし、「Acquire」ボタンをクリックして、リクエストに必要な資格情報を取得します: まだログインまたは登録していない場合は、自動的にログインページにリダイレクトされ、登録とログインを促されます。ログインまたは登録後、現在のページに自動的に戻ります。 初回申請時には無料のクレジットが付与され、この API を無料で使用できます。

基本使用

次に、画面上に対応する内容を入力します。以下の図のように:

このインターフェースを初めて使用する際には、少なくとも3つの内容を入力する必要があります。1つは authorization で、ドロップダウンリストから選択できます。もう1つのパラメータは 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 には2種類あり、1つは standard で、生成される標準の画像を示します。もう1つは 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 に設定するだけで、以下の図のような画像を得ることができます:

hdstandard よりも生成された画像がより細かいディテールと大きな一貫性を持っていることがわかります。

画像サイズ寸法パラメータ 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 には2つのパラメータが含まれています。1つ目の vivid は生成される画像がより生き生きとしたものであることを示し、もう1つの 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 には2種類あります。1つ目の b64_json は画像リンクを Base64 エンコードし、もう1つの 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": "赤ちゃんのアシカの魅力的な描写。アシカは穏やかな青い海の波の中で、背中を向けて静かに休んでいる。赤ちゃんアシカの毛は、柔らかい灰色がかった茶色の色合いが愛らしく混ざり合い、 mutedな日差しの中で微かに輝いている。小さな前足は空に向かって少し持ち上げられ、見えない物体で遊んでいるかのようだ。丸く表情豊かな目は好奇心で大きく見開かれ、生命と無邪気さに満ちている。アシカの自然な生息地と愛らしくふわふわした外観を呼び起こすためにリアルなスタイルを使用してください。",
      "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": "若い赤ちゃんアシカの魅力的な画像。アシカは穏やかな青い海に優しく浮かび、上から降り注ぐ澄んだ空の暖かい金色の光線を浴びている。アシカの毛はリッチなチョコレートブラウンで、非常に柔らかくふわふわしているように見える。アシカの目は明るく表情豊かで、子供のような好奇心と喜びに満ちている。小さな立ち耳とボタンのような鼻が全体の可愛さを引き立てている。周囲の海には、日光に照らされたきらめく水滴が見え、その光景は確かに楽しいものである。"
    }
  ]
}

非同期コールバック

OpenAI Images Generations APIが画像を生成するのに時間がかかる可能性があるため、APIが長時間応答しない場合、HTTPリクエストは接続を維持し、追加のシステムリソースを消費することになります。そのため、このAPIは非同期コールバックのサポートも提供しています。 全体の流れは次の通りです:クライアントがリクエストを開始する際に、追加で callback_url フィールドを指定します。クライアントがAPIリクエストを開始すると、APIはすぐに結果を返し、現在のタスクIDを示す task_id フィールド情報を含みます。タスクが完了すると、生成された画像の結果がPOST JSON形式でクライアントが指定した callback_url に送信され、その中にも task_id フィールドが含まれます。これにより、タスクの結果をIDで関連付けることができます。 以下の例を通じて、具体的にどのように操作するかを理解しましょう。 まず、WebhookコールバックはHTTPリクエストを受信できるサービスであり、開発者は自分が構築したHTTPサーバーのURLに置き換える必要があります。ここでは、デモのために公開されたWebhookサンプルサイト https://webhook.site/ を使用します。このサイトを開くと、Webhook URLが得られます。以下の図の通りです: このURLをコピーすれば、Webhookとして使用できます。このサンプルは https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab です。 次に、フィールド callback_url を上記のWebhook URLに設定し、以下のコードのように相応のパラメータを入力します:
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"
}
少し待つと、Webhook URLで生成された画像の結果を観察できます。内容は以下の通りです:
{
  "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": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

結論

この文書を通じて、OpenAI Images Generations API を使用して公式の OpenAI DALL-E の画像生成機能を簡単に利用する方法を理解したことでしょう。この文書が、API の接続と使用をより良くする手助けとなることを願っています。ご不明な点がございましたら、いつでも当社の技術サポートチームにお問い合わせください。