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"です。詳細については、データを保存するをご覧ください。
- Base64 エンコードされたデータには、データ URI スキーム(RFC 2397)の接頭辞を付ける必要があります。したがって、Base64 でエンコードされたデータの
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"です。詳細については、データを保存するをご覧ください。
- Base64 エンコードされたデータには、データ URI スキーム(RFC 2397)の接頭辞を付ける必要があります。したがって、Base64 でエンコードされたデータの