注
この記事では、 Microsoft Foundry (クラシック) ポータルを参照します。
🔄新しいポータルを使用している場合は、Microsoft Foundry (新しい) ドキュメントに切り替えます。
注
この記事では、 Microsoft Foundry (新しい) ポータルを参照します。
ビジョン対応チャット モデルは、OpenAI によって開発された大規模なマルチモーダル モデル (LMM) であり、画像を分析し、それらに関する質問に対してテキストでの応答を提供できます。 これには、自然言語処理と視覚的理解の両方が組み込まれています。 現在のビジョン対応モデルは、 o シリーズ推論モデル、GPT-5 シリーズ、GPT-4.1 シリーズ、GPT-4.5、GPT-4o シリーズです。
ビジョン対応モデルは、ユーザーがアップロードした画像に写っているものについての一般的な質問に回答できます。
ヒント
ビジョン対応モデルを使うには、デプロイされているサポート対象のモデルで Chat Completion API を呼び出します。 Chat Completion API に慣れていない場合は、ビジョン対応チャットの攻略ガイドを参照してください。
[前提条件]
- Azure サブスクリプション - 無料アカウントを作成します
- ビジョン対応モデルがデプロイされた Azure OpenAI リソース (GPT-4o、GPT-4.5、GPT-5、または o シリーズ)。 Azure OpenAI サービス リソースの作成とデプロイに関するページを参照してください。
- Python の場合:
openaiPython パッケージ バージョン 1.0 以降。pip install openaiを使用してインストールします。
Chat Completion API を呼び出す
次に示すコマンドは、ビジョン対応チャット モデルをコードで使用する最も基本的な方法です。 これらのモデルをプログラムで初めて使用する場合は、画像を含むチャットのクイックスタートから始めることをお勧めします。
POST 要求を https://{RESOURCE_NAME}.openai.azure.com/openai/v1/chat/completions に送信します。ここで
- RESOURCE_NAME は Azure OpenAI リソースの名前です
必須のヘッダー:
-
Content-Type: application/json -
api-key: {API_KEY}
本文: 要求本文のサンプルを次に示します。 GPT-4o のチャット補完 API の形式は同じですが、メッセージの内容はテキストと画像を含む配列にすることができます(画像には、有効でパブリックにアクセス可能な HTTP または HTTPS URL、または base-64 でエンコードされた画像が使用できます)。
Von Bedeutung
必ず "max_tokens" または max_completion_tokens 値を設定してください。または、戻り値の出力が切り捨てられます。 o シリーズ推論モデルの場合は、max_completion_tokensではなくmax_tokensを使用します。
Von Bedeutung
画像をアップロードするときは、チャット要求ごとに 10 個の画像という制限があります。
注
サポートされている画像形式には、JPEG、PNG、GIF (最初のフレームのみ)、WEBP があります。
{
"model": "MODEL-DEPLOYMENT-NAME",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this picture:"
},
{
"type": "image_url",
"image_url": {
"url": "<image URL>"
}
}
]
}
],
"max_tokens": 100,
"stream": false
}
ヒント
ローカル画像を使用する
ローカル画像を使用する場合は、次の Python コードを使用して base64 に変換し、API に渡すことができます。 代替のファイル変換ツールはオンラインで入手できます。
import base64
from mimetypes import guess_type
# Function to encode a local image into data URL
def local_image_to_data_url(image_path):
# Guess the MIME type of the image based on the file extension
mime_type, _ = guess_type(image_path)
if mime_type is None:
mime_type = 'application/octet-stream' # Default MIME type if none is found
# Read and encode the image file
with open(image_path, "rb") as image_file:
base64_encoded_data = base64.b64encode(image_file.read()).decode('utf-8')
# Construct the data URL
return f"data:{mime_type};base64,{base64_encoded_data}"
# Example usage
image_path = '<path_to_image>'
data_url = local_image_to_data_url(image_path)
print("Data URL:", data_url)
base64 画像データの準備ができたら、次のように要求本文で API に渡すことができます。
...
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,<your_image_data>"
}
...
イメージの詳細レベルを構成する
必要に応じて、"detail" フィールドに"image_url"パラメーターを定義できます。 モデルが画像を解釈して処理する方法を調整するには、 low、 high、または autoの 3 つの値のいずれかを選択します。
-
autosetting: 既定の設定。 モデルは、画像入力のサイズに基づいて、低または高を決定します。 -
low設定: モデルは "高解像度" モードをアクティブにせず、代わりに低解像度の 512x512 バージョンを処理します。その結果、微細さが重要ではないシナリオでは応答が速くなり、トークンの消費量が少なくなります。 -
high設定: モデルは "高解像度" モードをアクティブにします。 この場合、モデルは最初に低解像度画像を表示し、次に入力画像から詳細な 512x512 セグメントを生成します。 各セグメントではトークンの予算が 2 倍使用されるため、画像をより詳細に解釈できます。
この値は、次の例に示す形式を使用して設定します。
{
"type": "image_url",
"image_url": {
"url": "<image URL>",
"detail": "high"
}
}
使われるトークンと価格に画像パラメーターが与える影響について詳しくは、Azure OpenAI の概要に関するページの画像トークンに関するセクションをご覧ください
アウトプット
画像をビジョン対応モデルに送信すると、API はモデルの分析と共にチャット完了応答を返します。 応答には、Azure OpenAI に固有のコンテンツ フィルターの結果が含まれます。
{
"id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
"object": "chat.completion",
"created": 1702439277,
"model": "gpt-4o",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"choices": [
{
"finish_reason":"stop",
"index": 0,
"message": {
"role": "assistant",
"content": "The picture shows an individual dressed in formal attire, which includes a black tuxedo with a black bow tie. There is an American flag on the left lapel of the individual's jacket. The background is predominantly blue with white text that reads \"THE KENNEDY PROFILE IN COURAGE AWARD\" and there are also visible elements of the flag of the United States placed behind the individual."
},
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"usage": {
"prompt_tokens": 1156,
"completion_tokens": 80,
"total_tokens": 1236
}
}
すべての応答には "finish_reason" フィールドが含まれます。 値は次のいずれかです。
-
stop: API は完全なモデル出力を返しました。 -
length:max_tokens入力パラメーターまたはモデルのトークン制限により、モデルの出力は不完全です。 -
content_filter: コンテンツ フィルターからのフラグによりコンテンツが省略されました。
トラブルシューティング
| 問題点 | 解決策 |
|---|---|
| 出力が切り捨てられた |
max_tokens値またはmax_completion_tokens値を増やす |
| 画像が処理されない | URL がパブリックにアクセス可能であるか、base64 エンコードが正しいことを確認する |
| レート制限を超過 | 指数バックオフを使用して再試行ロジックを実装する |