Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten skapar du en MSTest-app för att utvärdera kvaliteten på ett chattsvar från en OpenAI-modell. Testappen använder Microsoft. Extensions.AI.Evaluation bibliotek.
Anmärkning
Den här snabbstarten visar den enklaste användningen av utvärderings-API:et. I synnerhet visar det inte användningen av funktionen för cachelagring och rapportering av svar, vilket är viktigt om du redigerar enhetstester som körs som en del av en "offline"-utvärderingspipeline. Scenariot som visas i den här snabbstarten är lämpligt i användningsfall som "online"-utvärdering av AI-svar i produktionskod och loggningspoäng till telemetri, där cachelagring och rapportering inte är relevanta. En självstudiekurs som visar funktionerna för cachelagring och rapportering finns i Självstudie: Utvärdera en modells svar med cachelagring och rapportering av svar
Förutsättningar
- .NET 8 eller senare
- Visual Studio Code (valfritt)
Konfigurera AI-tjänsten
Om du vill etablera en Azure OpenAI service och modell med hjälp av Azure portalen slutför du stegen i artikeln Skapa och distribuera en Azure OpenAI Service resurs. I steget "Distribuera en modell" väljer du gpt-5 modellen.
Skapa testappen
Slutför följande steg för att skapa ett MSTest-projekt som ansluter till en AI-modell.
I ett terminalfönster navigerar du till katalogen där du vill skapa din app och skapar en ny MSTest-app med
dotnet newkommandot :dotnet new mstest -o TestAIGå till katalogen
TestAIoch lägg till nödvändiga paket i din app: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.UserSecretsKör följande kommandon för att lägga till apphemligheter för din Azure OpenAI-slutpunkt och klient-ID:
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>(Beroende på din miljö kanske du inte behöver klientorganisations-ID:t. I så fall tar du bort den från koden som instansierar DefaultAzureCredential.)
Öppna den nya appen i valfri redigerare.
Lägg till testappkoden
Byt namn på filen Test1.cs till MyTests.cs och öppna sedan filen och byt namn på klassen till
MyTests.Lägg till de privata ChatConfiguration- och chattmeddelandena samt svarens medlemmar i
MyTests-klassen. Fältets_messagesär en lista som innehåller två ChatMessage objekt – den ena instruerar chattrobotens beteende och den andra är frågan från användaren.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();InitializeAsyncLägg till metoden iMyTestsklassen.[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); }Den här metoden utför följande uppgifter:
- Konfigurerar ChatConfiguration.
- Anger ChatOptions, inklusive Temperature och ResponseFormat.
- Hämtar svaret som ska utvärderas genom att anropa GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)och lagrar det i en statisk variabel.
Lägg till metoden
GetAzureOpenAIChatConfiguration, som skapar den IChatClient som utvärderaren använder för att kommunicera med modellen.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); }Lägg till en testmetod för att utvärdera modellens svar.
[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()); }Den här metoden gör följande:
- Anropar CoherenceEvaluator för att bedöma sammanhanget i svaret. Metoden EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) returnerar en EvaluationResult som innehåller en NumericMetric. En
NumericMetricinnehåller ett numeriskt värde som vanligtvis representerar numeriska poäng som ligger inom ett väldefinierat intervall. - Hämtar koherenspoängen från EvaluationResult.
- Validerar standardtolkningen för det returnerade konsekvensmåttet. Utvärderare kan inkludera en standardtolkning för de mått de returnerar. Du kan också ändra standardtolkningen så att den passar dina specifika krav om det behövs.
- Verifierar att det inte finns någon diagnostik för det returnerade konsekvensmåttet. Utvärderare kan inkludera diagnostik för de mått som returneras för att indikera fel, varningar eller andra exceptionella villkor som påträffades under utvärderingen.
- Anropar CoherenceEvaluator för att bedöma sammanhanget i svaret. Metoden EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) returnerar en EvaluationResult som innehåller en NumericMetric. En
Kör testet/utvärderingen
Kör testet med ditt önskade testarbetsflöde, till exempel med hjälp av CLI-kommandot dotnet test eller via Test Explorer.
Rensa resurser
Om du inte längre behöver dem tar du bort Azure OpenAI-resursen och GPT-4-modelldistributionen.
- I Azure-portalen går du till Azure OpenAI-resursen.
- Välj Azure OpenAI-resursen och välj sedan Delete.
Nästa steg
- Utvärdera svaren från olika OpenAI-modeller.
- Lägg till cachelagring av svar och rapportering i utvärderingskoden. Mer information finns i Självstudie: Utvärdera en modells svar med cachelagring av svar och rapportering.