Integrações de IA

O pacote experimental Microsoft.Testing.Platform.AI define abstrações de IA neutras em relação ao fornecedor para frameworks de teste e extensões MTP. O pacote integra-se com Microsoft.Extensions.AI, pelo que uma extensão pode solicitar um IChatClient sem depender de um fornecedor de modelos específico.

Importante

As APIs de IA usam o TPEXP ID de diagnóstico e podem mudar numa versão futura. Os pacotes fornecem infraestrutura às extensões; eles não adicionam comportamentos de IA a um conjunto de testes sozinhos.

Use ferramentas de codificação por IA para fluxos de trabalho de teste

Os pacotes neste artigo permitem que extensões MTP chamem modelos de IA durante um teste. Para usar um assistente de programação de IA para criar, analisar ou migrar testes no seu repositório, utilize antes o .NET Agent Skills, selecionado.

Escolha um fluxo de trabalho baseado no seu objetivo:

Objetivo Competência ou agente
Criar ou estender testes Usa a code-testing-agent habilidade do dotnet-test plugin. A competência pesquisa a base de código, planeia o trabalho, implementa testes e verifica as alterações.
Executar ou resolver problemas nos testes Use a run-tests habilidade para executar testes ou diagnosticar a execução de testes sem alterar o código de teste.
Qualidade dos testes de auditoria Use o test-quality-auditor agente para uma avaliação ampla, ou recorra a uma competência focada do dotnet-test diretório de competências para afirmações, coberturas, lacunas em testes ou cheiros de teste.
Melhorar a testabilidade Use o testability-migration agente para encontrar dependências estáticas e introduzir abstrações testáveis.
Migrar um framework ou plataforma de teste Usa o test-migration agente do dotnet-test-migration plugin. O agente deteta a configuração atual e seleciona a competência de migração apropriada.

Para passos de instalação e agentes de codificação suportados, consulte o repositório .NET Agent Skills. Instale dotnet-test a par de dotnet-test-migration porque os fluxos de trabalho de migração reutilizam as suas capacidades de deteção da plataforma e de verificação de testes.

Escolha os pacotes

Adicione o pacote de abstrações quando criar uma extensão que consome um cliente de chat. Adicione um pacote de fornecedor à aplicação de teste que aloja a extensão:

dotnet add package Microsoft.Testing.Platform.AI
dotnet add package Microsoft.Testing.Extensions.AzureFoundry

Microsoft.Testing.Extensions.AzureFoundryé o fornecedor de referência fornecido pela Microsoft. Cria um cliente de chat Azure OpenAI através do Azure AI Foundry.

Configure Azure AI Foundry

Defina as seguintes variáveis de ambiente:

Variável Obrigatório Description
AZURE_OPENAI_ENDPOINT Yes O endpoint de recurso Azure OpenAI, como https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Yes O nome da implementação do modelo.
AZURE_OPENAI_API_KEY Conditional A chave API de recursos. Defina este valor, a menos que registe um TokenCredential no código.

Para manter as credenciais fora do controlo de código, forneça esses valores através do seu ambiente local ou de uma loja secreta protegida de CI.

Registar o fornecedor

Desative o ponto de entrada MTP gerado e registe o fornecedor no seu método personalizado Main. Para autenticação por chave API, chame:

#pragma warning disable TPEXP
builder.AddAzureOpenAIChatClientProvider();
#pragma warning restore TPEXP

Para Microsoft Entra ID ou identidade gerida, consulte o Azure.Identity pacote e passe uma credencial:

using Azure.Identity;

#pragma warning disable TPEXP
builder.AddAzureOpenAIChatClientProvider(new DefaultAzureCredential());
#pragma warning restore TPEXP

Quando AZURE_OPENAI_API_KEY está definido, o fornecedor utiliza a chave API antes da credencial fornecida. A resolução de credenciais e a autenticação ocorrem quando o primeiro pedido de chat é executado, pelo que erros de configuração podem não aparecer durante o registo do fornecedor.

Use um cliente de chat

Implemente IChatClientProvider para integrar outro fornecedor de IA. Uma extensão MTP pode recuperar o cliente de chat registado a partir do seu IServiceProvider:

IChatClient? client =
    await serviceProvider.GetChatClientAsync(cancellationToken);

A chamada retorna null quando nenhum fornecedor disponível está registado. Antes de uma extensão enviar dados de teste para um modelo, documente que dados envia e aplique os requisitos de privacidade, segurança e retenção desses dados.

Ver também