次の方法で共有


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

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

ビジョン対応チャット モデルは、アップロードする画像に何が存在するかに関する一般的な質問に回答します。

ヒント

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

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 ターボ モデル バージョンでは、すべての推論要求に対して 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)、オブジェクト グラウンディング、ビデオ プロンプトなどのビジョン拡張機能のプレビュー機能は廃止され、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 の現在のクォータと同じになります。 リージョンのクォータ制限を参照してください。

Chat Completion API を呼び出す

次のコマンドは、GPT-4 Turbo with Vision モデルをコードで使用する最も基本的な方法を示しています。 これらのモデルをプログラムで初めて使用する場合は、GPT-4 Turbo with Vision のクイックスタートから始めることをお勧めします。

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 は、GPT-4 Turbo with Vision モデル デプロイの名前です

必須のヘッダー:

  • 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>"
}
...

出力

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: コンテンツ フィルターからのフラグによりコンテンツが省略されました。

画像処理の詳細パラメーター設定: low、high、auto

モデルの detail パラメータには、モデルが画像を解釈して処理する方法を調整するための 3 つの選択肢 (lowhigh、または auto) が用意されています。 既定の設定は auto です。この場合、モデルは画像入力のサイズに基づいて low か high かを決定します。

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

使われるトークンと価格に画像パラメーターが与える影響の詳細については、Azure OpenAI の概要に関するページの「画像トークン」を参照してください。

出力

モデルから受信するチャット応答には、オブジェクト ラベルや境界ボックス、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: コンテンツ フィルターからのフラグによりコンテンツが省略されました。

次のステップ