Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste início rápido, você cria um aplicativo MSTest para avaliar a qualidade de uma resposta de bate-papo de um modelo OpenAI. O aplicativo de teste usa as bibliotecas Microsoft.Extensions.AI.Evaluation .
Observação
Este guia de início rápido demonstra o uso mais simples da API de avaliação. Notavelmente, não demonstra a utilização do cache de resposta nem da funcionalidade de relatórios, que são importantes se estiver a criar testes unitários que correm 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 registo de pontuações em telemetria, onde a cache e os relatórios não são relevantes. Para obter um tutorial que demonstra a funcionalidade de cache e relatórios, consulte Tutorial: Avaliar a resposta de um modelo com cache de resposta e relatórios
Pré-requisitos
- .NET 8 ou uma versão posterior
- Visual Studio Code (opcional)
Configurar o serviço de IA
Para provisionar um serviço e um modelo do Azure OpenAI usando o portal do Azure, conclua as etapas no artigo Criar e implantar um recurso do Serviço OpenAI do Azure. Na etapa "Implantar um modelo", selecione o modelo gpt-5.
Criar o aplicativo de teste
Complete os passos seguintes para criar um projeto MSTest que se ligue 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 diretório
TestAIe 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 --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsExecute os seguintes comandos para adicionar segredos de aplicação para o seu endpoint Azure OpenAI e o ID do 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>(Dependendo do seu ambiente, o ID do locatário pode não ser necessário. Nesse caso, remova-o do código que instancia o DefaultAzureCredential.)
Abra o novo aplicativo no editor de sua 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 os membros da mensagem privada ChatConfiguration e do bate-papo e da resposta à
MyTestsclasse. Os_messagescampo é uma lista que contém dois ChatMessage objetos: um instrui o comportamento do bot de bate-papo 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); }Este 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()); }Este método faz o seguinte:
- Invoca o 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. A
NumericMetriccontém um valor numérico que normalmente é usado para representar pontuações numéricas que estão dentro de 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 às suas necessidades específicas, 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 excecionais encontradas durante a avaliação.
- Invoca o 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. A
Executar o teste/avaliação
Execute o teste usando seu fluxo de trabalho de teste preferido, por exemplo, usando o comando dotnet test CLI ou através do Test Explorer.
Limpeza de recursos
Se você não precisar mais deles, exclua o recurso OpenAI do Azure e a implantação do modelo GPT-4.
- No portal Azure, navegue até ao recurso Azure OpenAI.
- Selecione o recurso Azure OpenAI e, em seguida, selecione Excluir.
Próximos passos
- Avalie as respostas de diferentes modelos OpenAI.
- Adicione cache de resposta e relatórios ao seu 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.