次の方法で共有


Azure Functions 用の Azure OpenAI 拡張機能

重要

Azure Functions 用の Azure OpenAI 拡張機能は現在、プレビュー段階です。

Azure Functions 用の Azure OpenAI 拡張機能では、 Azure OpenAI Service の機能と動作を関数コードの実行に簡単に統合できる一連のトリガーとバインドが実装されています。

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 つをインストールする必要もあります。

バンドルのインストール

プレビュー拡張機能を追加するには、 host.json ファイルに次のコードを追加または置き換えます。これは、OpenAI 拡張機能を含む 4.x バンドルのプレビュー バージョンを具体的に対象とします。

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.*, 5.0.0)"
  }
}

OpenAI への接続

Azure OpenAI バインド拡張機能を使用するには、OpenAI への接続を指定する必要があります。 この接続は、アプリケーション設定と、トリガーまたはバインドの AIConnectionName プロパティを使用して定義されます。 環境変数を使用して、キーベースの接続を定義することもできます。

マネージド ID ベースの接続と AIConnectionName プロパティを使用することをお勧めします。

OpenAI バインドには、Azure OpenAI への接続を定義するこのアプリ設定グループのAIConnectionNameを指定するために使用できる<ConnectionNamePrefix> プロパティがあります。

設定の名前 説明
<CONNECTION_NAME_PREFIX>__endpoint Azure OpenAI サービスの URI エンドポイントを設定します。 この設定は常に必須です。
<CONNECTION_NAME_PREFIX>__clientId アクセス トークンを取得するときに使用する特定のユーザー割り当て ID を設定します。 <CONNECTION_NAME_PREFIX>__credentialmanagedidentity に設定する必要があります。 このプロパティは、アプリケーションに割り当てられたユーザー割り当て ID に相当するクライアント ID を受け取ります。 リソース ID とクライアント ID の両方を指定することは無効です。 指定されていない場合、システム割り当て ID が使用されます。 このプロパティは、 を設定しないとき、credentialで異なる方法で使用されます。
<CONNECTION_NAME_PREFIX>__credential 接続のアクセス トークンを取得する方法を定義します。 マネージド ID 認証には managedidentity を使用します。 この値は、ホスティング環境でマネージド ID が使用できる場合にのみ有効です。
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId credentialmanagedidentity に設定されると、このプロパティによって、トークン取得時に使用されるリソース ID を指定できます。 プロパティは、ユーザー定義マネージド ID のリソース ID に対応するリソース識別子を受け取ります。 リソース ID とクライアント ID の両方を指定することは無効です。 両方とも指定されていない場合は、システム割り当て ID が使用されます。 このプロパティは、 を設定しないとき、credentialで異なる方法で使用されます。
<CONNECTION_NAME_PREFIX>__key キーベースの認証を使用して Azure OpenAI サービスのエンドポイントにアクセスするために必要な共有シークレット キーを設定します。 セキュリティのベスト プラクティスとして、認証には常にマネージド ID と共に Microsoft Entra ID を使用する必要があります。

AIConnectionName プロパティがmyAzureOpenAIに設定されている場合は、次のマネージド ID 接続設定を検討してください。

  • myAzureOpenAI__endpoint=https://contoso.openai.azure.com/
  • myAzureOpenAI__credential=managedidentity
  • myAzureOpenAI__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 ベースの接続を使用したローカル開発」を参照してください。

詳細については、アプリケーション設定の操作に関する記事を参照してください。