Интеграции ИИ

Экспериментальный пакет Microsoft.Testing.Platform.AI определяет абстракции ИИ, нейтральные от поставщика, для платформ тестирования и расширений MTP. Пакет интегрируется с Microsoft.Extensions.AI, поэтому расширение может запрашивать IChatClient, не завися от конкретного поставщика модели.

Important

API искусственного интеллекта используют идентификатор диагностики TPEXP и могут измениться в одном из будущих выпусков. Пакеты предоставляют инфраструктуру расширениям; Они не добавляют поведение ИИ в набор тестов самостоятельно.

Использование средств программирования искусственного интеллекта для тестовых рабочих процессов

Пакеты в этой статье позволяют расширениям MTP вызывать модели искусственного интеллекта во время тестового выполнения. Чтобы использовать ИИ-помощник по программированию для создания, анализа или миграции тестов в вашем репозитории, используйте вместо этого специально подобранные навыки агента .NET.

Выберите рабочий процесс на основе вашей цели:

Цель Навык или агент
Создание или расширение тестов Используйте code-testing-agentнавык из dotnet-testплагина. Навык изучает базу кода, планирует работу, реализует тесты и проверяет изменения.
Запуск или устранение неполадок при тестировании run-tests Используйте навык для выполнения тестов или диагностики выполнения тестов без изменения кода теста.
Качество теста аудита test-quality-auditor Используйте агент для широкой оценки или вызовите ориентированный навык из dotnet-test каталога навыков для утверждений, покрытия, пробелов теста или запахов теста.
Улучшение тестируемости testability-migration Используйте агент для поиска статических зависимостей и введения тестируемых абстракций.
Перенести тестовый фреймворк или платформу Используйте test-migration агент из dotnet-test-migration плагина. Агент определяет текущую конфигурацию и выбирает соответствующий навык миграции.

Инструкции по установке и поддерживаемые агенты кодирования см. в репозитории навыков агента .NET. Установите dotnet-test вместе с dotnet-test-migration, поскольку процессы миграции повторно используют его возможности определения платформы и проверки тестов.

Выбор пакетов

Добавьте пакет абстракций при создании расширения, использующее клиент чата. Добавьте пакет поставщика в тестовое приложение, в котором размещено расширение:

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

Microsoft.Testing.Extensions.AzureFoundry— это поставщик ссылок, предоставленный Microsoft. Он создает клиент чата OpenAI Azure через Azure AI Foundry.

Настройка Azure AI Foundry

Задайте следующие переменные среды:

Variable Обязательный Описание
AZURE_OPENAI_ENDPOINT Да Конечная точка ресурса Azure OpenAI, например https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Да Имя развертывания модели.
AZURE_OPENAI_API_KEY Conditional Ключ API ресурсов. Укажите это значение, если не регистрируете TokenCredential в коде.

Чтобы сохранить учетные данные вне системы управления версиями, укажите эти значения через локальную среду или защищенное хранилище секретов CI.

Регистрация поставщика.

Отключите созданную точку входа MTP и зарегистрируйте поставщика в пользовательском Main методе. Для аутентификации с помощью API-ключа вызовите:

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

Для Microsoft Entra ID или управляемой идентификации используйте пакет Azure.Identity и передайте учетные данные:

using Azure.Identity;

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

Если задан параметр AZURE_OPENAI_API_KEY, поставщик использует ключ API раньше, чем предоставленные учетные данные. Разрешение учетных данных и проверка подлинности возникают при выполнении первого запроса чата, поэтому ошибки конфигурации могут не отображаться во время регистрации поставщика.

Используйте чат-клиент

Реализуйте IChatClientProvider для интеграции другого поставщика ИИ. Расширение MTP может получить зарегистрированный клиент чата из его IServiceProvider:

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

Вызов возвращает null, если не зарегистрирован ни один доступный поставщик. Прежде чем расширение отправляет тестовые данные в модель, задокументируйте, какие данные она отправляет и применяет требования к конфиденциальности, безопасности и хранению для данных.

См. также