ビジョン対応チャット モデルは、OpenAI によって開発された大規模なマルチモーダル モデル (LMM) であり、画像を分析し、それらに関する質問に対するテキスト応答を提供できます。 自然言語処理と視覚的理解の両方が組み込まれています。 現在のビジョン対応モデルは、 o シリーズ推論モデル、GPT-5 シリーズ、GPT-4.1 シリーズ、GPT-4.5、GPT-4o シリーズです。
ビジョン対応モデルは、アップロードする画像に何が含まれているかについての一般的な質問に答えることができます。
ヒント
ビジョン対応モデルを使用するには、デプロイしたサポートされているモデルで Chat Completion API を呼び出します。 チャット完了 API に慣れていない場合は、 Vision 対応チャットのハウツー ガイドを参照してください。
クイック スタート
Microsoft Foundry モデルの Azure OpenAI でチャットで画像の使用を開始します。
この記事を使用して、Microsoft Foundry を使用して、イメージを理解したチャット完了モデルのデプロイとテストを開始します。
前提 条件
- Azure サブスクリプション。 無料で作成します。
- Azure サブスクリプションを取得したら、します。 リソースの作成の詳細については、 リソースのデプロイ ガイドを参照してください。
- Azure OpenAI リソースが接続として追加された Foundry プロジェクト。
メディアを準備する
このクイック スタートを完了するには、画像が必要です。 このサンプル イメージまたは使用可能なその他のイメージを使用できます。
Foundry に移動
ヒント
ビジョン対応モデルが既にデプロイされている場合は、「 チャット セッションを開始して画像を分析する」に進みます。
- Foundry に移動し、Azure OpenAI リソースに関連付けられている資格情報でサインインします。 サインイン ワークフローの実行中または後に、適切なディレクトリ、Azure サブスクリプション、および Azure OpenAI リソースを選択します。
- 作業するプロジェクトを選択します。
- 左側のナビゲーション メニューで、[ モデル + エンドポイント ] を選択し、[ + モデルのデプロイ] を選択します。
- モデル名 gpt-4o または gpt-4o-mini を選択して、イメージ対応のデプロイを選択 します。 表示されたウィンドウで、名前とデプロイの種類を選択します。 Azure OpenAI リソースが接続されていることを確認します。 モデルデプロイの詳細については、 リソースデプロイガイドを参照してください。
- [ デプロイ] を選択します。
- 次に、新しいモデルを選択し、[ プレイグラウンドで開く] を選択します。 チャットプレイグラウンドで、[デプロイ] ドロップダウンで作成した デプロイ を選択する必要があります。
遊び 場
このチャット セッションでは、入力した画像を理解できるようにアシスタントに指示します。
アシスタントのセットアップ、チャット セッション、設定、パネルに関する一般的なヘルプについては、 チャットのクイック スタートを参照してください。
チャット セッションを開始して画像を分析する
このチャット セッションでは、入力した画像を理解できるようにアシスタントに指示します。
開始するには、[ デプロイ] ドロップダウン でイメージ対応のデプロイが選択されていることを確認します。
[セットアップ] パネルのコンテキスト テキスト ボックスで、アシスタントをガイドするプロンプトを入力します。
"You're an AI assistant that helps people find information."または、イメージまたはシナリオに合わせてプロンプトを調整できます。メモ
モデルからの役に立たない応答を回避するために、タスクに固有のシステム メッセージを更新することをお勧めします。
[ 変更の適用] を選択して変更を保存します。
チャット セッション ウィンドウで、添付ファイル ボタンを選択し、[ 画像のアップロード] を選択します。 イメージを選択します。
チャット フィールドに次のプロンプトを追加します:
Describe this imageし、送信アイコンを選択して送信します。送信アイコンは停止ボタンに置き換えられます。 選択すると、アシスタントは要求の処理を停止します。 このクイック スタートでは、アシスタントに返信を完了させます。
アシスタントは、画像の説明と共に応答します。
画像の分析に関連するフォローアップの質問をします。
"What should I highlight about this image to my insurance company?"入力できます。次に示すような関連する応答を受け取る必要があります。
When reporting the incident to your insurance company, you should highlight the following key points from the image: 1. **Location of Damage**: Clearly state that the front end of the car, particularly the driver's side, is damaged. Mention the crumpled hood, broken front bumper, and the damaged left headlight. 2. **Point of Impact**: Indicate that the car has collided with a guardrail, which may suggest that no other vehicles were involved in the accident. 3. **Condition of the Car**: Note that the damage seems to be concentrated on the front end, and there is no visible damage to the windshield or rear of the car from this perspective. 4. **License Plate Visibility**: Mention that the license plate is intact and can be used for identification purposes. 5. **Environment**: Report that the accident occurred near a roadside with a guardrail, possibly in a rural or semi-rural area, which might help in establishing the accident location and context. 6. **Other Observations**: If there were any other circumstances or details not visible in the image that may have contributed to the accident, such as weather conditions, road conditions, or any other relevant information, be sure to include those as well. Remember to be factual and descriptive, avoiding speculation about the cause of the accident, as the insurance company will conduct its own investigation.
コードの表示とエクスポート
チャット セッションの任意の時点で、チャット ウィンドウの上部にある [未加工の JSON の表示 ] スイッチを有効にして、JSON 形式の会話を表示できます。 クイック スタート チャット セッションの開始時の内容を次に示します。
[
{
"role": "system",
"content": [
"You are an AI assistant that helps people find information."
]
},
]
リソースのクリーンアップ
Azure OpenAI リソースをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
この記事を使用して、Azure OpenAI REST API を使用して、ビジョン対応チャット モデルのデプロイと使用を開始します。
前提 条件
- Azure サブスクリプション。 無料で作成します。
- Python 3.8 以降のバージョン。
- 次のPython ライブラリ:
requests、json。 - ビジョン対応モデルがデプロイされた Microsoft Foundry Models リソースの Azure OpenAI。 使用可能な地域についてはモデルの可用性を参照してください。 リソースの作成の詳細については、 リソースのデプロイ ガイドを参照してください。
メモ
現在、GPT-4 Turbo with Vision モデルのコンテンツ フィルタリングをオフにすることはサポートされていません。
キーとエンドポイントを取得する
Azure OpenAI API を正常に呼び出すには、Azure OpenAI リソースに関する次の情報が必要です。
| 変数 | 名前 | 値 |
|---|---|---|
| エンドポイント | api_base |
エンドポイントの値は、Azure ポータルのリソースの Keys と Endpoint にあります。 また、Foundry ポータルの [デプロイ] ページでエンドポイントを見つけることもできます。 エンドポイントの例は、 https://docs-test-001.openai.azure.com/です。 |
| キー | api_key |
キーの値は、Azure ポータルのリソースの Keys と Endpoint の下にもあります。 Azureは、リソースの 2 つのキーを生成します。 どちらの値も使用できます。 |
Azure ポータルでリソースに移動します。 ナビゲーション ウィンドウで、[リソース管理] の [キーとエンドポイント] を選択します。 エンドポイントの値とアクセス キーの値をコピーします。 KEY 1 または KEY 2 の値を使用できます。 2 つのキーを使用すると、サービスの中断を引き起こすことなく、キーを安全にローテーションおよび再生成できます。
新しいPython アプリケーションを作成する
quickstart.py という名前の新しいPython ファイルを作成>。 好みのエディターまたは IDE で新しいファイルを開きます。
quickstart.py の内容を次のコードに置き換えます。
# Packages required: import requests import json api_base = '<your_azure_openai_endpoint>' deployment_name = '<your_deployment_name>' API_KEY = '<your_azure_openai_key>' base_url = f"{api_base}openai/deployments/{deployment_name}" headers = { "Content-Type": "application/json", "api-key": API_KEY } # Prepare endpoint, headers, and request body endpoint = f"{base_url}/chat/completions?api-version=2023-12-01-preview" data = { "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": 2000 } # Make the API call response = requests.post(endpoint, headers=headers, data=json.dumps(data)) print(f"Status Code: {response.status_code}") print(response.text)次の変更を行います。
- 適切なフィールドにエンドポイントの URL とキーを入力します。
- 適切なフィールドにモデルのデプロイ名を入力します。
-
"image"フィールドの値を、イメージのパブリックにアクセス可能な URL に変更します。ヒント
URL の代わりに、Base 64 でエンコードされた画像データを使用することもできます。 詳細については、 Vision チャットのハウツー ガイドを参照してください。
pythonコマンドを使用してアプリケーションを実行します。python quickstart.py
リソースのクリーンアップ
Azure OpenAI リソースをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
この記事を使用して、Azure OpenAI Python SDK を使用して、ビジョン対応チャット モデルをデプロイして使用します。
ライブラリのソース コード | パッケージ (PyPi) |
前提 条件
- Azure サブスクリプション。 無料で作成します。
- Python 3.8 以降のバージョン。
- ビジョン対応チャット モデルがデプロイされた Microsoft Foundry Models リソースのAzure OpenAI。 使用可能な地域についてはモデルの可用性を参照してください。 リソースの作成の詳細については、 リソースのデプロイ ガイドを参照してください。
Microsoft Entra IDの前提条件
Microsoft Entra IDで推奨されるキーレス認証では、次の手順を実行する必要があります。
- Microsoft Entra IDでキーレス認証を行うために使用するAzure CLIをインストールします。
-
Cognitive Services Userロールをユーザー アカウントに割り当てます。 Azure ポータルの Access コントロール (IAM)>ロールの割り当ての追加でロールを割り当てることができます。
セットアップ
次のコマンドを使用して OpenAI Python クライアント ライブラリをインストールします。
pip install openai
メモ
このライブラリは OpenAI によって管理されます。 ライブラリの最新の更新プログラムを追跡するには、 リリース履歴 を参照してください。
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出すには、endpoint と key が必要です。
| 変数名 | 値 |
|---|---|
ENDPOINT |
サービス エンドポイントは、Azure ポータルでリソースを確認する際に キーとエンドポイント セクションで見つけることができます。 または、Microsoft Foundry ポータルのDeploymentsページでエンドポイントを見つけることができます。 エンドポイントの例は、 https://docs-test-001.openai.azure.com/です。 |
API-KEY |
この値は、Azure ポータルでリソースを調べたときに、KEY1またはKEY2を使用できます。 |
Azure ポータルでリソースに移動します。 [ キーとエンドポイント] セクションは、[ リソース管理 ] セクションにあります。 API 呼び出しを認証するために両方が必要になるので、エンドポイントとアクセス キーをコピーします。
KEY1またはKEY2を使用できます。 常に 2 つのキーを使用すると、サービスの中断を引き起こさずに、キーを安全にローテーションおよび再生成できます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
クラウドで実行されるアプリケーションに資格情報を格納しないように、 Azure リソースの管理された ID を使用して認証をMicrosoft Entra IDすることをお勧めします。
API キーは慎重に使用してください。 API キーをコードに直接含めず、パブリックに投稿しないでください。 API キーを使用する場合は、Azure Key Vaultに安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用してAzure Key Vaultへのアクセスを制限します。 アプリで API キーを安全に使用する方法の詳細については、「Azure Key Vault を使用した
AI サービスのセキュリティの詳細については、「Authenticate requests to Azure AI サービス」を参照してください。
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
新しいPython アプリケーションを作成する
quickstart.py という名前の新しいPython ファイルを作成>。 好みのエディターまたは IDE で新しいファイルを開きます。
quickstart.py の内容を次のコードに置き換えます。
import os from openai import AzureOpenAI api_base = os.getenv("AZURE_OPENAI_ENDPOINT") api_key= os.getenv("AZURE_OPENAI_API_KEY") deployment_name = '<your_deployment_name>' api_version = '2023-12-01-preview' # this might change in the future client = AzureOpenAI( api_key=api_key, api_version=api_version, base_url=f"{api_base}/openai/deployments/{deployment_name}" ) response = client.chat.completions.create( 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=2000 ) print(response)次の変更を行います。
-
AZURE_OPENAI_ENDPOINT環境変数とAZURE_OPENAI_API_KEY環境変数が設定されていることを確認します。 -
deployment_name変数にモデル デプロイの名前を入力します。 -
"url"フィールドの値を、イメージのパブリックにアクセス可能な URL に変更します。ヒント
URL の代わりに、Base 64 でエンコードされた画像データを使用することもできます。 詳細については、 Vision チャットのハウツー ガイドを参照してください。
-
pythonコマンドを使用してアプリケーションを実行します。python quickstart.py
重要
API キーは慎重に使用してください。 API キーをコードに直接含めず、パブリックに投稿しないでください。 API キーを使用する場合は、Azure Key Vaultに安全に格納します。 アプリで API キーを安全に使用する方法の詳細については、「Azure Key Vault を使用した
AI サービスのセキュリティの詳細については、「Authenticate requests to Azure AI サービス」を参照してください。
リソースのクリーンアップ
Azure OpenAI リソースをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
この記事では、OpenAI JavaScript SDK を使用してビジョン対応チャット モデルをデプロイして使用する方法について説明します。
このSDKは、Azureが提供するAzure特有の型を備えたOpenAIによって提供されます。
Reference documentation | Library source code | Package (npm) | Samples
前提 条件
- Azure サブスクリプション - 無料で作成します
- Node.jsの LTS バージョン
- Azure CLIローカル開発環境でのパスワードレス認証に使用され、Azure CLIでサインインして必要なコンテキストを作成します。
- サポートされているリージョンで作成されたAzure OpenAI リソース (Region の可用性を参照)。 詳細については、「リソースを作成し、Azure OpenAIを使用してモデルをデプロイする」を参照してください。
メモ
このライブラリは OpenAI によって管理されます。 ライブラリの最新の更新プログラムを追跡するには、 リリース履歴 を参照してください。
Microsoft Entra IDの前提条件
Microsoft Entra IDで推奨されるキーレス認証では、次の手順を実行する必要があります。
- Microsoft Entra IDでキーレス認証を行うために使用するAzure CLIをインストールします。
-
Cognitive Services Userロールをユーザー アカウントに割り当てます。 Azure ポータルの Access コントロール (IAM)>ロールの割り当ての追加でロールを割り当てることができます。
セットアップ
vision-quickstart新しいフォルダーを作成し、次のコマンドを使用してクイック スタート フォルダーに移動します。mkdir vision-quickstart && cd vision-quickstart次のコマンドを使用して
package.jsonを作成します。npm init -y次のコマンドを使用して、JavaScript 用の OpenAI クライアント ライブラリをインストールします。
npm install openai推奨されるパスワードレス認証の場合:
npm install @azure/identity
リソース情報を取得する
Azure OpenAI リソースでアプリケーションを認証するには、次の情報を取得する必要があります。
| 変数名 | 値 |
|---|---|
AZURE_OPENAI_ENDPOINT |
この値は、Azure ポータルからリソースを調べるときに、Keys と Endpoint セクションにあります。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
この値は、モデルのデプロイ時にデプロイに選択したカスタム名に対応します。 この値は、Azure ポータルの Resource Management>Model Deployments にあります。 |
注意
SDK で推奨されるキーレス認証を使用するには、 AZURE_OPENAI_API_KEY 環境変数が設定されていないことを確認します。
イメージ プロンプト用の新しい JavaScript アプリケーションを作成する
azure-samples/cognitive-services-sample-data-files からイメージを選択します。 パブリックにアクセスできるイメージ URL を以下のコードに入力するか、 IMAGE_URL 環境変数をそれに設定します。
重要
AZURE BLOB ストレージに格納されているイメージに SAS URL を使用する場合は、マネージド ID を有効にし、Azure OpenAI リソースに Storage Blob Reader ロールを割り当てる必要があります (Azure ポータルでこれを行います)。 これにより、モデルは BLOB ストレージ内のイメージにアクセスできます。
ヒント
URL の代わりに、Base 64 でエンコードされた画像データを使用することもできます。 詳細については、 Vision チャットのハウツー ガイドを参照してください。
次のコードを使用して、
index.jsファイルを作成します。const AzureOpenAI = require('openai').AzureOpenAI; const { DefaultAzureCredential, getBearerTokenProvider } = require('@azure/identity'); // You will need to set these environment variables or edit the following values const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const imageUrl = process.env.IMAGE_URL || "<image url>"; // Required Azure OpenAI deployment name and API version const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4-with-turbo"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://ai.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } function createMessages() { return { messages: [ { role: "system", content: "You are a helpful assistant." }, { role: "user", content: [ { type: "text", text: "Describe this picture:", }, { type: "image_url", image_url: { url: imageUrl, }, }, ], }, ], model: "", max_tokens: 2000, }; } async function printChoices(completion) { for (const choice of completion.choices) { console.log(choice.message); } } export async function main() { console.log("== Get Vision chats Sample =="); const client = getClient(); const messages = createMessages(); const completion = await client.chat.completions.create(messages); await printChoices(completion); } main().catch((err) => { console.error("Error occurred:", err); });次のコマンドを使用して、Azureにサインインします。
az loginJavaScript ファイルを実行します。
node index.js
リソースのクリーンアップ
Azure OpenAI リソースをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
この記事では、OpenAI JavaScript SDK を使用してビジョン対応チャット モデルをデプロイして使用する方法について説明します。
このSDKは、Azureが提供するAzure特有の型を備えたOpenAIによって提供されます。
Reference documentation | Library source code | Package (npm) | Samples
前提 条件
- Azure サブスクリプション - 無料で作成します
- Node.jsの LTS バージョン
- Typescript
- Azure CLIローカル開発環境でのパスワードレス認証に使用され、Azure CLIでサインインして必要なコンテキストを作成します。
- サポートされているリージョンで作成されたAzure OpenAI リソース (Region の可用性を参照)。 詳細については、「リソースを作成し、Azure OpenAIを使用してモデルをデプロイする」を参照してください。
メモ
このライブラリは OpenAI によって管理されます。 ライブラリの最新の更新プログラムを追跡するには、 リリース履歴 を参照してください。
Microsoft Entra IDの前提条件
Microsoft Entra IDで推奨されるキーレス認証では、次の手順を実行する必要があります。
- Microsoft Entra IDでキーレス認証を行うために使用するAzure CLIをインストールします。
-
Cognitive Services Userロールをユーザー アカウントに割り当てます。 Azure ポータルの Access コントロール (IAM)>ロールの割り当ての追加でロールを割り当てることができます。
セットアップ
vision-quickstart新しいフォルダーを作成し、次のコマンドを使用してクイック スタート フォルダーに移動します。mkdir vision-quickstart && cd vision-quickstart次のコマンドを使用して
package.jsonを作成します。npm init -y次のコマンドを使用して、
package.jsonを ECMAScript に更新します。npm pkg set type=module次のコマンドを使用して、JavaScript 用の OpenAI クライアント ライブラリをインストールします。
npm install openai推奨されるパスワードレス認証の場合:
npm install @azure/identity
リソース情報を取得する
Azure OpenAI リソースでアプリケーションを認証するには、次の情報を取得する必要があります。
| 変数名 | 値 |
|---|---|
AZURE_OPENAI_ENDPOINT |
この値は、Azure ポータルからリソースを調べるときに、Keys と Endpoint セクションにあります。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
この値は、モデルのデプロイ時にデプロイに選択したカスタム名に対応します。 この値は、Azure ポータルの Resource Management>Model Deployments にあります。 |
注意
SDK で推奨されるキーレス認証を使用するには、 AZURE_OPENAI_API_KEY 環境変数が設定されていないことを確認します。
イメージ プロンプト用の新しい JavaScript アプリケーションを作成する
azure-samples/cognitive-services-sample-data-files からイメージを選択します。 次のコードでイメージ URL を使用するか、 IMAGE_URL 環境変数をイメージ URL に設定します。
ヒント
URL の代わりに、Base 64 でエンコードされた画像データを使用することもできます。 詳細については、 Vision チャットのハウツー ガイドを参照してください。
次のコードを使用して、
index.tsファイルを作成します。import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import type { ChatCompletion, ChatCompletionCreateParamsNonStreaming, } from "openai/resources/index"; // You will need to set these environment variables or edit the following values const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const imageUrl = process.env["IMAGE_URL"] || "<image url>"; // Required Azure OpenAI deployment name and API version const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4-with-turbo"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://ai.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } function createMessages(): ChatCompletionCreateParamsNonStreaming { return { messages: [ { role: "system", content: "You are a helpful assistant." }, { role: "user", content: [ { type: "text", text: "Describe this picture:", }, { type: "image_url", image_url: { url: imageUrl, }, }, ], }, ], model: "", max_tokens: 2000, }; } async function printChoices(completion: ChatCompletion): Promise<void> { for (const choice of completion.choices) { console.log(choice.message); } } export async function main() { console.log("== Get Vision chat Sample =="); const client = getClient(); const messages = createMessages(); const completion = await client.chat.completions.create(messages); await printChoices(completion); } main().catch((err) => { console.error("Error occurred:", err); });TypeScript コードをトランスパイルする
tsconfig.jsonファイルを作成し、ECMAScript の次のコードをコピーします。{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }TypeScript から JavaScript へのトランスパイル。
tsc次のコマンドを使用して、Azureにサインインします。
az login次のコマンドを使用してコードを実行します。
node index.js
リソースのクリーンアップ
Azure OpenAI リソースをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
この記事を使用して、Azure OpenAI .NET SDK を使用して、ビジョン対応チャット モデルをデプロイして使用します。
前提 条件
- Azure サブスクリプション。 無料で 作成できます。
- .NET 8.0 SDK
- ビジョン対応チャット モデルがデプロイされた Microsoft Foundry Models リソースのAzure OpenAI。 使用可能な地域についてはモデルの可用性を参照してください。 リソースの作成の詳細については、 リソースのデプロイ ガイドを参照してください。
Microsoft Entra IDの前提条件
Microsoft Entra IDで推奨されるキーレス認証では、次の手順を実行する必要があります。
- Microsoft Entra IDでキーレス認証を行うために使用するAzure CLIをインストールします。
-
Cognitive Services Userロールをユーザー アカウントに割り当てます。 Azure ポータルの Access コントロール (IAM)>ロールの割り当ての追加でロールを割り当てることができます。
セットアップ
vision-quickstart新しいフォルダーを作成し、次のコマンドを使用してクイック スタート フォルダーに移動します。mkdir vision-quickstart && cd vision-quickstart次のコマンドを使用して、新しいコンソール アプリケーションを作成します。
dotnet new consoleopenAI .NET クライアント ライブラリを dotnet add package コマンドでインストールします。
dotnet add package Azure.AI.OpenAI推奨されるMicrosoft Entra IDを使用したキーレス認証の場合は、Azure.Identityパッケージをインストールします:
dotnet add package Azure.Identityrecommended Microsoft Entra ID によるキーレス認証の場合は、次のコマンドを使用してAzureにサインインします。
az login
リソース情報を取得する
Azure OpenAI リソースでアプリケーションを認証するには、次の情報を取得する必要があります。
| 変数名 | 値 |
|---|---|
AZURE_OPENAI_ENDPOINT |
この値は、Azure ポータルからリソースを調べるときに、Keys と Endpoint セクションにあります。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
この値は、モデルのデプロイ時にデプロイに選択したカスタム名に対応します。 この値は、Azure ポータルの Resource Management>Model Deployments にあります。 |
クイック スタートを実行する
このクイック スタートのサンプル コードでは、推奨されるキーレス認証にMicrosoft Entra IDを使用します。 API キーを使用する場合は、 DefaultAzureCredential オブジェクトを AzureKeyCredential オブジェクトに置き換えることができます。
AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential());
クイック スタートを実行するには、次の手順に従います。
Program.csの内容を次のコードに置き換え、プレースホルダーの値を独自の値に更新します。using Azure; using Azure.AI.OpenAI; using Azure.Identity; using OpenAI.Chat; // Required for Passwordless auth string deploymentName = "gpt-4"; string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? "https://<your-resource-name>.openai.azure.com/"; string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "<your-key>"; // Use the recommended keyless credential instead of the AzureKeyCredential credential. AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); //AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key)); var chatClient = openAIClient.GetChatClient(deploymentName); var imageUrl = "YOUR_IMAGE_URL"; var textPart = ChatMessageContentPart.CreateTextPart("Describe this picture:"); var imgPart = ChatMessageContentPart.CreateImagePart(imageUrl); var chatMessages = new List<ChatMessage> { new SystemChatMessage("You are a helpful assistant."), new UserChatMessage(textPart, imgPart) }; ChatCompletion chatCompletion = await chatClient.CompleteChatAsync(chatMessages); Console.WriteLine($"[ASSISTANT]:"); Console.WriteLine($"{chatCompletion.Content[0].Text}");YOUR_IMAGE_URLを、アップロードするイメージのパブリックにアクセス可能なイメージに置き換えます。dotnet runコマンドまたはVisual Studioの上部にある実行ボタンを使用して、アプリケーションを実行します。dotnet run
出力
アプリケーションの出力は、 imageUri 変数で指定したイメージの説明になります。 アシスタントは画像を分析し、その内容に基づいて詳細な説明を提供します。
リソースのクリーンアップ
Azure OpenAI リソースをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
API の詳細
次のコマンドは、ビジョン対応モデルで Chat Completion API を呼び出す方法を示しています。 詳細については、 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 でエンコードされた画像)が含まれる可能性があります。
重要
必ず "max_tokens" または max_completion_tokens 値を設定してください。または、戻り値の出力が切り捨てられます。 o シリーズ推論モデルの場合は、max_completion_tokensではなくmax_tokensを使用します。
重要
画像をアップロードする場合、チャット要求ごとに 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: 既定の設定。 モデルは、画像入力のサイズに基づいて、低または高を決定します。 -
lowsetting: モデルは "高解像度" モードをアクティブにせず、代わりに低解像度の 512 x 512 バージョンを処理するため、応答が速くなり、詳細が重要でないシナリオではトークンの消費量が減少します。 -
high設定: モデルは "高い res" モードをアクティブにします。 ここでは、モデルは最初に低解像度の画像を表示し、入力イメージから詳細な 512 x 512 セグメントを生成します。 各セグメントではトークンの予算が 2 倍使用されるため、画像をより詳細に解釈できます。
この値は、次の例に示す形式を使用して設定します。
{
"type": "image_url",
"image_url": {
"url": "<image URL>",
"detail": "high"
}
}
出力
画像をビジョン対応モデルに送信すると、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: コンテンツ フィルターのフラグが原因でコンテンツが省略されました。
入力の制限事項
このセクションでは、ビジョン対応チャット モデルの制限事項について説明します。
イメージのサポート
- 最大入力イメージ サイズ: 入力イメージの最大サイズは 20 MB に制限されます。
- 低解像度の精度: "低解像度" 設定を使用して画像を分析すると、応答が高速になり、特定のユース ケースで使用される入力トークンが少なくなります。 ただし、これは、画像内のオブジェクトとテキスト認識の精度に影響する可能性があります。
- イメージ チャットの制限: Microsoft Foundry portal または API で画像をアップロードする場合、チャット呼び出しごとに 10 個の画像に制限されます。
特別価格情報
重要
次のコンテンツは一例であり、価格は将来変更される可能性があります。
ビジョン対応モデルでは、他の Azure OpenAI チャット モデルと同様に料金が発生します。 [ 価格] ページで詳しく説明されているプロンプトと入力候補に対してトークンごとの料金を支払います。 基本料金とその他の機能の概要を次に示します。
ビジョン付き GPT-4 Turbo の基本価格は次のとおりです。
- 入力: 1,000 トークンあたり $0.01
- 出力: 1,000 トークンあたり $0.03
テキストと画像 をトークン に変換する方法については、概要の「トークン」セクションを参照してください。
画像価格計算の例
一般的なユース ケースでは、表示されるオブジェクトとテキストの両方と 100 トークンのプロンプト入力を含む画像を取得します。 サービスがプロンプトを処理すると、100 個の出力トークンが生成されます。 画像では、テキストとオブジェクトの両方を検出できます。 このトランザクションの価格は次のようになります。
| 項目 | 詳細 | コスト |
|---|---|---|
| テキスト プロンプトの入力 | 100 個のテキスト トークン | $0.001 |
| 画像入力の例 ( イメージ トークンを参照) | 170 + 85 個のイメージ トークン | $0.00255 |
| OCR 用の強化されたアドオン機能 | $1.50 / 1,000 トランザクション | $0.0015 |
| オブジェクト 接地の強化されたアドオン機能 | $1.50 / 1,000 トランザクション | $0.0015 |
| 出力トークン | 100 トークン (想定) | $0.003 |
| 合計 | $0.00955 |
トラブルシューティング
| 問題 | 解像 度 |
|---|---|
| 出力が切り捨てられた |
max_tokens値またはmax_completion_tokens値を増やす |
| 画像が処理されない | URL がパブリックにアクセス可能であるか、base64 エンコードが正しいことを確認する |
| レート制限を超えました | 指数バックオフを使用して再試行ロジックを実装する |
関連コンテンツ
- Azure OpenAIの詳細を参照してください。
- ビジョン チャットに関してよく寄せられる質問
- チャット補完 API リファレンス