AI 整合功能

實驗性的 Microsoft.Testing.Platform.AI 套件定義了測試框架與 MTP 擴充的提供者中立 AI 抽象。 此套件與 Microsoft.Extensions.AI 整合,因此擴充功能可請求 IChatClient,而不需依賴特定的模型提供者。

Important

AI API 使用 TPEXP 診斷 ID,且可能會在未來版本中變更。 這些套件為延伸線提供基礎設施;它們不會自己把 AI 行為加入測試套件。

使用AI編碼工具進行測試工作流程

本文中的套件讓 MTP 擴充功能在測試時能呼叫 AI 模型。 若要使用 AI 編碼助理來建立、分析或遷移資料庫中的測試,請改用精選的 .NET 代理技能

根據你的目標選擇工作流程:

目標 技能或代理人
建立或擴充測試 使用code-testing-agent插件裡的dotnet-test技能。 這項技能會研究程式碼庫、規劃工作、實作測試並驗證變更。
執行或排除故障測試 使用此 run-tests 技能 執行測試或診斷測試執行,且不更改測試程式碼。
稽核測試品質 你可以使用 test-quality-auditor 代理程式 進行廣泛評估,或從 dotnet-test 技能目錄 中叫用特定技能,以檢查斷言、覆蓋範圍、測試缺口或測試異味。
提升可測試性 使用 testability-migration 代理 尋找靜態相依關係並引入可測試的抽象。
遷移測試框架或平台 使用來自test-migration外掛程式dotnet-test-migration代理程式。 代理會偵測目前的設定並選擇適當的遷移技能。

關於安裝步驟及支援的編碼代理程式,請參閱 .NET 代理技能資料庫。 將 dotnet-testdotnet-test-migration 一併安裝,因為遷移工作流程會重複使用其平台偵測和測試驗證功能。

選擇包裹

當您撰寫使用聊天用戶端的擴充功能時,請加入 Abstractions 套件。 在承載擴充功能的測試應用程式中加入一個提供者套件:

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 Required Description
AZURE_OPENAI_ENDPOINT Yes Azure OpenAI 資源端點,例如 https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Yes 模型部署名稱。
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 並整合另一家 AI 服務提供者。 MTP 擴充功能可從其 IServiceProvider 取得已註冊的聊天客戶端:

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

當未註冊任何可用的提供者時,呼叫會傳回 null。 在擴充套件傳送測試資料給模型之前,先記錄它傳送的資料內容,並套用該資料的隱私、安全與保存要求。

參見