次の方法で共有


ビジョン対応チャット モデルを使用する

ビジョン対応チャット モデルは、OpenAI によって開発された大規模なマルチモーダル モデル (LMM) であり、画像を分析し、それらに関する質問に対してテキストでの応答を提供できます。 これには、自然言語処理と視覚的理解の両方が組み込まれています。 現在のビジョン対応モデルは、 O シリーズ推論モデル、GPT-4.1 シリーズ モデル、GPT-4.5、GPT-4o シリーズ、GPT-4 Turbo with Vision です。

ビジョン対応モデルは、ユーザーがアップロードした画像に写っているものについての一般的な質問に回答できます。

ヒント

ビジョン対応モデルを使うには、デプロイされているサポート対象のモデルで Chat Completion API を呼び出します。 Chat Completion API に慣れていない場合は、ビジョン対応チャットの攻略ガイドを参照してください。

Chat Completion API を呼び出す

次に示すコマンドは、ビジョン対応チャット モデルをコードで使用する最も基本的な方法です。 これらのモデルをプログラムで初めて使用する場合は、画像を含むチャットのクイックスタートから始めることをお勧めします。

POST 要求を https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview に送信します。ここで

  • RESOURCE_NAME は Azure OpenAI リソースの名前です
  • DEPLOYMENT_NAME は、モデル デプロイの名前です

必要なヘッダー:

  • Content-Type: application/json
  • api-key: {API_KEY}

本文: 要求本文のサンプルを次に示します。 形式は GPT-4 の Chat Completions API と同じですが、メッセージの内容がテキストと画像 (画像への有効な HTTP または HTTPS URL、または base-64 でエンコードされた画像) を含む配列でもかまわない点が異なります。

重要

"max_tokens" の値を必ず設定してください。そうしないと、戻り値の出力が切り捨てられます。

重要

画像をアップロードするときは、チャット要求ごとに 10 個の画像という制限があります。

{
    "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"パラメーターを定義できます。 モデルが画像を解釈して処理する方法を調整するには、 lowhigh、または autoの 3 つの値のいずれかを選択します。

  • auto setting: 既定の設定。 モデルは、画像入力のサイズに基づいて、低または高を決定します。
  • low 設定: モデルは "高解像度" モードをアクティブにせず、代わりに低解像度の 512x512 バージョンを処理します。その結果、微細さが重要ではないシナリオでは応答が速くなり、トークンの消費量が少なくなります。
  • high 設定: モデルは "高解像度" モードをアクティブにします。 この場合、モデルは最初に低解像度画像を表示し、次に入力画像から詳細な 512x512 セグメントを生成します。 各セグメントではトークンの予算が 2 倍使用されるため、画像をより詳細に解釈できます。

この値は、次の例に示す形式を使用して設定します。

{ 
    "type": "image_url",
    "image_url": {
        "url": "<image URL>",
        "detail": "high"
    }
}

使われるトークンと価格に画像パラメーターが与える影響について詳しくは、Azure OpenAI の概要に関するページの画像トークンに関するセクションをご覧ください

出力

API の応答は次のようになります。

{
    "id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
    "object": "chat.completion",
    "created": 1702439277,
    "model": "gpt-4",
    "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: コンテンツ フィルターからのフラグによりコンテンツが省略されました。

出力

ユーザーがモデルから受け取るチャット応答には、オブジェクト ラベルと境界ボックスや、OCR の結果など、画像に関するより詳細な情報が含まれるようになるはずです。 API 応答は次のようになります。

{
    "id": "chatcmpl-8UyuhLfzwTj34zpevT3tWlVIgCpPg",
    "object": "chat.completion",
    "created": 1702394683,
    "model": "gpt-4",
    "choices":
    [
        {
            "finish_reason": {
                "type": "stop",
                "stop": "<|fim_suffix|>"
            },
            "index": 0,
            "message":
            {
                "role": "assistant",
                "content": "The image shows a close-up of an individual with dark hair and what appears to be a short haircut. The person has visible ears and a bit of their neckline. The background is a neutral light color, providing a contrast to the dark hair."
            }
        }
    ],
    "usage":
    {
        "prompt_tokens": 816,
        "completion_tokens": 49,
        "total_tokens": 865
    }
}

すべての応答には "finish_reason" フィールドが含まれます。 値は次のいずれかです。

  • stop: API は完全なモデル出力を返しました。
  • length: max_tokens 入力パラメーターまたはモデルのトークン制限により、モデルの出力は不完全です。
  • content_filter: コンテンツ フィルターからのフラグによりコンテンツが省略されました。

GPT-4 Turbo モデルのアップグレード

GPT-4 Turbo の最新の GA リリースは次のとおりです。

  • gpt-4バージョン:turbo-2024-04-09

これは、次のプレビュー モデルに代わるものです。

  • gpt-4バージョン:1106-Preview
  • gpt-4バージョン:0125-Preview
  • gpt-4バージョン:vision-preview

OpenAI と Azure OpenAI GPT-4 Turbo GA のモデルの違い

  • OpenAI バージョンの最新の 0409 Turbo モデルでは、すべての推論要求に対して JSON モードと関数呼び出しがサポートされています。
  • Azure OpenAI バージョンの最新の turbo-2024-04-09 では、現在、画像 (ビジョン) 入力で推論要求を行う場合、JSON モードと関数呼び出しの使用はサポートされていません。 テキスト ベース入力の要求 (image_url とインライン イメージがない要求) では、JSON モードと関数呼び出しがサポートされています。

gpt-4 vision-preview との違い

  • Azure AI 固有の Vision 拡張機能と GPT-4 Turbo with Vision の統合は、gpt-4バージョン:turbo-2024-04-09 ではサポートされません。 これには、光学式文字認識 (OCR)、オブジェクト典拠、ビデオ プロンプト、画像を含むデータの処理の改善が含まれます。

重要

光学式文字認識 (OCR)、オブジェクト典拠、ビデオ プロンプトなどの Vision 拡張機能のプレビュー機能は廃止され、gpt-4 バージョン: vision-previewturbo-2024-04-09 にアップグレードされると使用できなくなります。 現在これらのプレビュー機能のいずれかに依存している場合、このモデルの自動アップグレードは破壊的変更になります。

GPT-4 Turbo プロビジョニング済みでの管理された可用性

  • gpt-4バージョン:turbo-2024-04-09 は、標準とプロビジョニング済みの両方のデプロイで使用できます。 現在、このモデルのプロビジョニング済みバージョンでは、画像/ビジョン推論要求はサポートされていません。 このモデルのプロビジョニングされたデプロイでは、テキスト入力のみ受け入れます。 標準モデル デプロイは、テキストと画像/ビジョンの両方の推論要求を受け入れます。

GPT-4 Turbo with Vision GA のデプロイ

Azure AI Foundry ポータルから GA モデルをデプロイするには、GPT-4 を選択し、ドロップダウン メニューから turbo-2024-04-09 バージョンを選択します。 gpt-4-turbo-2024-04-09 モデルの既定のクォータは、GPT-4-Turbo の現在のクォータと同じになります。 リージョン別のクォータ制限に関する記事をご覧ください。