重要
Azure Functions 用の Azure OpenAI 拡張機能は現在、プレビュー段階です。
Azure Functions 用の Azure OpenAI 拡張機能には、 Foundry Models の Azure OpenAI の機能と動作を関数コードの実行に簡単に統合できる一連のトリガーとバインドが実装されています。
Azure Functions は、他の Azure サービスと簡単に接続するための一連のトリガーとバインドを提供するイベントドリブンのコンピューティング サービスです。
Azure OpenAI と Functions の統合により、以下を可能にする関数を構築できます。
| アクション | トリガー/バインドの種類 |
|---|---|
| コンテンツの入力候補に標準のテキスト プロンプトを使用する | Azure OpenAI テキスト入力候補の入力バインド |
| 関数を呼び出すアシスタント要求に応答する | Azure OpenAI アシスタント トリガー |
| アシスタントを作成する | Azure OpenAI アシスタント作成の出力バインド |
| アシスタントにメッセージを送信する | Azure OpenAI アシスタント ポストの入力バインド |
| アシスタントの履歴を取得する | Azure OpenAI アシスタント クエリの入力バインド |
| テキスト埋め込みを読み取る | Azure OpenAI 埋め込みの入力バインド |
| ベクトル データベースに書き込む | Azure OpenAI 埋め込みストアの入力バインド |
| ベクトル データベースから読み取る | Azure OpenAI セマンティック検索の入力バインド |
拡張機能のインストール
インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モード (インプロセスまたは分離ワーカー プロセス) によって異なります。
Microsoft.Azure.Functions.Worker.Extensions.OpenAI NuGet パッケージをインストールして、プロジェクトに Azure OpenAI 拡張機能を追加します。これは、.NET CLI を使用して行うことができます。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.OpenAI --prerelease
ベクトル データベースを使用してコンテンツを保存する場合は、次の NuGet パッケージの少なくとも 1 つをインストールする必要もあります。
- Azure AI 検索: Microsoft.Azure.Functions.Worker.Extensions.OpenAI.AzureAISearch
- Azure DocumentDB: Microsoft.Azure.Functions.Worker.Extensions.OpenAI.CosmosDBSearch
- NoSQL Azure Cosmos DB:Microsoft.Azure。Functions.Worker.Extensions.OpenAI.CosmosDBSearch
- Azure Data Explorer:Microsoft.Azure。Functions.Worker.Extensions.OpenAI.Kusto
バンドルのインストール
プレビュー拡張子は、OpenAI拡張を含む4.xバンドルのプレビュー版を対象とした host.json ファイル内の以下のコードを追加または置き換えすることで追加できます。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.*, 5.0.0)"
}
}
Goは現在この機能に対応していません。
接続
Azure OpenAIのバインディング拡張を使うには、OpenAIモデル定義への接続を指定する必要があります。 以下のいずれかの方法を使って、バインディング内でOpenAIモデル接続を設定します。
-
AIConnectionNamebindingプロパティ(OpenAI Azure推奨)を使いましょう。 - OpenAI Azureのアプリ設定で
AZURE_OPENAI_ENDPOINTとAZURE_OPENAI_KEYを設定してください。 - アプリの設定で
Open_API_Keyだけに設定してください(https://api.openai.com用)。
接続の設定方法は、モデルAPIと認証方法の両方に依存し、以下の表に示されています:
| 認証/モデルAPI | Azure OpenAI | OpenAI(https://api.openai.com) |
|---|---|---|
| マネージド・アイデンティティ接続 | AIConnectionName |
サポートしていません |
| Key Vault 参照 | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| アプリ設定リファレンス | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
| 共有シークレット | AZURE_OPENAI_ENDPOINTAZURE_OPENAI_KEY |
Open_API_Key |
管理型アイデンティティベースの接続と AIConnectionName プロパティを活用してください。
AIConnectionNameを使う場合、このプロパティ設定の値は接続の種類によって異なります。
-
マネージド・アイデンティティ接続:
AIConnectionNameプロパティ<CONNECTION_NAME_PREFIX>は、複数の設定群が共有するものであり、これらが共同でOpenAIへのアイデンティティベースの接続を定義しますAzure。 詳細については、「 同一性接続の定義」を参照してください。 -
Key Vault参照:
AIConnectionNameプロパティ設定は、APIキーが中央管理されている場所へのAzure Key Vault参照を返します。 詳細については、「Key Vault connectionsの定義」をご覧ください。 -
App Configuration reference:
AIConnectionNameプロパティ設定はAPIキーまたはKey Vault参照を返すAzure App Configuration参照を返します。 詳細については、接続記事のAzure App Configurationをご覧ください。 -
APIキー:
AIConnectionNameプロパティ設定はエンドポイントとキーを含むアプリ設定に解決されます。 共有鍵は漏洩する可能性があるため、可能な限り管理型ID接続を使用してください。 詳細については、「 接続の定義」を参照してください。
バインディング接続について詳しく知りたい方は、「Azure Functionsの接続管理」をご覧ください。
OpenAIのバインディングには、OpenAIとの接続を定義するアプリ設定群のAIConnectionNameを指定するための<ConnectionNamePrefix>プロパティAzure含まれています。
AIConnectionNameプロパティをmyAzureOpenAIに設定する際は、以下の管理されたID接続設定を考慮してください。
myAzureOpenAI__endpoint=https://contoso.openai.azure.com/myAzureOpenAI__credential=managedidentitymyAzureOpenAI__clientId=aaaaaaaa-bbbb-cccc-1111-222222222222
実行時には、ホストはこれらの設定を単一の myAzureOpenAI 設定として解釈します。
"myAzureOpenAI":
{
"endpoint": "https://contoso.openai.azure.com/",
"credential": "managedidentity",
"clientId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}
マネージドIDを使う場合は、必ず Cognitive Services OpenAIユーザー ロールに自分のIDを追加してください。
ローカルで動作する場合は、これらの設定を local.settings.json プロジェクトファイルに追加してください。 詳細については、「 ID ベースの接続を使用したローカル開発」を参照してください。
詳細については、アプリケーション設定の操作に関する記事を参照してください。