Integrasi AI

Paket Microsoft.Testing.Platform.AI eksperimental menentukan abstraksi AI netral penyedia untuk kerangka kerja pengujian dan ekstensi MTP. Paket terintegrasi dengan Microsoft.Extensions.AI, sehingga ekstensi dapat meminta IChatClient tanpa bergantung pada penyedia model tertentu.

Important

API AI menggunakan TPEXP ID diagnostik dan dapat berubah dalam rilis mendatang. Paket tersebut menyediakan infrastruktur bagi ekstensi; paket tersebut tidak dengan sendirinya menambahkan perilaku AI ke dalam rangkaian pengujian.

Menggunakan alat pengkodian AI untuk alur kerja pengujian

Paket dalam artikel ini memungkinkan ekstensi MTP memanggil model AI selama uji coba. Untuk menggunakan asisten pengkodian AI untuk membuat, menganalisis, atau memigrasikan pengujian di repositori Anda, gunakan .NET Agent Skills yang dikumpulkan sebagai gantinya.

Pilih alur kerja berdasarkan tujuan Anda:

Maksud Keterampilan atau agen
Membuat atau memperluas pengujian code-testing-agent Gunakan keterampilan dari dotnet-test plugin. Keterampilan ini meneliti basis kode, merencanakan pekerjaan, mengimplementasikan pengujian, dan memverifikasi perubahan.
Menjalankan atau memecahkan masalah pengujian run-tests Gunakan keterampilan untuk menjalankan pengujian atau mendiagnosis eksekusi pengujian tanpa mengubah kode pengujian.
Mengaudit kualitas pengujian Gunakan test-quality-auditor agen untuk penilaian menyeluruh, atau gunakan keahlian yang spesifik dari dotnet-test direktori keahlian untuk asersi, cakupan, kesenjangan pengujian, atau masalah pengujian.
Meningkatkan kemampuan pengujian testability-migration Gunakan agen untuk menemukan dependensi statis dan memperkenalkan abstraksi yang dapat diuji.
Memigrasikan kerangka kerja atau platform pengujian test-migration Gunakan agen dari dotnet-test-migration plugin. Agen mendeteksi konfigurasi saat ini dan memilih kemampuan migrasi yang sesuai.

Untuk langkah-langkah penginstalan dan agen pengkodian yang didukung, lihat repositori .NET Agent Skills. Instal dotnet-test bersama dotnet-test-migration karena alur kerja migrasi memanfaatkan kembali kemampuan deteksi platform dan verifikasi pengujiannya.

Pilih paket

Tambahkan paket abstraksi saat Anda menulis ekstensi yang mengonsumsi klien obrolan. Tambahkan paket penyedia ke aplikasi pengujian yang menghosting ekstensi:

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

Microsoft.Testing.Extensions.AzureFoundryadalah penyedia referensi yang disediakan Microsoft. Ini membuat klien chat Azure OpenAI melalui Azure AI Foundry.

Konfigurasikan Azure AI Foundry

Atur variabel lingkungan berikut:

Variabel Required Description
AZURE_OPENAI_ENDPOINT Yes Titik akhir sumber daya OpenAI Azure, seperti https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Yes Nama penerapan model.
AZURE_OPENAI_API_KEY Bersyarat Kunci API sumber daya. Tetapkan nilai ini, kecuali jika Anda mendaftarkan TokenCredential di dalam kode.

Untuk menjaga kredensial di luar kontrol sumber, berikan nilai-nilai ini melalui lingkungan lokal Anda atau penyimpanan rahasia CI yang dilindungi.

Mendaftarkan penyedia

Nonaktifkan titik masuk MTP yang dihasilkan dan daftarkan penyedia dalam metode kustom Main Anda. Untuk autentikasi kunci API, panggil:

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

Untuk Microsoft Entra ID atau identitas terkelola, referensikan Azure.Identity paket dan berikan kredensial:

using Azure.Identity;

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

Saat AZURE_OPENAI_API_KEY diatur, penyedia menggunakan kunci API sebelum kredensial yang disediakan. Resolusi dan autentikasi kredensial terjadi ketika permintaan obrolan pertama berjalan, sehingga kesalahan konfigurasi mungkin tidak muncul selama pendaftaran penyedia.

Menggunakan klien chat

Terapkan IChatClientProvider untuk mengintegrasikan penyedia AI lain. Ekstensi MTP dapat memperoleh klien obrolan terdaftar dari IServiceProvider:

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

Pemanggilan ini mengembalikan null jika tidak ada penyedia terdaftar yang tersedia. Sebelum ekstensi mengirim data pengujian ke model, dokumentasikan data apa yang dikirim dan terapkan persyaratan privasi, keamanan, dan retensi untuk data tersebut.

Baca juga