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 Test-App 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 dieser Schnellstartanleitung gezeigte Szenario eignet sich in Anwendungsfällen wie der "Online"-Evaluierung von KI-Antworten innerhalb von Produktionscode und dem Protokollieren von Scores an die Telemetrie, bei denen das Zwischenspeichern und Berichte 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-5 Modell aus.
Erstellen der Test-App
Führen Sie die folgenden Schritte aus, um ein MSTest-Projekt zu erstellen, das eine Verbindung mit einem 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
dotnet newBefehl:dotnet new mstest -o TestAINavigieren 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.UserSecretsFühren Sie die folgenden Befehle aus, um App-Geheimnisse für Ihren Azure OpenAI-Endpunkt und Ihre Mandanten-ID hinzuzufügen:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_TENANT_ID <your-tenant-ID>(Abhängig von Ihrer Umgebung könnte die Mandanten-ID möglicherweise nicht erforderlich sein. In diesem Fall ist sie aus dem Code, der das DefaultAzureCredential instanziiert, zu entfernen.)
Ö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 die Datei und benennen Sie die Klasse in
MyTestsum.Fügen Sie die private ChatConfiguration sowie die Chatnachricht und die Antwortmitglieder zur Klasse
MyTestshinzu. Dass_messagesFeld ist eine Liste, die zwei ChatMessage Objekte enthält– eine 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 die
InitializeAsyncMethode derMyTestsKlasse 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 führt die folgenden Aufgaben aus:
- Richtet das ChatConfiguration.
- Legt die ChatOptions fest, einschließlich der Temperature und der ResponseFormat.
- Ruft die Antwort ab, die durch Aufrufen GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)ausgewertet werden soll, und speichert sie in einer statischen Variablen.
Fügen Sie die
GetAzureOpenAIChatConfigurationMethode hinzu, die die IChatClient erstellt, mit der der Evaluator mit dem Modell kommuniziert.private static ChatConfiguration GetAzureOpenAIChatConfiguration() { IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<MyTests>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string tenantId = config["AZURE_TENANT_ID"]; string model = "gpt-5"; // 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:
- Aktiviert CoherenceEvaluator, um die Kohärenz der Antwort zu bewerten. Die EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) Methode gibt ein EvaluationResult zurück, das ein NumericMetric enthält. A
NumericMetricenthä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 der EvaluationResult.
- Ü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.
- Aktiviert CoherenceEvaluator, um die Kohärenz der Antwort zu bewerten. Die EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) Methode gibt ein EvaluationResult zurück, das ein NumericMetric enthält. A
Ausführen des Tests/der Auswertung
Führen Sie den Test mithilfe Ihres bevorzugten Testworkflows 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-Portal zur 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 Zwischenspeicherung von Antworten und Berichterstellung hinzu. Weitere Informationen finden Sie im Tutorial: Auswertung der Modellantwort mit Zwischenspeicherung und Berichterstattung.