Freigeben über


.NET Aspire Azure OpenAI Integration

In diesem Artikel erfahren Sie, wie Sie die .NET AspireAzureOpenAIclientverwenden. Die Aspire.Azure.AI.OpenAI-Bibliothek wird verwendet, um eine OpenAIClient-Komponente im Container zum Einfügen von Abhängigkeiten (Dependency Injection, DI) zu registrieren, um Azure-,OpenAI- oder OpenAI-Funktionen zu nutzen. Es ermöglicht die entsprechende Protokollierung und Telemetrie.

Weitere Informationen zur Verwendung der OpenAIClientfinden Sie unter Schnellstart: Erste Schritte mit AzureOpenAI Servicebei der Textgenerierung.

Loslegen

Um mit der .NET AspireAzureOpenAI-Integration zu beginnen, installieren Sie das NuGet-Paket 📦Aspire.Azure.AI.OpenAI im verbrauchenden Projekt client, das heißt, das Projekt der Anwendung, die die AzureOpenAIclientverwendet.

dotnet add package Aspire.Azure.AI.OpenAI

Weitere Informationen finden Sie in dotnet add package oder Verwalten von Paketabhängigkeiten in .NET Anwendungen.

Beispiel Verwendung

Rufen Sie in der Program.cs-Datei Ihres client-verbrauchenden Projekts die Erweiterungsmethode auf, um eine OpenAIClient für die Verwendung über den Container zum Einfügen von Abhängigkeiten zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.

builder.AddAzureOpenAIClient("openAiConnectionName");

Im vorherigen Code fügt die AddAzureOpenAIClient-Methode dem DI-Container eine OpenAIClient hinzu. Der Parameter openAiConnectionName ist der Name der Verbindungszeichenfolge in der Konfiguration. Anschließend können Sie die Instanz OpenAIClient mithilfe der Abhängigkeitsinjektion abrufen. Um beispielsweise die Verbindung von einem Beispieldienst abzurufen:

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

Nutzung des App-Hosts

Um Azure Hosting-Unterstützung zu Ihrem IDistributedApplicationBuilderhinzuzufügen, installieren Sie das 📦Aspire.Hosting.Azure.CognitiveServices NuGet-Paket im App-Host Projekt.

dotnet add package Aspire.Hosting.Azure.CognitiveServices

Registrieren Sie in Ihrem App-Hostprojekt eine AzureOpenAI Ressource mithilfe der folgenden Methoden, z. B. AddAzureOpenAI:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Die AddAzureAIOpenAI-Methode liest Verbindungsinformationen aus der Konfiguration des App-Hosts (z. B. aus "Benutzergeheimnissen") unter dem ConnectionStrings:openAiConnectionName-Konfigurationsschlüssel. Die WithReference-Methode übergibt diese Verbindungsinformationen an eine Connection-String mit dem Namen openAiConnectionName im ExampleProject-Projekt. In der Program.cs Datei von ExampleProject kann die Verbindung verwendet werden:

builder.AddAzureAIOpenAI("openAiConnectionName");

Konfiguration

Die .NET AspireAzureOpenAI Integration bietet mehrere Optionen zum Konfigurieren der Verbindung basierend auf den Anforderungen und Konventionen Ihres Projekts.

Verwenden Sie eine Verbindungszeichenfolge

Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings verwenden, können Sie beim Aufrufen von builder.AddAzureAIOpenAIden Namen der Verbindungszeichenfolge angeben:

builder.AddAzureAIOpenAI("openAiConnectionName");

Die Verbindungszeichenfolge wird aus dem Konfigurationsabschnitt ConnectionStrings abgerufen. Es gibt zwei unterstützte Formate: Entweder wird der Kontoendpunkt zusammen mit den Standardanmeldeinformationen Azure verwendet, oder es wird eine Verbindungszeichenfolge mit dem Kontoschlüssel eingesetzt.

Kontoendpunkt

Der empfohlene Ansatz besteht darin, einen Endpointzu verwenden, der mit der AzureOpenAISettings.Credential-Eigenschaft funktioniert, um eine Verbindung herzustellen. Wenn keine Anmeldeinformationen konfiguriert sind, wird die DefaultAzureCredential verwendet.

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

Weitere Informationen finden Sie unter Verwendung von AzureOpenAI ohne Tasten.

Verbindungszeichenfolge

Alternativ kann eine benutzerdefinierte Verbindungszeichenfolge verwendet werden.

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

Um eine Verbindung mit dem Nicht-Azure-OpenAI-Dienst herzustellen, lassen Sie die Eigenschaft Endpoint weg und setzen Sie nur die Schlüssel-Eigenschaft, um den -API-Schlüsselfestzulegen.

Verwenden von Konfigurationsanbietern

Die .NET AspireAzureOpenAI Integration unterstützt Microsoft.Extensions.Configuration. Es lädt die AzureOpenAISettings aus der Konfiguration mithilfe des Aspire:Azure:AI:OpenAI-Schlüssels. Beispiel appsettings.json, das einige der Optionen konfiguriert:

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

Verwenden Sie Inline-Delegaten

Sie können auch den Action<AzureOpenAISettings> configureSettings Delegat übergeben, um einige oder alle Optionen inline einzurichten, z. B. zum Deaktivieren der Ablaufverfolgung aus Code:

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

Sie können die OpenAIClientOptions auch mit dem optionalen Action<IAzureClientBuilder<OpenAIClient, OpenAIClientOptions>> configureClientBuilder-Parameter der AddAzureAIOpenAI-Methode einrichten. Um beispielsweise die client-ID für diese clientfestzulegen:

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

Observability und Telemetrie

.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Tracing- und Metrikkonfigurationen ein, die manchmal als die Säulen der Beobachtbarkeitbezeichnet werden. Weitere Informationen zur Integrationsüberwachung und Telemetrie finden Sie unter Übersicht über .NET.NET Aspire Integrationen. Abhängig vom unterstützenden Dienst unterstützen manche Integrationen möglicherweise nur bestimmte dieser Funktionen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetriefunktionen können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Configuration dargestellt werden.

Protokollierung

Die .NET AspireAzureOpenAI Integration verwendet die folgenden Protokollkategorien:

  • Azure
  • Azure.Core
  • Azure.Identity

Siehe auch