AI連携

試験的な Microsoft.Testing.Platform.AI パッケージでは、テスト フレームワークと MTP 拡張機能のプロバイダーに依存しない AI 抽象化を定義します。 パッケージは Microsoft.Extensions.AIと統合されるため、拡張機能は特定のモデル プロバイダーに依存せずに IChatClient を要求できます。

Important

AI API では、 TPEXP 診断 ID が使用され、将来のリリースで変更される可能性があります。 パッケージは拡張機能にインフラストラクチャを提供します。テスト スイートに AI の動作を単独で追加することはありません。

テスト ワークフローに AI コーディング ツールを使用する

この記事のパッケージでは、MTP 拡張機能がテストの実行中に AI モデルを呼び出します。 AI コーディング アシスタントを使用してリポジトリ内のテストを作成、分析、または移行するには、代わりにキュレーションされた .NET Agent Skills を使用します。

目標に基づいてワークフローを選択します。

ゴール スキルまたはエージェント
テストを作成または拡張する プラグインのcode-testing-agentを使用します。 スキルは、コードベースの調査、作業の計画、テストの実装、変更の検証を行います。
テストの実行またはトラブルシューティング run-tests スキルを使用してテストを実行するか、テスト コードを変更せずにテストの実行を診断します。
テスト品質の監査 広範な評価にはtest-quality-auditor エージェントを使用するか、アサーション、カバレッジ、テストギャップ、テストスメル向けの特化したスキルをdotnet-test スキル ディレクトリから呼び出します。
テスト容易性の向上 testability-migration エージェントを使用して静的な依存関係を見つけ、テスト可能な抽象化を導入します。
テスト フレームワークまたはプラットフォームを移行する test-migration プラグインから使用します。 エージェントは現在のセットアップを検出し、適切な移行スキルを選択します。

インストール手順とサポートされているコーディング エージェントについては、.NET Agent Skills リポジトリを参照してください。 移行ワークフローではプラットフォームの検出とテスト検証のスキルが再利用されるため、 dotnet-testdotnet-test-migration と共にインストールします。

パッケージを選択する

チャット クライアントを使用する拡張機能を作成するときに、抽象化パッケージを追加します。 拡張機能をホストするテスト アプリケーションにプロバイダー パッケージを追加します。

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

Microsoft.Testing.Extensions.AzureFoundryは、Microsoft提供される参照プロバイダーです。 Azure AI Foundryを使用して、Azure OpenAI チャット クライアントを作成します。

Azure AI Foundryの構成

以下の環境変数を設定します。

Variable 必須 Description
AZURE_OPENAI_ENDPOINT はい https://my-resource.openai.azure.comなどの Azure OpenAI リソース エンドポイント。
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またはマネージド ID の場合は、Azure.Identity パッケージを参照し、資格情報を渡します。

using Azure.Identity;

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

AZURE_OPENAI_API_KEYが設定されている場合、プロバイダーは指定された資格情報の前に API キーを使用します。 資格情報の解決と認証は、最初のチャット要求の実行時に発生するため、プロバイダーの登録中に構成エラーが表示されない可能性があります。

チャットクライアントを利用する

IChatClientProviderを実装して、別の AI プロバイダーを統合します。 MTP 拡張機能は、登録されたチャット クライアントを IServiceProviderから取得できます。

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

この呼び出しは、使用可能なプロバイダーが登録されていない場合に null を返します。 拡張機能がテスト データをモデルに送信する前に、送信するデータを文書化し、そのデータのプライバシー、セキュリティ、保持の要件を適用します。

こちらも参照ください