Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart maakt u een MSTest-app om de kwaliteit van een chatantwoord van een OpenAI-model te evalueren. De test-app maakt gebruik van de Microsoft. Extensions.AI.Evaluation bibliotheken.
Opmerking
In deze quickstart ziet u het eenvoudigste gebruik van de evaluatie-API. Met name wordt het gebruik van de functionaliteit voor het opslaan van antwoorden in cache en rapportage niet gedemonstreerde, wat belangrijk is als u eenheidstests maakt die worden uitgevoerd als onderdeel van een 'offline'-evaluatiepijplijn. Het scenario dat in deze quickstart wordt weergegeven, is geschikt voor gebruikssituaties zoals "online" evaluatie van AI-antwoorden binnen productiecode en het loggen van scores naar telemetrie, waarbij caching en rapportage niet relevant zijn. Voor een zelfstudie die de cache- en rapportagefunctionaliteit demonstreert, raadpleegt u Zelfstudie: Het antwoord van een model evalueren met reactiecaching en rapportage
Vereiste voorwaarden
- .NET 8 of hoger
- Visual Studio Code (optioneel)
De AI-service configureren
Als u een Azure OpenAI service en model wilt inrichten met behulp van de Azure-portal, voert u de stappen in het artikel Maken en implementeren van een Azure OpenAI Service-resource uit. Selecteer in de stap Een model implementeren het gpt-5 model.
De test-app maken
Voer de volgende stappen uit om een MSTest-project te maken dat verbinding maakt met een AI-model.
Navigeer in een terminalvenster naar de map waar u uw app wilt maken en maak een nieuwe MSTest-app met de
dotnet newopdracht:dotnet new mstest -o TestAIGa naar de map
TestAIen voeg de benodigde pakketten toe aan uw 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.UserSecretsVoer de volgende opdrachten uit om app secrets toe te voegen voor uw Azure OpenAI-eindpunt en tenant-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>(Afhankelijk van uw omgeving hebt u mogelijk niet de tenant-id nodig. Verwijder deze in dat geval uit de code waarmee de DefaultAzureCredential.) wordt geïnstitueert.
Open de nieuwe app in uw editor naar keuze.
De code van de test-app toevoegen
Wijzig de naam van het Test1.cs-bestand in MyTests.cs en open het bestand en wijzig de naam van de klasse in
MyTests.Voeg het privé ChatConfiguration - en chatbericht en antwoordleden toe aan de
MyTestsklas. Hets_messagesveld is een lijst die twee ChatMessage objecten bevat: de ene geeft het gedrag van de chatbot aan en de andere is de vraag van de gebruiker.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();Voeg de
InitializeAsyncmethode toe aan deMyTestsklasse.[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); }Met deze methode worden de volgende taken uitgevoerd:
- Stelt de ChatConfiguration in.
- Stelt de ChatOptions, inclusief de Temperature en de ResponseFormat.
- Haalt het antwoord op dat moet worden geëvalueerd door aan te roepen GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)en slaat het op in een statische variabele.
Voeg de
GetAzureOpenAIChatConfigurationmethode toe, waarmee de IChatClient wordt aangemaakt die de evaluator gebruikt om met het model te communiceren.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); }Voeg een testmethode toe om het antwoord van het model te evalueren.
[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()); }Deze methode doet het volgende:
- Roept de aan CoherenceEvaluator om de samenhang van het antwoord te evalueren. De methode EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) returneert een EvaluationResult die een NumericMetric bevat. A
NumericMetricbevat een numerieke waarde die doorgaans numerieke scores vertegenwoordigt die binnen een goed gedefinieerd bereik vallen. - Haalt de coherentiescore van de EvaluationResult.
- Valideert de standaardinterpretatie voor de geretourneerde coherentiemetrie. Evaluators kunnen een standaardinterpretatie bevatten voor de metrische gegevens die ze retourneren. U kunt desgewenst ook de standaardinterpretatie aanpassen aan uw specifieke vereisten.
- Valideert dat er geen diagnostische gegevens aanwezig zijn op de geretourneerde coherentiemetrie. Evaluators kunnen diagnostiek opnemen over de metriek die ze retourneren om fouten, waarschuwingen of andere uitzonderlijke condities aan te duiden die zich tijdens de evaluatie voordoen.
- Roept de aan CoherenceEvaluator om de samenhang van het antwoord te evalueren. De methode EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) returneert een EvaluationResult die een NumericMetric bevat. A
De test/evaluatie uitvoeren
Voer de test uit met behulp van uw favoriete testwerkstroom, bijvoorbeeld met behulp van de CLI-opdracht dotnet test of via Test Explorer.
De hulpbronnen opschonen
Als u deze niet meer nodig hebt, verwijdert u de Azure OpenAI-resource en GPT-4-modelimplementatie.
- Navigeer in de Azure-portal naar de Azure OpenAI-resource.
- Selecteer de Azure OpenAI-resource en selecteer vervolgens Delete.
Volgende stappen
- Evalueer de antwoorden van verschillende OpenAI-modellen.
- Voeg antwoordcaching en rapportage toe aan uw evaluatiecode. Zie Zelfstudie: Het antwoord van een model evalueren met reactiecaching en rapportage voor meer informatie.