画像を理解する

Gemini Chat Completions API リクエストに画像を追加して、含まれる画像の内容を理解するタスクを実行できます。画像理解は、テキストとメディア ファイルを組み合わせた Gemini のマルチモーダル入力の 1 つです。

Gemini を使用した画像理解の詳細と、API リクエストを送信する手順については、マルチモーダル プロンプトを送信するをご覧ください。

画像付きプロンプトの仕様

Gemini へのリクエストに 1 つまたは複数の画像を追加できます。Google Distributed Cloud(GDC)エアギャップでの Gemini モデルのパフォーマンスを確保するため、プロンプトあたりの最大画像数は 100 です。

画像のピクセル数に特に制限はありません。ただし、大きな画像は元のアスペクト比を維持したまま、最大解像度 768 x 768 に合わせて縮小され、パディングされます。各画像は 258 個のトークンに相当します。

画像は、次のいずれかの画像データ MIME タイプである必要があります。

  • HEIC: image/heic
  • HEIF: image/heif
  • JPG: image/jpg または image/jpeg
  • PNG: image/png
  • WEBP: image/webp

REST API の Chat Completions エンドポイントを使用し、HTTP クライアントまたは OpenAI の Python 用公式 SDK を使用できます。画像をインライン データとしてプロンプト リクエストに提供するには、Base64 エンコード ファイルとして指定するか、プロンプト リクエストを行う前に画像ファイルをストレージ バケットにアップロードします。

Google Cloud ドキュメントで、画像のベスト プラクティス制限事項の詳細を確認する。

OpenAI と、Gemini が Google Distributed Cloud(GDC)エアギャップで実装する Chat Completions エンドポイントの詳細については、https://platform.openai.com/docs/api-reference/chat をご覧ください。

プロンプトから画像を理解する

次の例は、OpenAI の Python または curl 用の公式 SDK を使用して、テキストと画像の入力からテキストを生成する Gemini Chat Completions API リクエストを示しています。

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "MODEL_ID",
  messages =  [
                {
                  "role": "user",
                  "content": "What's in this image?"
                },
                {
                  "role": "user",
                  "content": [
                      {
                        "type": "image_url",
                        "image_url": {
                              # Image URL or base64-encoded data
                              "url": IMAGE_DATA,
                            }
                      }
                    ]
                }
              ]
)

print(model_response)

次のように置き換えます。

  • MODEL_ID: レスポンスを生成するモデルのエンドポイント ID。
  • IMAGE_DATA: バケット内の画像 URL のパス、または base64 エンコードされた画像データ。データに応じて、次の点を考慮してください。

    • Base64 エンコードされたデータには、データ URI スキーム(RFC 2397)の接頭辞を付ける必要があります。したがって、Base64 でエンコードされたデータの url フィールドの形式は、たとえば "url": f"data:image/jpeg;base64,{base64_image}" です。
    • 画像 URL は、GDC ストレージ バケットに保存されている画像を参照する必要があります。したがって、画像 URL の url フィールドの形式は、たとえば "url": "s3://path/to/bucket/image" です。詳細については、データを保存するをご覧ください。

curl

curl \
  -X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
  -d '{
      "model_id": "MODEL_ID",
      "messages": [
        {
          "role": "user",
          "content": "What's in this image?"
        },
        {
          "role": "user",
          "content": [
            {
              "type": "image_url",
              "image_url": {
                # Image URL or base64-encoded data
                "url": IMAGE_DATA
              }
            }
          ]
        }
      ],
      "max_tokens": 300
    }'

次のように置き換えます。

  • ENDPOINT: 組織で使用する API エンドポイント。
  • PROJECT: プロジェクト ID。
  • MODEL_ID: レスポンスを生成するモデルのエンドポイント ID。
  • IMAGE_DATA: バケット内の画像 URL のパス、または base64 エンコードされた画像データ。データに応じて、次の点を考慮してください。

    • Base64 エンコードされたデータには、データ URI スキーム(RFC 2397)の接頭辞を付ける必要があります。したがって、Base64 でエンコードされたデータの url フィールドの形式は、たとえば "url": f"data:image/jpeg;base64,{base64_image}" です。
    • 画像 URL は、GDC ストレージ バケットに保存されている画像を参照する必要があります。したがって、画像 URL の url フィールドの形式は、たとえば "url": "s3://path/to/bucket/image" です。詳細については、データを保存するをご覧ください。

次のステップ