integrace .NET AspireAzureOpenAI (Náhled)
zahrnuje: integraci hostování a
Client integraci
Azure OpenAI Service poskytuje přístup k výkonnému jazyku a vkládání modelů OpenAIs využitím zabezpečení a podnikového příslibu Azure. Integrace .NET AspireAzureOpenAI umožňuje připojení k rozhraní API služby AzureOpenAI nebo OpenAIz vašich aplikací .NET.
Integrace hostování
.NET .NET Aspire Azure OpenAI hostování modelů integrace AzureOpenAI prostředky jako AzureOpenAIResource. Pokud chcete získat přístup k těmto typům a rozhraním API k jejich použití v projektu hostování aplikace , nainstalujte balíček NuGet 📦Aspire.Hosting.Azure.CognitiveServices.
dotnet add package Aspire.Hosting.Azure.CognitiveServices
Další informace najdete v tématu dotnet add package nebo Manage package dependencies in .NET applications.
Přidejte prostředek AzureOpenAI
Pokud chcete do hostitelského projektu aplikace přidat AzureOpenAIResource, zavolejte metodu AddAzureOpenAI:
var builder = DistributedApplication.CreateBuilder(args);
var openai = builder.AddAzureOpenAI("openai");
builder.AddProject<Projects.ExampleProject>()
.WithReference(openai);
// After adding all resources, run the app...
Předchozí kód přidá do hostitelského projektu aplikace AzureOpenAI prostředek s názvem openai
. Metoda WithReference předá informace o připojení do projektu ExampleProject
.
Důležité
Když voláte AddAzureOpenAI, implicitně volá AddAzureProvisioning(IDistributedApplicationBuilder)– což umožňuje dynamické generování Azure prostředků během spouštění aplikace. Aplikace musí nakonfigurovat příslušné předplatné a umístění. Pro více informací si přečtěte Místní zřizování: Konfigurace.
Přidejte prostředek nasazení AzureOpenAI
Pokud chcete přidat prostředek nasazení AzureOpenAI, zavolejte metodu AddDeployment(IResourceBuilder<AzureOpenAIResource>, AzureOpenAIDeployment):
var builder = DistributedApplication.CreateBuilder(args);
var openai = builder.AddAzureOpenAI("openai");
openai.AddDeployment(
new AzureOpenAIDeployment(
name: "preview",
modelName: "gpt-4.5-preview",
modelVersion: "2025-02-27"));
builder.AddProject<Projects.ExampleProject>()
.WithReference(openai)
.WaitFor(openai);
// After adding all resources, run the app...
Předchozí kód:
- Přidá AzureOpenAI prostředek s názvem
openai
. - Přidá nasazovací prostředek AzureOpenAI s názvem
preview
a modelemgpt-4.5-preview
. Název modelu musí odpovídat modelu dostupnému ve službě AzureOpenAI.
Vygenerovaný provisioning skript Bicep
Pokud jste nováčkem v Bicep, jedná se o specifický jazyk pro danou oblast k definování Azure prostředků. S .NET.NET Aspire nemusíte psát Bicep ručně, protože provisioningové API ho generují za vás. Když publikujete aplikaci, vygenerovaný Bicep zřídí AzureOpenAI prostředek s výchozími standardními nastaveními.
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param principalType string
param principalId string
resource openai 'Microsoft.CognitiveServices/accounts@2024-10-01' = {
name: take('openai-${uniqueString(resourceGroup().id)}', 64)
location: location
kind: 'OpenAI'
properties: {
customSubDomainName: toLower(take(concat('openai', uniqueString(resourceGroup().id)), 24))
publicNetworkAccess: 'Enabled'
disableLocalAuth: true
}
sku: {
name: 'S0'
}
tags: {
'aspire-resource-name': 'openai'
}
}
resource openai_CognitiveServicesOpenAIContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(openai.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a001fd3d-188f-4b5d-821b-7da978bf7442'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a001fd3d-188f-4b5d-821b-7da978bf7442')
principalType: principalType
}
scope: openai
}
resource preview 'Microsoft.CognitiveServices/accounts/deployments@2024-10-01' = {
name: 'preview'
properties: {
model: {
format: 'OpenAI'
name: 'gpt-4.5-preview'
version: '2025-02-27'
}
}
sku: {
name: 'Standard'
capacity: 8
}
parent: openai
}
output connectionString string = 'Endpoint=${openai.properties.endpoint}'
Předchozí modul Bicep zřizuje prostředek Azure Cognitive Services s těmito výchozími nastaveními:
-
location
: Umístění skupiny prostředků. -
principalType
: Hlavní typ prostředku Cognitive Services. -
principalId
: Hlavní ID prostředku Cognitive Services. -
openai
: Prostředek účtu služeb Cognitive Services.-
kind
: Typ zdroje, nastaven naOpenAI
. -
properties
: Vlastnosti prostředku.-
customSubDomainName
: Název vlastní subdomény prostředku, vytvořený na základě jedinečného řetězce ID skupiny prostředků. -
publicNetworkAccess
: Nastaveno naEnabled
. -
disableLocalAuth
: Nastaveno natrue
.
-
-
sku
: Identifikátor SKU prostředku nastaven naS0
.
-
-
openai_CognitiveServicesOpenAIContributor
: Vlastník prostředku Cognitive Services podle vestavěné roleAzure Cognitive Services OpenAI Contributor
. Další informace najdete v tématu Azurepřispěvatelů služeb Cognitive Services OpenAI . -
preview
: Prostředek pro nasazení na základě názvupreview
.-
properties
: Vlastnosti prostředku nasazení.-
format
: Formát prostředku pro nasazení, nastavený naOpenAI
. -
modelName
: Název modelu prostředku nasazení, který je nastavený nagpt-4.5-preview
. -
modelVersion
: Verze modelu prostředku nasazení nastavená na2025-02-27
.
-
-
-
connectionString
: Připojovací řetězec, který obsahuje koncový bod prostředku služby Cognitive Services.
Vygenerovaný Bicep je výchozím bodem a můžete ho přizpůsobit tak, aby splňoval vaše konkrétní požadavky.
Přizpůsobení infrastruktury implementace
Všechny zdroje .NET AspireAzure jsou podtřídy typu AzureProvisioningResource. To umožňuje přizpůsobení vygenerovaného Bicep tím, že poskytuje plynulé API pro konfiguraci Azure prostředků pomocí ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>) API.
builder.AddAzureOpenAI("openai")
.ConfigureInfrastructure(infra =>
{
var resources = infra.GetProvisionableResources();
var account = resources.OfType<CognitiveServicesAccount>().Single();
account.Sku = new CognitiveServicesSku
{
Tier = CognitiveServicesSkuTier.Enterprise,
Name = "E0"
};
account.Tags.Add("ExampleKey", "Example value");
});
Předchozí kód:
- Zřetězení volání k rozhraní API ConfigureInfrastructure:
- Parametr
infra
je instance typu AzureResourceInfrastructure. - Přidělitelné prostředky jsou načteny voláním metody GetProvisionableResources().
- Jeden zdroj CognitiveServicesAccount se načte.
- Vlastnost CognitiveServicesAccount.Sku je přiřazena k nové instanci CognitiveServicesSku s názvem
E0
a vrstvou CognitiveServicesSkuTier.Enterprise. - Prostředek služby Cognitive Services je opatřen tagem (značkou) s klíčem
ExampleKey
a hodnotouExample value
.
- Parametr
Připojení k existující službě AzureOpenAI
Možná máte existující službu AzureOpenAI, ke které se chcete připojit. Můžete řetězit volání, abyste označili, že AzureOpenAIResource je existující prostředek:
var builder = DistributedApplication.CreateBuilder(args);
var existingOpenAIName = builder.AddParameter("existingOpenAIName");
var existingOpenAIResourceGroup = builder.AddParameter("existingOpenAIResourceGroup");
var openai = builder.AddAzureOpenAI("openai")
.AsExisting(existingOpenAIName, existingOpenAIResourceGroup);
builder.AddProject<Projects.ExampleProject>()
.WithReference(openai);
// After adding all resources, run the app...
Další informace o zacházení s prostředky AzureOpenAI jako s existujícími prostředky najdete v tématu Použití existujících prostředků Azure.
Alternativně místo toho, abyste představovali prostředek AzureOpenAI, můžete k hostiteli aplikace přidat připojovací řetězec. Což je slabě typovaný přístup, který je založený výhradně na hodnotě string
. Pokud chcete přidat připojení k existující službě AzureOpenAI, zavolejte metodu AddConnectionString:
var builder = DistributedApplication.CreateBuilder(args);
var openai = builder.ExecutionContext.IsPublishMode
? builder.AddAzureOpenAI("openai")
: builder.AddConnectionString("openai");
builder.AddProject<Projects.ExampleProject>()
.WithReference(openai);
// After adding all resources, run the app...
Poznámka:
Připojovací řetězce se používají k reprezentaci široké škály informací o připojení, včetně databázových připojení, zprostředkovatelů zpráv, identifikátorů URI koncových bodů a dalších služeb. V .NET.NET Aspire terminologii se výraz "připojovací řetězec" používá k reprezentaci jakéhokoli druhu informací o připojení.
Připojovací řetězec se konfiguruje v konfiguraci hostitele aplikace, obvykle v části Tajné kódy uživatelů v části ConnectionStrings
:
{
"ConnectionStrings": {
"openai": "https://{account_name}.openai.azure.com/"
}
}
Další informace najdete v tématu Přidání existujících prostředků Azure s připojovacími řetězci.
Client integrace
Pokud chcete začít s integrací klienta .NET AspireAzureOpenAI, nainstalujte balíček NuGet 📦Aspire.Azure.AI.OpenAI v klientsky spotřebovávaném projektu, to znamená v projektu aplikace, která používá klienta AzureOpenAI.
dotnet add package Aspire.Azure.AI.OpenAI
Přidejte klienta AzureOpenAI
V souboru Program.cs vašeho projektu, který využívá klienta, použijte metodu AddAzureOpenAIClient(IHostApplicationBuilder, String, Action<AzureOpenAISettings>,
Action<IAzureClientBuilder<AzureOpenAIClient,AzureOpenAIClientOptions>>) na libovolném IHostApplicationBuilder, abyste zaregistrovali OpenAIClient
pro injektování závislostí (DI).
AzureOpenAIClient
je podtřída OpenAIClient
, která umožňuje požadovat některý typ z DI. Tím se zajistí, že kód nezávislý na funkcích specifických pro Azurezůstane obecný. Metoda AddAzureOpenAIClient
vyžaduje parametr názvu připojení.
builder.AddAzureOpenAIClient(connectionName: "openai");
Doporučení
Parametr connectionName
se musí shodovat s názvem použitým při přidávání prostředku AzureOpenAI do hostitelského projektu aplikace. Další informace viz Přidání AzureOpenAI prostředku.
Po přidání OpenAIClient
můžete načíst instanci klienta pomocí injektáže závislostí:
public class ExampleService(OpenAIClient client)
{
// Use client...
}
Další informace najdete tady:
-
Azure. Umělá inteligence.OpenAI dokumentaci příklady použití
OpenAIClient
. - injektáž závislostí v .NET podrobnosti o injektáži závislostí.
- Úvodní průvodce : Začněte používat GPT-35-Turbo a GPT-4 s AzureOpenAI Service.
Přidejte klienta AzureOpenAI s registrovaným IChatClient
Pokud vás zajímá použití rozhraní IChatClient s klientem OpenAI, jednoduše zřetězte některé z následujících rozhraní API k metodě AddAzureOpenAIClient
:
-
AddChatClient(AspireOpenAIClientBuilder, String): Zaregistruje singleton
IChatClient
ve službách poskytovaných AspireOpenAIClientBuilder. -
AddKeyedChatClient(AspireOpenAIClientBuilder, String, String): Zaregistruje klíčovaný singleton
IChatClient
ve službách poskytovaných AspireOpenAIClientBuilder.
Představte si například následující kód jazyka C#, který do kontejneru DI přidá IChatClient
:
builder.AddAzureOpenAIClient(connectionName: "openai")
.AddChatClient("deploymentName");
Podobně můžete přiřadit klíč IChatClient
pomocí následujícího kódu v jazyce C#:
builder.AddAzureOpenAIClient(connectionName: "openai")
.AddKeyedChatClient("serviceKey", "deploymentName");
Další informace o IChatClient
a příslušné knihovně najdete v tématu umělé inteligence v .NET (Preview).
Konfigurace nastavení klienta AzureOpenAI
Knihovna .NET AspireAzureOpenAI poskytuje sadu nastavení pro konfiguraci klienta AzureOpenAI. Metoda AddAzureOpenAIClient
zveřejňuje volitelný parametr configureSettings
typu Action<AzureOpenAISettings>?
. Pokud chcete nakonfigurovat nastavení přímo, zvažte následující příklad:
builder.AddAzureOpenAIClient(
connectionName: "openai",
configureSettings: settings =>
{
settings.DisableTracing = true;
var uriString = builder.Configuration["AZURE_OPENAI_ENDPOINT"]
?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
settings.Endpoint = new Uri(uriString);
});
Předchozí kód nastaví vlastnost AzureOpenAISettings.DisableTracing na true
a nastaví AzureOpenAISettings.Endpoint vlastnost na koncový bod AzureOpenAI.
Konfigurujte možnosti klientského tvůrce AzureOpenAI
Ke konfiguraci AzureOpenAIClientOptions pro klienta můžete použít metodu AddAzureOpenAIClient. Tato metoda přebírá volitelný parametr configureClientBuilder
typu Action<IAzureClientBuilder<OpenAIClient, AzureOpenAIClientOptions>>?
. Podívejte se na následující příklad:
builder.AddAzureOpenAIClient(
connectionName: "openai",
configureClientBuilder: clientBuilder =>
{
clientBuilder.ConfigureOptions(options =>
{
options.UserAgentApplicationId = "CLIENT_ID";
});
});
Tvůrce klienta je instance typu IAzureClientBuilder<TClient,TOptions>, která poskytuje rozhraní API pro plynulou konfiguraci možností klienta. Předchozí kód nastaví vlastnost AzureOpenAIClientOptions.UserAgentApplicationId na CLIENT_ID
. Další informace najdete v tématu ConfigureOptions(ChatClientBuilder, Action<ChatOptions>).
Přidání klienta AzureOpenAI z konfigurace
Balíček navíc poskytuje metodu rozšíření AddOpenAIClientFromConfiguration(IHostApplicationBuilder, String) pro registraci OpenAIClient
nebo AzureOpenAIClient
instance na základě zadaného připojovacího řetězce. Tato metoda se řídí těmito pravidly:
- Pokud je atribut
Endpoint
prázdný nebo chybí, jeOpenAIClient
instance zaregistrována pomocí zadaného klíče, napříkladKey={key};
. - Je-li atribut
IsAzure
true
, je registrovánAzureOpenAIClient
; v opačném případě seOpenAIClient
zaregistruje, napříkladEndpoint={azure_endpoint};Key={key};IsAzure=true
zaregistrujeAzureOpenAIClient
, zatímcoEndpoint=https://localhost:18889;Key={key}
zaregistrujeOpenAIClient
. - Pokud atribut
Endpoint
obsahuje".azure."
, zaregistruje seAzureOpenAIClient
; v opačném případě jeOpenAIClient
registrován, napříkladEndpoint=https://{account}.azure.com;Key={key};
.
Podívejte se na následující příklad:
builder.AddOpenAIClientFromConfiguration("openai");
Doporučení
Platný připojovací řetězec musí obsahovat alespoň Endpoint
nebo Key
.
Podívejte se na následující příklad připojovacích řetězců a na to, jestli registrují OpenAIClient
nebo AzureOpenAIClient
:
Příklad připojovacího řetězce | Registrovaný typ klienta |
---|---|
Endpoint=https://{account_name}.openai.azure.com/;Key={account_key} |
AzureOpenAIClient |
Endpoint=https://{account_name}.openai.azure.com/;Key={account_key};IsAzure=false |
OpenAIClient |
Endpoint=https://{account_name}.openai.azure.com/;Key={account_key};IsAzure=true |
AzureOpenAIClient |
Endpoint=https://localhost:18889;Key={account_key} |
OpenAIClient |
Přidejte označené klienty AzureOpenAI
Mohou nastat situace, kdy chcete registrovat více instancí OpenAIClient
s různými jmény připojení. Pokud chcete zaregistrovat klíčované klienty AzureOpenAI, zavolejte metodu AddKeyedAzureOpenAIClient:
builder.AddKeyedAzureOpenAIClient(name: "chat");
builder.AddKeyedAzureOpenAIClient(name: "code");
Důležité
Pokud používáte služby s klíči, ujistěte se, že váš prostředek AzureOpenAI konfiguruje dvě pojmenovaná připojení, jedno pro chat
a jedno pro code
.
Potom můžete získat instance klienta pomocí dependency injection. Pokud chcete například získat klienty ze služby:
public class ExampleService(
[KeyedService("chat")] OpenAIClient chatClient,
[KeyedService("code")] OpenAIClient codeClient)
{
// Use clients...
}
Další informace naleznete v části Klíčové služby v .NET.
Přidejte klienty kódů AzureaOpenAI z konfigurace
Stejné funkce a pravidla existují pro klienty s klíči AzureOpenAI jako pro klienty bez klíče. Metodu rozšíření AddKeyedOpenAIClientFromConfiguration(IHostApplicationBuilder, String) můžete použít k registraci OpenAIClient
nebo AzureOpenAIClient
instance na základě zadaného připojovacího řetězce.
Podívejte se na následující příklad:
builder.AddKeyedOpenAIClientFromConfiguration("openai");
Tato metoda se řídí stejnými pravidly, jak je podrobně uvedeno v Přidat klienta AzureOpenAI z konfigurace.
Konfigurace
Knihovna .NET AspireAzureOpenAI nabízí několik možností konfigurace připojení AzureOpenAI na základě požadavků a konvencí projektu. Je nutné zadat Endpoint
nebo ConnectionString
.
Použijte připojovací řetězec
Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings
můžete při volání builder.AddAzureOpenAIClient
zadat název připojovacího řetězce:
builder.AddAzureOpenAIClient("openai");
Připojovací řetězec se načte z oddílu konfigurace ConnectionStrings
a existují dva podporované formáty:
Koncový bod účtu
Doporučeným přístupem je použití koncového bodu, který pracuje s vlastností AzureOpenAISettings.Credential
pro navázání připojení. Pokud nejsou nakonfigurované žádné přihlašovací údaje, použije se DefaultAzureCredential.
{
"ConnectionStrings": {
"openai": "https://{account_name}.openai.azure.com/"
}
}
Další informace najdete v tématu Použití AzureOpenAI bez klíčů.
Připojovací řetězec
Případně můžete použít vlastní připojovací řetězec:
{
"ConnectionStrings": {
"openai": "Endpoint=https://{account_name}.openai.azure.com/;Key={account_key};"
}
}
Pokud se chcete připojit ke službě, která neníAzureOpenAI, vypusťte vlastnost Endpoint
a nastavte pouze vlastnost Klíč tak, aby nastavil klíč rozhraní API.
Použití zprostředkovatelů konfigurace
Integrace .NET AspireAzureOpenAI podporuje Microsoft.Extensions.Configuration. Načte AzureOpenAISettings
z konfigurace pomocí klíče Aspire:Azure:AI:OpenAI
. Příklad appsettings.json, který konfiguruje některé z možností:
{
"Aspire": {
"Azure": {
"AI": {
"OpenAI": {
"DisableTracing": false
}
}
}
}
}
Kompletní schéma integrace klienta AzureOpenAIJSON naleznete v tématu Aspire.Azure. Umělá inteligence.OpenAI/ConfigurationSchema.json.
Použití vložených delegátů
Delegáta Action<AzureOpenAISettings> configureSettings
můžete předat k nastavení některých nebo všech možností přímo ve kódu, například pro zakázání trasování z kódu:
builder.AddAzureOpenAIClient(
"openai",
static settings => settings.DisableTracing = true);
OpenAIClientOptions můžete také nastavit pomocí volitelného parametru Action<IAzureClientBuilder<OpenAIClient, OpenAIClientOptions>> configureClientBuilder
metody AddAzureOpenAIClient
. Pokud chcete například nastavit ID klienta pro tohoto klienta:
builder.AddAzureOpenAIClient(
"openai",
configureClientBuilder: builder => builder.ConfigureOptions(
options => options.Diagnostics.ApplicationId = "CLIENT_ID"));
Pozorovatelnost a telemetrie
.NET .NET Aspire integrace automaticky nastaví konfigurace protokolování, trasování a metrik, které se někdy označují jako základy pozorovatelnosti. Další informace o pozorovatelnosti a telemetrii integrace najdete v přehledu integrace .NET.NET Aspire. V závislosti na zálohovací službě můžou některé integrace podporovat pouze některé z těchto funkcí. Například některé integrace podporují protokolování a trasování, ale ne metriky. Funkce telemetrie je také možné zakázat pomocí technik uvedených v části Konfigurace.
Protokolování
Integrace .NET AspireAzureOpenAI používá následující kategorie protokolů:
Azure
Azure.Core
Azure.Identity
Trasování
Integrace .NET AspireAzureOpenAI generuje aktivity trasování pomocí OpenTelemetry pro operace prováděné s OpenAIClient
.
Důležité
Trasování je v současné době experimentální u této integrace. Pokud se k němu chcete přihlásit, nastavte proměnnou prostředí OPENAI_EXPERIMENTAL_ENABLE_OPEN_TELEMETRY
na true
nebo 1
nebo volejte AppContext.SetSwitch("OpenAI.Experimental.EnableOpenTelemetry", true))
během spouštění aplikace.
Viz také
- Azure OpenAI
- Přehled integrace .NET.NET Aspire
- Přehled integrace .NET AspireAzure
- .NET Aspire GitHub úložiště