次の方法で共有


.NET Aspire Azure OpenAI 統合

この記事では、.NET AspireAzureOpenAIclientの使用方法について説明します。 Aspire.Azure.AI.OpenAI ライブラリは、AzureOpenAI または OpenAI 機能を使用するために、依存関係挿入 (DI) コンテナーに OpenAIClient を登録するために使用されます。 対応するログ記録とテレメトリが有効になります。

OpenAIClientの使用方法の詳細については、「クイック スタート: AzureOpenAI Serviceを使用したテキストの生成を開始する」を参照してください。

作業の開始

.NET Aspire Azure OpenAI 統合を開始するには、📦Aspireをインストールします。Azure.人工知能。clientを使用するプロジェクト (つまり、AzureOpenAIclientを使用するアプリケーションのプロジェクト) に NuGet パッケージをOpenAI します。

dotnet add package Aspire.Azure.AI.OpenAI

詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

使用例

client-consuming プロジェクトの Program.cs ファイルで、依存性注入コンテナを通じて使用するための OpenAIClient を登録する拡張メソッドを呼び出します。 このメソッドは、接続名パラメーターを受け取ります。

builder.AddAzureOpenAIClient("openAiConnectionName");

前のコードでは、AddAzureOpenAIClient メソッドは DI コンテナーに OpenAIClient を追加します。 openAiConnectionName パラメーターは、構成内の接続文字列の名前です。 その後、依存関係の挿入を使用して OpenAIClient インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。

public class ExampleService(OpenAIClient client)
{
    // Use client...
}

アプリ ホストの使用状況

IDistributedApplicationBuilderに Azure ホスティングサポートを追加するには、📦Aspire.Hosting.Azure.CognitiveServices. NuGet パッケージを アプリホスト プロジェクトにインストールします。

dotnet add package Aspire.Hosting.Azure.CognitiveServices

アプリ ホスト プロジェクトで、AddAzureOpenAIなどの次の方法を使用して、AzureOpenAI リソースを登録します。

var builder = DistributedApplication.CreateBuilder(args);

var openai = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureOpenAI("openAiConnectionName")
    : builder.AddConnectionString("openAiConnectionName");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(openai);

AddAzureAIOpenAI メソッドは、ConnectionStrings:openAiConnectionName 構成キーの下にあるアプリ ホストの構成 ("ユーザー シークレット" など) から接続情報を読み取ります。 WithReference メソッドは、その接続情報を、ExampleProject プロジェクトの openAiConnectionName という名前の接続文字列に渡します。 ExampleProject の Program.cs ファイルでは、次を使用して接続を使用できます。

builder.AddAzureAIOpenAI("openAiConnectionName");

設定

.NET Aspire Azure OpenAI 統合には、プロジェクトの要件と規則に基づいて接続を構成するための複数のオプションが用意されています。

接続文字列を使用する

ConnectionStrings 構成セクションの接続文字列を使用する場合は、builder.AddAzureAIOpenAIを呼び出すときに接続文字列の名前を指定できます。

builder.AddAzureAIOpenAI("openAiConnectionName");

接続文字列は ConnectionStrings 構成セクションから取得され、既定の Azure 資格情報と組み合わせて使用されるアカウント エンドポイントか、アカウント キーを持つ接続文字列の 2 つの形式がサポートされています。

アカウント エンドポイント

推奨される方法は、エンドポイントを使用することです。これは、AzureOpenAISettings.Credential プロパティと連携して接続を確立します。 資格情報が構成されていない場合は、DefaultAzureCredential が使用されます。

{
  "ConnectionStrings": {
    "openAiConnectionName": "https://{account_name}.openai.azure.com/"
  }
}

詳細については、「キーをせずに AzureOpenAI を使用する」を参照してください。

接続文字列

または、カスタム接続文字列を使用することもできます。

{
  "ConnectionStrings": {
    "openAiConnectionName": "Endpoint=https://{account_name}.openai.azure.com/;Key={account_key};"
  }
}

Azure OpenAI 以外のサービスに接続するには、Endpoint プロパティを削除し、key プロパティのみを設定して、API キー設定します。

構成プロバイダーを使用する

.NET Aspire Azure OpenAI 統合では、Microsoft.Extensions.Configurationがサポートされています。 Aspire:Azure:AI:OpenAI キーを使用して、構成から AzureOpenAISettings を読み込みます。 いくつかのオプションを構成する appsettings.json の例:

{
  "Aspire": {
    "Azure": {
      "AI": {
        "OpenAI": {
          "DisableTracing": false,
        }
      }
    }
  }
}

インライン デリゲートを使用する

また、Action<AzureOpenAISettings> configureSettings デリゲートを渡して、コードからのトレースを無効にするなど、一部またはすべてのオプションをインラインで設定することもできます。

builder.AddAzureAIOpenAI(
    "openAiConnectionName",
    static settings => settings.DisableTracing = true);

また、AddAzureAIOpenAI メソッドの省略可能な Action<IAzureClientBuilder<OpenAIClient, OpenAIClientOptions>> configureClientBuilder パラメーターを使用して、OpenAIClientOptions を設定することもできます。 たとえば、この clientの client ID を設定するには、

builder.AddAzureAIOpenAI(
    "openAiConnectionName",
    configureClientBuilder: builder => builder.ConfigureOptions(
        options => options.Diagnostics.ApplicationId = "CLIENT_ID"));

可観測性とテレメトリ

統合により、ログ記録、トレース、メトリックの構成が自動的に設定されます。これは、監視の柱 とも呼ばれます。 統合の可観測性とテレメトリの詳細については、統合の概要 参照してください。 バッキング サービスによっては、一部の統合でこれらの機能の一部のみがサポートされる場合があります。 たとえば、一部の統合ではログ記録とトレースがサポートされますが、メトリックはサポートされません。 テレメトリ機能は、「構成」セクションに記載されている手法を使用して無効にすることもできます。

伐採

.NET Aspire Azure OpenAI 統合では、次のログ カテゴリが使用されます。

  • Azure
  • Azure.Core
  • Azure.Identity

参照