Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung erstellen Sie eine MSTest-App, um die Qualität einer Chatantwort aus einem OpenAI-Modell auszuwerten. Die Testanwendung verwendet die Microsoft.Extensions.AI.Evaluation-Bibliotheken.
Hinweis
In dieser Schnellstartanleitung wird die einfachste Verwendung der Auswertungs-API veranschaulicht. Insbesondere wird die Verwendung der Funktionen für das Zwischenspeichern von Antworten und die Berichterstellung nicht veranschaulicht, was wichtig ist, wenn Sie Komponententests erstellen, die als Teil einer "Offline-Auswertungspipeline" ausgeführt werden. Das in diesem Schnellstart gezeigte Szenario eignet sich für Anwendungsfälle wie die "Online"-Auswertung von KI-Antworten innerhalb von Produktionscode und das Protokollieren von Ergebnissen zu Telemetrie, wo Caching und Reporting nicht relevant sind. Ein Lernprogramm, das die Zwischenspeicherungs- und Berichterstellungsfunktionen veranschaulicht, finden Sie im Lernprogramm: Bewerten der Antwortantwort eines Modells mit Zwischenspeicherung und Berichterstellung
Voraussetzungen
- .NET 8 oder eine höhere Version
- Visual Studio Code (wahlweise)
Konfigurieren des KI-Diensts
Um eine Azure OpenAI Service-Instanz und ein Azure-Modell mithilfe des Azure-Portals bereitzustellen, führen Sie die Schritte im Artikel zum Erstellen und Bereitstellen einer Azure OpenAI Service-Ressource aus. Wählen Sie im Schritt "Modell bereitstellen" das gpt-4o
Modell aus.
Erstellen der Test-App
Führen Sie die folgenden Schritte aus, um ein MSTest-Projekt zu erstellen, das eine Verbindung mit dem gpt-4o
KI-Modell herstellt.
Navigieren Sie in einem Terminalfenster zu dem Verzeichnis, in dem Sie Ihre App erstellen möchten, und erstellen Sie eine neue MSTest-App mit dem Befehl
dotnet new
:dotnet new mstest -o TestAI
Navigieren Sie zum Verzeichnis
TestAI
, und fügen Sie Ihrer App die erforderlichen Pakete hinzu:dotnet add package Azure.AI.OpenAI dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AI.Abstractions dotnet add package Microsoft.Extensions.AI.Evaluation dotnet add package Microsoft.Extensions.AI.Evaluation.Quality dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Führen Sie die folgenden Befehle aus, um App-Geheimnisse für Ihren Azure OpenAI-Endpunkt, den Modellnamen und die Mandanten-ID hinzuzufügen:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME gpt-4o dotnet user-secrets set AZURE_TENANT_ID <your-tenant-ID>
(Je nach Ihrer Umgebung ist die Mandanten-ID möglicherweise nicht erforderlich. In diesem Fall sollten Sie sie aus dem Code entfernen, der die DefaultAzureCredential instanziiert.)
Öffnen Sie die neue App in Ihrem Editor der Wahl.
Hinzufügen des Test-App-Codes
Benennen Sie die Datei Test1.cs in MyTests.cs um. Öffnen Sie dann die Datei und benennen Sie die Klasse in
MyTests
um.Fügen Sie der ChatConfiguration-Klasse die private
MyTests
, Chat-Nachrichten und Antworten der Teilnehmer hinzu. Das felds_messages
ist eine Liste, die zwei ChatMessage-Objekte enthält– eines weist das Verhalten des Chat-Bots an, und die andere ist die Frage des Benutzers.private static ChatConfiguration? s_chatConfiguration; private static IList<ChatMessage> s_messages = [ new ChatMessage( ChatRole.System, """ You're an AI assistant that can answer questions related to astronomy. Keep your responses concise and try to stay under 100 words. Use the imperial measurement system for all measurements in your response. """), new ChatMessage( ChatRole.User, "How far is the planet Venus from Earth at its closest and furthest points?")]; private static ChatResponse s_response = new();
Fügen Sie der
InitializeAsync
-Klasse dieMyTests
Methode hinzu.[ClassInitialize] public static async Task InitializeAsync(TestContext _) { /// Set up the <see cref="ChatConfiguration"/>, /// which includes the <see cref="IChatClient"/> that the /// evaluator uses to communicate with the model. s_chatConfiguration = GetAzureOpenAIChatConfiguration(); var chatOptions = new ChatOptions { Temperature = 0.0f, ResponseFormat = ChatResponseFormat.Text }; // Fetch the response to be evaluated // and store it in a static variable. s_response = await s_chatConfiguration.ChatClient.GetResponseAsync(s_messages, chatOptions); }
Diese Methode erledigt die folgenden Aufgaben:
- Richtet die ChatConfiguration ein.
- Legt die ChatOptionsfest, einschließlich der Temperature und der ResponseFormat.
- Ruft die Antwort ab, die ausgewertet werden soll, indem GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)aufgerufen wird, und speichert sie in einer statischen Variablen.
Fügen Sie die
GetAzureOpenAIChatConfiguration
-Methode hinzu, mit der die IChatClient erstellt wird, die der Evaluator für die Kommunikation mit dem Modell verwendet.private static ChatConfiguration GetAzureOpenAIChatConfiguration() { IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<MyTests>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string model = config["AZURE_OPENAI_GPT_NAME"]; string tenantId = config["AZURE_TENANT_ID"]; // Get a chat client for the Azure OpenAI endpoint. AzureOpenAIClient azureClient = new( new Uri(endpoint), new DefaultAzureCredential(new DefaultAzureCredentialOptions() { TenantId = tenantId })); IChatClient client = azureClient.GetChatClient(deploymentName: model).AsIChatClient(); return new ChatConfiguration(client); }
Fügen Sie eine Testmethode hinzu, um die Antwort des Modells auszuwerten.
[TestMethod] public async Task TestCoherence() { IEvaluator coherenceEvaluator = new CoherenceEvaluator(); EvaluationResult result = await coherenceEvaluator.EvaluateAsync( s_messages, s_response, s_chatConfiguration); /// Retrieve the score for coherence from the <see cref="EvaluationResult"/>. NumericMetric coherence = result.Get<NumericMetric>(CoherenceEvaluator.CoherenceMetricName); // Validate the default interpretation // for the returned coherence metric. Assert.IsFalse(coherence.Interpretation!.Failed); Assert.IsTrue(coherence.Interpretation.Rating is EvaluationRating.Good or EvaluationRating.Exceptional); // Validate that no diagnostics are present // on the returned coherence metric. Assert.IsFalse(coherence.ContainsDiagnostics()); }
Diese Methode führt die folgenden Aktionen aus:
- Ruft den CoherenceEvaluator dazu auf, die Kohärenz der Antwort auszuwerten. Die EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken)-Methode gibt einen EvaluationResult zurück, der ein NumericMetricenthält. Ein
NumericMetric
enthält einen numerischen Wert, der in der Regel verwendet wird, um numerische Werte darzustellen, die in einen klar definierten Bereich fallen. - Ruft die Kohärenzbewertung aus dem EvaluationResult ab.
- Überprüft die Standardinterpretation für die zurückgegebene Kohärenzmetrik. Evaluatoren können eine Standardinterpretation für die zurückgegebenen Metriken enthalten. Bei Bedarf können Sie auch die Standardinterpretation entsprechend Ihren spezifischen Anforderungen ändern.
- Überprüft, ob keine Diagnose für die zurückgegebene Kohärenzmetrik vorhanden ist. Evaluatoren können Diagnosen für die Metriken enthalten, die sie zurückgeben, um Fehler, Warnungen oder andere außergewöhnliche Bedingungen anzugeben, die bei der Auswertung aufgetreten sind.
- Ruft den CoherenceEvaluator dazu auf, die Kohärenz der Antwort auszuwerten. Die EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken)-Methode gibt einen EvaluationResult zurück, der ein NumericMetricenthält. Ein
Ausführen des Tests/der Auswertung
Führen Sie den Test mit Ihrem bevorzugten Testworkflow aus, z. B. mithilfe des CLI-Befehls dotnet test
oder über Test Explorer.
Bereinigen von Ressourcen
Wenn Sie sie nicht mehr benötigen, löschen Sie die Azure OpenAI-Ressource und die GPT-4-Modellbereitstellung.
- Navigieren Sie im Azure Portalzur Azure OpenAI-Ressource.
- Wählen Sie die Azure OpenAI-Ressource aus und wählen Sie dann Löschen.
Nächste Schritte
- Bewerten Sie die Antworten aus verschiedenen OpenAI-Modellen.
- Fügen Sie Ihrem Auswertungscode Antwortzwischenspeicherung und Berichterstellung hinzu. Weitere Informationen finden Sie im Tutorial: Auswerten der Antwort eines Modells mithilfe von Zwischenspeicherung und Berichterstellung.