メインコンテンツへスキップ
OpenAI 画像編集サービスでは、任意の数の画像と指示を入力し、修正された画像を出力できます。 この文書では、OpenAI Images Edits API 操作の使用フローを主に紹介します。これを利用することで、公式の OpenAI 画像編集機能を簡単に使用できます。

申請フロー

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

基本使用

次に、コードを使用して呼び出すことができます。以下はCURLを使用した呼び出しの例です:
curl -s -D >(grep -i x-request-id >&2) \
  -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png) \
  -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F 'prompt=Create a lovely gift basket with these this items in it'
このインターフェースを初めて使用する際には、少なくとも4つの内容を入力する必要があります。一つは authorization で、ドロップダウンリストから選択できます。もう一つのパラメータは model で、model は OpenAI の公式モデルカテゴリを選択するものです。ここでは主に1種類のモデルがあります。詳細は提供されたモデルを参照してください。もう一つのパラメータは prompt で、prompt は生成する画像のためのヒントです。最後のパラメータは image で、このパラメータには編集する画像のパスが必要です。編集する画像は以下の図の通りです:

同じ呼び出し効果のPythonサンプル呼び出しコード:
import base64
from openai import OpenAI
client = OpenAI()

prompt = """
Generate a photorealistic image of a gift basket on a white background 
labeled 'Relax & Unwind' with a ribbon and handwriting-like font, 
containing all the items in the reference pictures.
"""

result = client.images.edit(
    model="gpt-image-1",
    image=[
        open("test.png", "rb")
    ],
    prompt=prompt
)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

# Save the image to a file
with open("gift-basket.png", "wb") as f:
    f.write(image_bytes)
Pythonを使用して呼び出すには、まず2つの環境変数をインポートする必要があります。一つは OPENAI_BASE_URL で、https://api.acedata.cloud/openai に設定できます。もう一つは使用する資格情報変数 OPENAI_API_KEY で、この値は authorization から取得したものです。Mac OSでは、以下のコマンドを使用して環境変数を設定できます:
export OPENAI_BASE_URL=https://api.acedata.cloud/openai
export OPENAI_API_KEY={token} 
呼び出し後、現在のディレクトリに gift-basket.png という画像が生成されることがわかります。具体的な結果は以下の通りです:

これで画像の編集操作が完了しました。現在、公式のEditsタスクは2種類のモデル、dall-e-2gpt-image-1 のみをサポートしています。

非同期コールバック

OpenAI Images Edits 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に設定し、以下のコードのように相応のパラメータを入力します:
curl -X POST "https://api.acedata.cloud/v1/images/edits" \
  -H "Authorization: Bearer {token}" \
  -F "model=gpt-image-1" \
  -F "image[]=@test.png" \
  -F "prompt=Create a lovely gift basket with these items in it" \
  -F "callback_url=https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab"
呼び出し後、すぐに結果が得られることがわかります。以下のようになります:
{
  "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": [
      {
        "b64_json": "iVBORw0KGgo..."
      }
    ]
  }
}
結果には 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 の画像編集機能を使用するために OpenAI Images Edits API をどのように簡単に利用するかを理解したことでしょう。この文書が、API の接続と使用をより良くする手助けとなることを願っています。ご不明な点がございましたら、いつでも当社の技術サポートチームにお問い合わせください。