Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste início rápido, você cria um aplicativo MSTest para avaliar a qualidade de uma resposta de chat de um modelo OpenAI. O aplicativo de teste usa as bibliotecas Microsoft.Extensions.AI.Evaluation.
Observação
Este início rápido demonstra o uso mais simples da API de avaliação. De maneira notável, ele não demonstra o uso da funcionalidade de cache de resposta e relatório, às quais são importantes se você estiver criando testes de unidade que são executados como parte de um pipeline de avaliação "offline". O cenário mostrado neste início rápido é adequado em casos de uso, como a avaliação "online" de respostas de IA dentro do código de produção e o registro de pontuações para telemetria, em que o cache e os relatórios não são relevantes. Para obter um tutorial que demonstra a funcionalidade de cache e relatório, consulte Tutorial: Avaliar a resposta de um modelo com cache de resposta e relatórios
Pré-requisitos
- .NET 8 ou posterior
- Visual Studio Code (opcional)
Configurar o serviço de IA
Para provisionar um Azure OpenAI service e um modelo usando o portal Azure, conclua as etapas no artigo Criar e implantar um recurso Serviço OpenAI do Azure. Na etapa "Implantar um modelo", selecione o gpt-5 modelo.
Criar o aplicativo de teste
Conclua as etapas a seguir para criar um projeto MSTest que se conecte a um modelo de IA.
Em uma janela de terminal, navegue até o diretório onde você deseja criar seu aplicativo e crie um novo aplicativo MSTest com o
dotnet newcomando:dotnet new mstest -o TestAINavegue até o
TestAIdiretório e adicione os pacotes necessários ao seu aplicativo: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.UserSecretsExecute os seguintes comandos para adicionar segredos do aplicativo para o ponto de extremidade, nome do modelo e ID do locatário do OpenAI do 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>(Dependendo do seu ambiente, talvez você não precise da ID do locatário. Nesse caso, remova-o do código que cria uma instância do DefaultAzureCredential.)
Abra o novo aplicativo em seu editor de escolha.
Adicionar o código do aplicativo de teste
Renomeie o arquivo Test1.cs para MyTests.cs e, em seguida, abra o arquivo e renomeie a classe para
MyTests.Adicione o ChatConfiguration privado e os membros de mensagem e resposta de chat à classe
MyTests. Os_messagescampo é uma lista que contém dois ChatMessage objetos— um instrui o comportamento do chat bot e o outro é a pergunta do usuário.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();Adicione o
InitializeAsyncmétodo àMyTestsclasse.[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); }Esse método realiza as seguintes tarefas:
- Configura o ChatConfiguration.
- Define o ChatOptions, incluindo o Temperature e o ResponseFormat.
- Busca a resposta a ser avaliada chamando GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)e a armazena em uma variável estática.
Adicione o
GetAzureOpenAIChatConfigurationmétodo, que cria o IChatClient que o avaliador usa para se comunicar com o 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); }Adicione um método de teste para avaliar a resposta do 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()); }Esse método faz o seguinte:
- Invoca a CoherenceEvaluator para avaliar a coerência da resposta. O EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) método retorna um EvaluationResult que contém um NumericMetric. Um
NumericMetriccontém um valor numérico que normalmente representa pontuações numéricas que se enquadram em um intervalo bem definido. - Recupera a pontuação de coerência do EvaluationResult.
- Valida a interpretação padrão para a métrica de coerência retornada. Os avaliadores podem incluir uma interpretação padrão para as métricas que retornam. Você também pode alterar a interpretação padrão para atender aos seus requisitos específicos, se necessário.
- Valida que nenhum diagnóstico está presente na métrica de coerência retornada. Os avaliadores podem incluir diagnósticos nas métricas que retornam para indicar erros, avisos ou outras condições excepcionais encontradas durante a avaliação.
- Invoca a CoherenceEvaluator para avaliar a coerência da resposta. O EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) método retorna um EvaluationResult que contém um NumericMetric. Um
Executar o teste/avaliação
Execute o teste usando seu fluxo de trabalho de teste preferencial, por exemplo, usando o comando dotnet test da CLI ou por meio do Gerenciador de Testes.
Limpar os recursos
Se você não precisar mais deles, exclua o recurso Azure OpenAI e a implantação do modelo GPT-4.
- No portal do Azure, navegue até o recurso Azure OpenAI.
- Selecione o recurso Azure OpenAI e selecione Delete.
Próximas etapas
- Avalie as respostas de diferentes modelos openai.
- Adicione cache de resposta e relatório ao código de avaliação. Para obter mais informações, consulte Tutorial: Avaliar a resposta de um modelo com cache de resposta e relatórios.