.NET Aspire Azure OpenAI 集成

本文介绍如何使用 .NET AspireAzureOpenAIclient。 Aspire.Azure.AI.OpenAI 库用于在依赖项注入(DI)容器中注册 OpenAIClient,以使用 AzureOpenAI 或 OpenAI 功能。 它启用相应的日志记录和遥测。

有关使用 OpenAIClient的详细信息,请参阅 快速入门:开始使用 AzureOpenAI 服务生成文本。

入门

若要开始 .NET AspireAzureOpenAI 集成,请在使用 AzureOpenAIclient的应用程序的项目,即 client项目中安装 📦Aspire、Azure、人工智能和OpenAI NuGet 包。

dotnet add package Aspire.Azure.AI.OpenAI

有关详细信息,请参阅 dotnet add package管理 .NET 应用中的包依赖项

示例用法

在 client使用项目的 Program.cs 文件中,调用扩展方法注册 OpenAIClient,以便通过依赖项注入容器使用。 该方法采用连接名称参数。

builder.AddAzureOpenAIClient("openAiConnectionName");

在前面的代码中,AddAzureOpenAIClient 方法将 OpenAIClient 添加到 DI 容器。 openAiConnectionName 参数是配置中的连接字符串的名称。 然后,可以使用依赖项注入检索 OpenAIClient 实例。 例如,若要从示例服务检索连接,

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

应用主机使用情况

若要将 Azure 主机支持添加到 IDistributedApplicationBuilder,请在 应用主机 项目中安装 📦Aspire.Hosting.Azure.CognitiveServices NuGet 包。

dotnet add package Aspire.Hosting.Azure.CognitiveServices

在应用主机项目中,使用以下方法注册 AzureOpenAI 资源,例如 AddAzureOpenAI

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 凭据一起使用的帐户终结点,或使用帐户密钥的连接字符串。

帐户终结点

建议的方法是使用 端点,该端点与 AzureOpenAISettings.Credential 属性一起使用来建立连接。 如果未配置凭据,则使用 DefaultAzureCredential

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

有关详细信息,请参阅 在无钥情况下使用 AzureOpenAI

连接字符串

或者,可以使用自定义连接字符串。

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

若要连接到非AzureOpenAI 服务,请删除 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 .NET Aspire 集成会自动设置日志记录、跟踪和指标配置,这些配置有时称为 可观测性的支柱。 有关集成可观测性和遥测的详细信息,请参阅 .NET.NET Aspire 集成概述。 根据支持服务,某些集成可能仅支持其中一些功能。 例如,某些集成支持日志记录和跟踪,但不支持指标。 也可以使用 配置 部分中介绍的技术禁用遥测功能。

伐木

.NET Aspire Azure OpenAI 集成使用以下日志类别:

  • Azure
  • Azure.Core
  • Azure.Identity

另请参阅