Schnellstart: Bewertung der Antwortqualität

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

Konfigurieren des KI-Diensts

Um ein Azure OpenAI service und Modell mithilfe des Azure Portals bereitzustellen, führen Sie die Schritte im Artikel Create and deploy an Azure OpenAI Service resource 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.

  1. 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 new Befehl:

    dotnet new mstest -o TestAI
    
  2. 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
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  3. Führen Sie die folgenden Befehle aus, um app secrets für Ihren Azure OpenAI-Endpunkt 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_TENANT_ID <your-tenant-ID>
    

    (Je nach Ihrer Umgebung benötigen Sie möglicherweise keine Mandanten-ID. Falls das der Fall ist, entfernen Sie sie dann aus dem Code, der die DefaultAzureCredential instanziiert.)

  4. Öffnen Sie die neue App in Ihrem Editor der Wahl.

Hinzufügen des Test-App-Codes

  1. Benennen Sie die Datei Test1.cs in MyTests.cs um, öffnen Sie die Datei und benennen Sie die Klasse in MyTests um.

  2. Fügen Sie der MyTests-Klasse die private ChatConfiguration, Chat-Nachrichten und Antworten der Teilnehmer hinzu. Das s_messages Feld 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();
    
  3. Fügen Sie die InitializeAsync Methode der MyTests Klasse 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:

  4. Fügen Sie die GetAzureOpenAIChatConfiguration Methode 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);
    }
    
  5. 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 NumericMetric enthält einen numerischen Wert, der in der Regel numerische Werte darstellt, die innerhalb eines definierten Bereichs liegen.
    • 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.

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.

  1. Navigieren Sie im Azure Portal zur Azure OpenAI-Ressource.
  2. Wählen Sie die Azure OpenAI-Ressource und dann Delete aus.

Nächste Schritte