Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce guide de démarrage rapide, vous créez une application MSTest pour évaluer la qualité d’une réponse de conversation à partir d’un modèle OpenAI. L’application de test utilise les bibliothèques Microsoft.Extensions.AI.Evaluation.
Note
Ce guide de démarrage rapide illustre l’utilisation la plus simple de l’API d’évaluation. Notamment, il ne montre pas l’utilisation de la fonctionnalité de mise en cache et de création de rapports de réponse, ce qui est important si vous créez des tests unitaires qui s’exécutent dans le cadre d’un pipeline d’évaluation « hors connexion ». Le scénario présenté dans ce guide de démarrage rapide convient dans les cas d’usage tels que l’évaluation « en ligne » des réponses IA dans le code de production et la journalisation des scores de télémétrie, où la mise en cache et la création de rapports ne sont pas pertinentes. Pour obtenir un didacticiel qui illustre la fonctionnalité de mise en cache et de création de rapports, consultez Tutoriel : Évaluer la réponse d’un modèle avec la mise en cache et la création de rapports de réponse
Prerequisites
- .NET 8 ou version ultérieure
- Visual Studio Code (facultatif)
Configurer le service IA
Pour provisionner un Azure OpenAI service et un modèle à l’aide du portail Azure, suivez les étapes décrites dans l’article Créer et déployer une ressource Azure OpenAI Service. Dans l’étape « Déployer un modèle », sélectionnez le gpt-5 modèle.
Créer l’application de test
Effectuez les étapes suivantes pour créer un projet MSTest qui se connecte à un modèle IA.
Dans une fenêtre de terminal, accédez au répertoire dans lequel vous souhaitez créer votre application, puis créez une application MSTest avec la
dotnet newcommande :dotnet new mstest -o TestAIAccédez au répertoire
TestAIet ajoutez les packages nécessaires à votre application :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.UserSecretsExécutez les commandes suivantes pour ajouter app secrets pour votre point de terminaison OpenAI et votre identifiant de locataire Azure.
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>(Selon votre environnement, vous n’avez peut-être pas besoin de l’ID de locataire. Dans ce cas, supprimez-le du code qui instancie le DefaultAzureCredentialfichier .)
Ouvrez la nouvelle application dans votre éditeur de choix.
Ajouter le code de l’application de test
Renommez le fichier Test1.cs en MyTests.cs, puis ouvrez le fichier et renommez la classe
MyTestsen .Ajoutez les membres privés ChatConfiguration et les messages de chat ainsi que les réponses à la classe
MyTests. Les_messageschamp est une liste qui contient deux ChatMessage objets : l’un indique le comportement du bot de conversation, et l’autre est la question de l’utilisateur.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();Ajoutez la
InitializeAsyncméthode à laMyTestsclasse.[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); }Cette méthode effectue les tâches suivantes :
- Configure la ChatConfiguration.
- Définit le ChatOptions, y compris le Temperature et le ResponseFormat.
- Récupère la réponse à évaluer en appelant GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)et la stocke dans une variable statique.
Ajoutez la
GetAzureOpenAIChatConfigurationméthode, qui crée le IChatClient modèle que l’évaluateur utilise pour communiquer avec le modèle.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); }Ajoutez une méthode de test pour évaluer la réponse du modèle.
[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()); }Cette méthode effectue les opérations suivantes :
- Appelle la CoherenceEvaluator fonction pour évaluer la cohérence de la réponse. La EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) méthode retourne un EvaluationResult qui contient un NumericMetric. A
NumericMetriccontient une valeur numérique qui représente généralement des scores numériques qui se trouvent dans une plage bien définie. - Récupère le score de cohérence du EvaluationResult.
- Valide l’interprétation par défaut de la métrique de cohérence retournée. Les évaluateurs peuvent inclure une interprétation par défaut pour les métriques qu’ils retournent. Vous pouvez également modifier l’interprétation par défaut en fonction de vos besoins spécifiques, si nécessaire.
- Vérifie qu’aucun diagnostic n’est présent sur la métrique de cohérence retournée. Les évaluateurs peuvent inclure des diagnostics sur les métriques qu’ils retournent pour indiquer des erreurs, des avertissements ou d’autres conditions exceptionnelles rencontrées lors de l’évaluation.
- Appelle la CoherenceEvaluator fonction pour évaluer la cohérence de la réponse. La EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) méthode retourne un EvaluationResult qui contient un NumericMetric. A
Exécuter le test/évaluation
Exécutez le test à l’aide de votre workflow de test préféré, par exemple en utilisant la commande dotnet test CLI ou via l’Explorateur de tests.
Nettoyer les ressources
Si vous n’en avez plus besoin, supprimez la Azure ressource OpenAI et le déploiement de modèle GPT-4.
- Dans le portail Azure, accédez à la ressource OpenAI Azure.
- Sélectionnez la ressource Azure OpenAI, puis Delete.
Étapes suivantes
- Évaluez les réponses des différents modèles OpenAI.
- Ajoutez la mise en cache et la création de rapports de réponse à votre code d’évaluation. Pour plus d’informations, consultez Tutoriel : Évaluer la réponse d’un modèle avec la mise en cache et la création de rapports de réponse.