.NET Aspire Azure OpenAI integráció (előzetes verzió)
Tartalmazza: Üzemeltetési integráció és
Client integráció
Azure OpenAI Service hozzáférést biztosít OpenAIhatékony nyelvi és beágyazási modelljeihez, Azurebiztonságának és vállalati ígéretének köszönhetően. A .NET AspireAzureOpenAI integráció lehetővé teszi AzureOpenAI szolgáltatáshoz vagy OpenAIAPI-hoz való csatlakozást .NET-alkalmazásokból.
Üzemeltetési integráció
Az .NET.NET AspireAzure OpenAI integrációs modellek AzureOpenAI erőforrásokat üzemeltetnek, mint AzureOpenAIResource. Ha ezeket a típusokat és API-kat az alkalmazásgazda projektben szeretné használni, telepítse a 📦Aspire.Hosting.Azure.CognitiveServices NuGet-csomagot:
dotnet add package Aspire.Hosting.Azure.CognitiveServices
További információért lásd: dotnet add package vagy Csomagfüggőségek kezelése .NET alkalmazásokban.
Azure OpenAI-erőforrás hozzáadása
Ha AzureOpenAIResource szeretne hozzáadni az alkalmazásgazdaprojekthez, hívja meg a AddAzureOpenAI metódust:
var builder = DistributedApplication.CreateBuilder(args);
var openai = builder.AddAzureOpenAI("openai");
builder.AddProject<Projects.ExampleProject>()
.WithReference(openai);
// After adding all resources, run the app...
Az előző kód hozzáad egy openai
nevű AzureOpenAI erőforrást az alkalmazásgazdaprojekthez. A WithReference metódus átadja a kapcsolati adatokat a ExampleProject
projektnek.
Fontos
A AddAzureOpenAIhívásakor implicit módon meghívja a AddAzureProvisioning(IDistributedApplicationBuilder), amely támogatja a Azure-erőforrások dinamikus előállítását az alkalmazás indításakor. Az alkalmazásnak konfigurálnia kell a megfelelő előfizetést és helyet. További információkért lásd: Helyi kiépítés: Konfiguráció.
Azure OpenAI üzembehelyezési erőforrás hozzáadása
Azure OpenAI üzembehelyezési erőforrás hozzáadásához hívja meg a AddDeployment(IResourceBuilder<AzureOpenAIResource>, AzureOpenAIDeployment) metódust:
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...
Az előző kód:
- Hozzáad egy
openai
nevű AzureOpenAI erőforrást. - Hozzáad egy
preview
nevű AzureOpenAI üzembehelyezési erőforrástgpt-4.5-preview
modellnévvel. A modell nevének meg kell felelnie az AzureOpenAI szolgáltatásban elérhető modell.
Generált erőforrás-előkészítés Bicep
Ha új vagy a Bicep-ben, az egy domain-specifikus nyelv az Azure erőforrások definiálására. A .NET.NET Aspirehasználatával nem kell kézzel megírnia a Bicepet, mert a kiépítési API-k generálják azt ön helyett. Az alkalmazás közzétételekor a létrehozott Bicep kiépít egy AzureOpenAI erőforrást a szokásos alapértelmezett értékekkel.
@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}'
Az előző Bicep egy olyan modul, amely egy Azure Cognitive Services-erőforrást helyez üzembe az alábbi alapértelmezett értékekkel:
-
location
: Az erőforráscsoport helye. -
principalType
: A Cognitive Services-erőforrás fő típusa. -
principalId
: A Cognitive Services-erőforrás fő azonosítója. -
openai
: A Cognitive Services szolgáltatás fiókhoz tartozó erőforrás.-
kind
: Az erőforrás típusa, amely aOpenAI
értékre van állítva. -
properties
: Az erőforrás tulajdonságai.-
customSubDomainName
: Az erőforrás egyéni altartományának neve az erőforráscsoport-azonosító egyedi karaktersorozata alapján. -
publicNetworkAccess
: Beállítva:Enabled
. -
disableLocalAuth
: Beállítva:true
.
-
-
sku
: Az erőforrás termékváltozata beállítvaS0
.
-
-
openai_CognitiveServicesOpenAIContributor
: A Cognitive Services-erőforrás tulajdonosa a beépítettAzure Cognitive Services OpenAI Contributor
szerepkör alapján van meghatározva. További információ: Azure Cognitive Services OpenAI Közreműködői. -
preview
: A telepítési erőforrás apreview
neve alapján.-
properties
: Az üzembehelyezési erőforrás tulajdonságai.-
format
: Az üzembe helyezési erőforrás formátuma beállítvaOpenAI
. -
modelName
: Az üzembe helyezési erőforrás modellnevegpt-4.5-preview
-re van állítva. -
modelVersion
: Az üzembe helyezési erőforrás modellverziója (2025-02-27
-re van beállítva).
-
-
-
connectionString
: A Cognitive Services-erőforrás végpontját tartalmazó kapcsolati sztring.
A létrehozott Bicep kiindulási pont, és testre szabható az adott követelményeknek megfelelően.
Az ellátási infrastruktúra testreszabása
Minden .NET AspireAzure erőforrás a AzureProvisioningResource típusú alosztály. Ez lehetővé teszi a létrehozott Bicep testreszabását azáltal, hogy egy folyékony API-t biztosít a Azure erőforrások konfigurálásához – a ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>) API használatával:
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");
});
Az előző kód:
- A hívást az ConfigureInfrastructure API-hoz láncolja:
- A
infra
paraméter a AzureResourceInfrastructure típusú példány. - A kiosztható erőforrások a GetProvisionableResources() metódus meghívásával kérhetők le.
- Az egyetlen CognitiveServicesAccount erőforrást lekérik.
- A CognitiveServicesAccount.Sku tulajdonság egy új CognitiveServicesSku-példányhoz van hozzárendelve
E0
névvel és CognitiveServicesSkuTier.Enterprise réteggel. - A Cognitive Services-erőforráshoz egy
ExampleKey
kulcsú ésExample value
értékű címke kerül hozzáadásra.
- A
Csatlakozás meglévő AzureOpenAI szolgáltatáshoz
Előfordulhat, hogy rendelkezik egy meglévő AzureOpenAI szolgáltatással, amelyhez csatlakozni szeretne. A AzureOpenAIResource meglévő erőforrásként való használatát jelző megjegyzéseket fűzhet a híváslánchoz:
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...
A AzureOpenAI erőforrások meglévő erőforrásként való kezeléséről további információt a Meglévő Azure erőforrások használatacímű témakörben talál.
Másik lehetőségként ahelyett, hogy egy AzureOpenAI erőforrást jelölné, hozzáadhat egy kapcsolati karakterláncot az alkalmazás gazdagépébe. Ez egy gyengén típusos megközelítés, amely kizárólag egy string
értéken alapul. Ha meglévő AzureOpenAI szolgáltatáshoz szeretne kapcsolatot létesíteni, hívja meg a AddConnectionString metódust:
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...
Megjegyzés
A kapcsolati sztringek a kapcsolati információk széles skáláját jelölik, beleértve az adatbázis-kapcsolatokat, az üzenetközvetítőket, a végponti URI-kat és más szolgáltatásokat. A .NET.NET Aspire nevezéktanban a "kapcsolati sztring" kifejezés bármilyen kapcsolati információt jelöl.
A kapcsolati karakterlánc az alkalmazás hosztjának konfigurációjában van beállítva, általában a Felhasználói titkok alatt, a ConnectionStrings
szakaszban:
{
"ConnectionStrings": {
"openai": "https://{account_name}.openai.azure.com/"
}
}
További információért lásd a Meglévő Azure erőforrások kapcsolati sztringekkel való hozzáadását.
Client integráció
Az .NET AspireAzureOpenAI ügyfélintegráció első lépéseihez telepítse a 📦Aspire.Azure. AI.OpenAI NuGet-csomagot az ügyfélfogyasztó projektben, vagyis a AzureOpenAI ügyfelet használó alkalmazás projektjében.
dotnet add package Aspire.Azure.AI.OpenAI
Egy AzureOpenAI ügyfél hozzáadása
Az ügyfélfogyasztó projekt Program.cs fájljában a IHostApplicationBuilderAddAzureOpenAIClient(IHostApplicationBuilder, String, Action<AzureOpenAISettings>,
Action<IAzureClientBuilder<AzureOpenAIClient,AzureOpenAIClientOptions>>) metódusával regisztráljon egy OpenAIClient
függőséginjektáláshoz (DI). A AzureOpenAIClient
a OpenAIClient
alosztálya, amely lehetővé teszi, hogy bármelyik típust lekérje a DI-től. Ez biztosítja, hogy a kód ne függ Azure-specifikus funkcióktól, általános maradjon. A AddAzureOpenAIClient
metódushoz kapcsolatnévparaméter szükséges.
builder.AddAzureOpenAIClient(connectionName: "openai");
Tipp
A connectionName
paraméternek meg kell egyeznie a AzureOpenAI erőforrás alkalmazásgazdaprojektben való hozzáadásakor használt névvel. További információért lásd: AzureOpenAI erőforrás hozzáadása.
A OpenAIClient
hozzáadása után a függőség injektálásával lekérheti a klienspéldányt.
public class ExampleService(OpenAIClient client)
{
// Use client...
}
További információk:
-
Azure. AI.OpenAI dokumentáció példák a
OpenAIClient
használatára. - függőséginjektálás .NET a függőséginjektálás részleteiért.
- Rövid útmutató: A GPT-35-Turbo és a GPT-4 használatának első lépései a AzureOpenAI szolgáltatáskeretében.
Adja hozzá a AzureOpenAI ügyfelet regisztrált IChatClient
-vel
Ha a IChatClient felületet szeretné használni a OpenAI-ügyféllel, egyszerűen láncossa az alábbi API-k egyikét a AddAzureOpenAIClient
metódushoz:
-
AddChatClient(AspireOpenAIClientBuilder, String): Regisztrálja a singleton
IChatClient
-et a AspireOpenAIClientBuilderáltal biztosított szolgáltatások közé. -
AddKeyedChatClient(AspireOpenAIClientBuilder, String, String): Egy kulcsos singleton
IChatClient
regisztrálva van a AspireOpenAIClientBuilderáltal nyújtott szolgáltatások között.
Vegyük például a következő C# kódot, amely hozzáad egy IChatClient
-t a DI-tárolóhoz:
builder.AddAzureOpenAIClient(connectionName: "openai")
.AddChatClient("deploymentName");
Hasonlóképpen hozzáadhat egy IChatClient
kulcsot a következő C#-kóddal:
builder.AddAzureOpenAIClient(connectionName: "openai")
.AddKeyedChatClient("serviceKey", "deploymentName");
További információ a IChatClient
és a hozzá tartozó kódtárról: Mesterséges intelligencia .NET (előzetes verzió).
Azure OpenAI ügyfélbeállítások konfigurálása
A .NET AspireAzureOpenAI kódtár számos beállítást biztosít a AzureOpenAI-ügyfél konfigurálásához. A AddAzureOpenAIClient
metódus egy választható configureSettings
típusú paramétert tesz elérhetővé Action<AzureOpenAISettings>?
. A beállítások beágyazott konfigurálásához vegye figyelembe a következő példát:
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);
});
Az előző kód a AzureOpenAISettings.DisableTracing tulajdonságot true
értékre állítja, és a AzureOpenAISettings.Endpoint tulajdonságot a AzureOpenAI végpontra állítja.
Azure OpenAI ügyfélépítő beállításainak konfigurálása
Az ügyfél AzureOpenAIClientOptions konfigurálásához használhatja a AddAzureOpenAIClient metódust. Ez a metódus Action<IAzureClientBuilder<OpenAIClient, AzureOpenAIClientOptions>>?
típusú opcionális configureClientBuilder
paramétert használ. Vegye figyelembe a következő példát:
builder.AddAzureOpenAIClient(
connectionName: "openai",
configureClientBuilder: clientBuilder =>
{
clientBuilder.ConfigureOptions(options =>
{
options.UserAgentApplicationId = "CLIENT_ID";
});
});
Az ügyfélszerkesztő a IAzureClientBuilder<TClient,TOptions> típusú példány, amely egy fluent API-t biztosít az ügyfélbeállítások konfigurálásához. Az előző kód a AzureOpenAIClientOptions.UserAgentApplicationId tulajdonságot CLIENT_ID
értékre állítja. További információ: ConfigureOptions(ChatClientBuilder, Action<ChatOptions>).
Azure OpenAI-ügyfél hozzáadása konfigurációból
A csomag emellett AddOpenAIClientFromConfiguration(IHostApplicationBuilder, String) bővítménymetódussal is rendelkezik egy OpenAIClient
vagy AzureOpenAIClient
-példány regisztrálásához a megadott kapcsolati sztring alapján. Ez a módszer a következő szabályokat követi:
- Ha a
Endpoint
attribútum üres vagy hiányzik, a megadott kulccsal regisztrál egyOpenAIClient
-példányt, példáulKey={key};
. - Ha a
IsAzure
attribútumtrue
, a rendszer regisztrál egyAzureOpenAIClient
; ellenkező esetben egyOpenAIClient
regisztrál, példáulEndpoint={azure_endpoint};Key={key};IsAzure=true
regisztrál egyAzureOpenAIClient
, mígEndpoint=https://localhost:18889;Key={key}
regisztrál egyOpenAIClient
. - Ha a
Endpoint
attribútum".azure."
tartalmaz, a rendszer regisztrál egyAzureOpenAIClient
; ellenkező esetben egyOpenAIClient
regisztrálva van, példáulEndpoint=https://{account}.azure.com;Key={key};
.
Vegye figyelembe a következő példát:
builder.AddOpenAIClientFromConfiguration("openai");
Tipp
Az érvényes kapcsolati sztringnek legalább egy Endpoint
vagy Key
kell tartalmaznia.
Vegye figyelembe a következő példa kapcsolati sztringeket, és hogy regisztrálnak-e OpenAIClient
vagy AzureOpenAIClient
:
Példa kapcsolati sztringre | Regisztrált ügyféltípus |
---|---|
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 |
Kulcsos AzureOpenAI-ügyfelek hozzáadása
Előfordulhatnak olyan helyzetek, amikor több OpenAIClient
instance-t szeretne regisztrálni különböző kapcsolatnevekkel. A kulcsos AzureOpenAI ügyfelek regisztrálásához hívja meg a AddKeyedAzureOpenAIClient metódust:
builder.AddKeyedAzureOpenAIClient(name: "chat");
builder.AddKeyedAzureOpenAIClient(name: "code");
Fontos
A kulcsos szolgáltatások használatakor győződjön meg arról, hogy a AzureOpenAI erőforrás két elnevezett kapcsolatot konfiguráljon: egyet a chat
-re és egyet a code
-re.
Ezután függőséginjektálással lekérheti az ügyfélpéldányokat. Például az ügyfelek előhívása egy szolgáltatásból:
public class ExampleService(
[KeyedService("chat")] OpenAIClient chatClient,
[KeyedService("code")] OpenAIClient codeClient)
{
// Use clients...
}
További részletekért lásd Kulcsos szolgáltatások a .NET.
Kulccsal ellátott AzureOpenAI ügyfelek hozzáadása a konfigurációból
A kulcsos AzureOpenAI-ügyfelekre ugyanazok a funkciók és szabályok vonatkoznak, mint a nem kulcsos ügyfelekre. A AddKeyedOpenAIClientFromConfiguration(IHostApplicationBuilder, String) bővítménymetódussal regisztrálhat egy OpenAIClient
vagy AzureOpenAIClient
példányt a megadott kapcsolati sztring alapján.
Vegye figyelembe a következő példát:
builder.AddKeyedOpenAIClientFromConfiguration("openai");
Ez a módszer ugyanazokat a szabályokat követi, mint a AzureOpenAI ügyfél hozzáadása akonfigurációból.
Konfiguráció
A .NET AspireAzureOpenAI kódtár több lehetőséget is kínál a AzureOpenAI kapcsolat konfigurálására a projekt követelményei és konvenciók alapján. Meg kell adni vagy egy Endpoint
-t, vagy egy ConnectionString
-et.
Kapcsolati karakterlánc használata
Ha kapcsolati sztringet használ a ConnectionStrings
konfigurációs szakaszból, megadhatja a kapcsolati sztring nevét builder.AddAzureOpenAIClient
hívásakor:
builder.AddAzureOpenAIClient("openai");
A kapcsolati sztring a ConnectionStrings
konfigurációs szakaszból lesz lekérve, és két támogatott formátum létezik:
Fiókvégpont
Az ajánlott módszer egy Végponthasználata, amely a AzureOpenAISettings.Credential
tulajdonsággal együttműködve hoz létre kapcsolatot. Ha nincs hitelesítő adat konfigurálva, a rendszer a DefaultAzureCredential használja.
{
"ConnectionStrings": {
"openai": "https://{account_name}.openai.azure.com/"
}
}
További információ: AzureOpenAI használata kulcsok nélkül.
Kapcsolati karakterlánc
Másik lehetőségként egy egyéni kapcsolati sztring is használható:
{
"ConnectionStrings": {
"openai": "Endpoint=https://{account_name}.openai.azure.com/;Key={account_key};"
}
}
A nemAzureOpenAI szolgáltatáshoz való csatlakozáshoz ejtse a Endpoint
tulajdonságot, és csak a Key tulajdonságot állítsa be a API-kulcsbeállításához.
Konfigurációs szolgáltatók használata
A .NET AspireAzureOpenAI integráció támogatja a Microsoft.Extensions.Configuration. A AzureOpenAISettings
kulccsal a Aspire:Azure:AI:OpenAI
-et tölti be a konfigurációból. Példa appsettings.json, amely konfigurál néhány beállítást:
{
"Aspire": {
"Azure": {
"AI": {
"OpenAI": {
"DisableTracing": false
}
}
}
}
}
A teljes AzureOpenAI ügyfél-integrációs JSON sémát lásd: Aspire.Azure. AI.OpenAI/ConfigurationSchema.json.
Beágyazott delegáltak használata
Átadhatja a Action<AzureOpenAISettings> configureSettings
delegáltat, hogy beállítson néhány vagy akár az összes opciót közvetlenül a kódban, például letilthatja a nyomkövetést a programkódból.
builder.AddAzureOpenAIClient(
"openai",
static settings => settings.DisableTracing = true);
Az OpenAIClientOptionst a AddAzureOpenAIClient
metódus opcionális Action<IAzureClientBuilder<OpenAIClient, OpenAIClientOptions>> configureClientBuilder
paraméterével is beállíthatja. Például az ügyfél ügyfélazonosítójának beállításához:
builder.AddAzureOpenAIClient(
"openai",
configureClientBuilder: builder => builder.ConfigureOptions(
options => options.Diagnostics.ApplicationId = "CLIENT_ID"));
Megfigyelhetőség és telemetria
.NET .NET Aspire integrációk automatikusan beállítják a naplózási, nyomkövetési és metrikakonfigurációkat, amelyeket más néven a megfigyelhetőség alappillérei. Az integráció megfigyelhetőségéről és telemetriáról további információt .NET.NET Aspire integrációk áttekintésében. A háttérszolgáltatástól függően egyes integrációk csak bizonyos funkciókat támogatnak. Egyes integrációk például támogatják a naplózást és a nyomkövetést, a metrikákat azonban nem. A telemetriai funkciók a Konfiguráció szakaszban ismertetett technikákkal is letilthatók.
Fakitermelés
Az .NET AspireAzureOpenAI integráció a következő naplókategóriákat használja:
Azure
Azure.Core
Azure.Identity
Nyomkövetés
Az .NET AspireAzureOpenAI integráció nyomkövetési tevékenységeket bocsát ki OpenTelemetry használatával a OpenAIClient
-el végrehajtott műveletekhez.
Fontos
A nyomkövetés jelenleg kísérleti jellegű ezzel az integrációval. A bejelentkezéshez állítsa a OPENAI_EXPERIMENTAL_ENABLE_OPEN_TELEMETRY
környezeti változót true
vagy 1
értékre, vagy hívja meg AppContext.SetSwitch("OpenAI.Experimental.EnableOpenTelemetry", true))
az alkalmazás indításakor.