Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este inicio rápido, creará una aplicación MSTest para evaluar la calidad de una respuesta de chat desde un modelo de OpenAI. La aplicación de prueba usa las bibliotecas Microsoft.Extensions.AI.Evaluation.
Nota:
En este inicio rápido se muestra el uso más sencillo de la API de evaluación. Notablemente, no muestra el uso de la funcionalidad de almacenamiento en caché de respuestas e informes, las cuales son importantes si estás creando pruebas unitarias que se ejecutan como parte de una canalización de evaluación en modo "sin conexión". El escenario que se muestra en esta guía rápida es adecuado en casos de uso, como la evaluación en-línea de las respuestas de IA dentro del código de producción y el registro de puntuaciones en telemetría, donde el almacenamiento en caché y los informes no son relevantes. Para ver un tutorial que muestre la funcionalidad de almacenamiento en caché e informes, consulte Tutorial: Evaluación de la respuesta de un modelo con almacenamiento en caché de respuestas e informes.
Prerrequisitos
- .NET 8 o una versión posterior
- Visual Studio Code (opcional)
Configuración del servicio de IA
Para aprovisionar un Azure OpenAI service y un modelo mediante el portal de Azure, complete los pasos descritos en el artículo Crear e implementar un recurso de Azure OpenAI Service. En el paso "Implementar un modelo", seleccione el modelo gpt-5.
Creación de la aplicación de prueba
Complete los pasos siguientes para crear un proyecto de MSTest que se conecte a un modelo de IA.
En una ventana de terminal, vaya al directorio donde desea crear la aplicación y cree una aplicación MSTest con el
dotnet newcomando :dotnet new mstest -o TestAIVaya al directorio
TestAIy agregue los paquetes necesarios a la aplicación: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.UserSecretsEjecute los siguientes comandos para añadir secretos de aplicación para el punto de conexión de Azure OpenAI y el identificador de inquilino:
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>(Según el entorno, es posible que no necesite el identificador de arrendatario. En ese caso, elimínelo del código que instancia el DefaultAzureCredential.)
Abra la nueva aplicación en el editor que prefiera.
Adición del código de la aplicación de prueba
Cambie el nombre del archivo Test1.cs a MyTests.cs y, a continuación, abra el archivo y cambie el nombre de la clase a
MyTests.Agregue el ChatConfiguration privado y los miembros de mensaje de chat y respuesta a la clase
MyTests. Els_messagescampo es una lista que contiene dos ChatMessage objetos: uno indica el comportamiento del bot de chat y el otro es la pregunta del usuario.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();Agregue el
InitializeAsyncmétodo a laMyTestsclase .[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); }Este método realiza las siguientes tareas:
- Configura el ChatConfiguration.
- Establece el ChatOptions, incluyendo el Temperature y el ResponseFormat.
- Captura la respuesta que se va a evaluar llamando GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)a y la almacena en una variable estática.
Agregue el
GetAzureOpenAIChatConfigurationmétodo , que crea el IChatClient que usa el evaluador para comunicarse con el modelo.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); }Agregue un método de prueba para evaluar la respuesta del modelo.
[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()); }Este método hace lo siguiente:
- Invoca el CoherenceEvaluator para evaluar la coherencia de la respuesta. El EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) método devuelve un EvaluationResult que contiene un NumericMetric. Un
NumericMetriccontiene un valor numérico que generalmente refleja puntuaciones numéricas que se encuentran dentro de un intervalo bien definido. - Recupera la puntuación de coherencia de EvaluationResult.
- Valida la interpretación predeterminada de la métrica de coherencia devuelta. Los evaluadores pueden incluir una interpretación predeterminada de las métricas que devuelven. También puede cambiar la interpretación predeterminada para adaptarse a sus requisitos específicos, si es necesario.
- Valida que ningún diagnóstico está presente en la métrica de coherencia devuelta. Los evaluadores pueden incluir diagnósticos en las métricas que devuelven para indicar errores, advertencias u otras condiciones excepcionales encontradas durante la evaluación.
- Invoca el CoherenceEvaluator para evaluar la coherencia de la respuesta. El EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) método devuelve un EvaluationResult que contiene un NumericMetric. Un
Ejecución de la prueba o evaluación
Ejecute la prueba mediante el flujo de trabajo de prueba preferido, por ejemplo, mediante el comando dotnet test de la CLI o mediante el Explorador de pruebas.
Limpieza de recursos
Si ya no los necesita, elimine el recurso de OpenAI Azure y la implementación del modelo GPT-4.
- En el portal Azure, vaya al recurso Azure OpenAI.
- Seleccione el recurso Azure OpenAI y, a continuación, seleccione Delete.
Pasos siguientes
- Evalúe las respuestas de diferentes modelos de OpenAI.
- Agregue el almacenamiento en caché de respuestas y los informes al código de evaluación. Para obtener más información, consulte Tutorial: Evaluación de la respuesta de un modelo con almacenamiento en caché de respuesta e informes.