.NET Aspire Azure OpenAI 集成
本文介绍如何使用 .NET AspireAzureOpenAIclient。
Aspire.Azure.AI.OpenAI
库用于在依赖项注入(DI)容器中注册 OpenAIClient
,以使用 AzureOpenAI 或 OpenAI 功能。 它启用相应的日志记录和遥测。
有关使用 OpenAIClient
的详细信息,请参阅 快速入门:开始使用 AzureOpenAI 服务生成文本。
入门
- Azure 订阅:免费创建一个订阅。
- Azure OpenAI 或 OpenAI 帐户:创建 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