Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam panduan cepat ini, Anda akan membuat aplikasi MSTest untuk menilai kualitas respons obrolan dari model OpenAI. Aplikasi pengujian menggunakan pustaka Microsoft.Extensions.AI.Evaluation .
Nota
Panduan ini menunjukkan cara penggunaan API evaluasi yang paling sederhana. Perlu dicatat, ini tidak menunjukkan penggunaan fungsionalitas caching respons dan pelaporan, yang penting jika Anda menulis uji coba unit yang dijalankan sebagai bagian dari alur evaluasi "offline". Skenario yang ditunjukkan dalam panduan cepat ini cocok dalam kasus penggunaan seperti evaluasi "online" respons AI dalam kode produksi dan pencatatan skor ke telemetri, di mana pengelolaan cache dan pelaporan tidak relevan. Untuk tutorial yang menunjukkan fungsi caching dan pelaporan, lihat Tutorial: Mengevaluasi respons model dengan caching respons dan pelaporan
Prasyarat
Mengonfigurasi layanan AI
Untuk memprovisikan layanan dan model Azure OpenAI menggunakan portal Azure, selesaikan langkah-langkah dalam artikel Membuat dan menyebarkan sumber daya Azure OpenAI Service. Dalam langkah "Sebarkan model", pilih model gpt-5.
Membuat aplikasi pengujian
Selesaikan langkah-langkah berikut untuk membuat proyek MSTest yang tersambung ke model AI.
Di jendela terminal, navigasikan ke direktori tempat Anda ingin membuat aplikasi, dan buat aplikasi MSTest baru dengan
dotnet newperintah :dotnet new mstest -o TestAINavigasi ke direktori
TestAI, dan tambahkan paket yang diperlukan ke aplikasi Anda:dotnet add package Azure.AI.OpenAI dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AI.Abstractions dotnet add package Microsoft.Extensions.AI.Evaluation dotnet add package Microsoft.Extensions.AI.Evaluation.Quality dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsJalankan perintah berikut untuk menambahkan rahasia aplikasi untuk titik akhir Azure OpenAI dan ID penyewa Anda:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_TENANT_ID <your-tenant-ID>(Tergantung pada lingkungan Anda, ID penyewa mungkin tidak diperlukan. Dalam hal ini, hapus dari kode yang membuat instans DefaultAzureCredential.)
Buka aplikasi baru di editor pilihan Anda.
Menambahkan kode aplikasi pengujian
Ganti nama file Test1.cs menjadi MyTests.cs, lalu buka file dan ganti nama kelas menjadi
MyTests.Tambahkan anggota pesan dan respons pribadi serta obrolan ke kelas ChatConfiguration. Bidang
s_messagesadalah daftar yang berisi dua ChatMessage objek—satu menginstruksikan perilaku bot obrolan, dan yang lainnya adalah pertanyaan dari pengguna.private static ChatConfiguration? s_chatConfiguration; private static IList<ChatMessage> s_messages = [ new ChatMessage( ChatRole.System, """ You're an AI assistant that can answer questions related to astronomy. Keep your responses concise and try to stay under 100 words. Use the imperial measurement system for all measurements in your response. """), new ChatMessage( ChatRole.User, "How far is the planet Venus from Earth at its closest and furthest points?")]; private static ChatResponse s_response = new();Tambah metode
InitializeAsyncke kelasMyTests.[ClassInitialize] public static async Task InitializeAsync(TestContext _) { /// Set up the <see cref="ChatConfiguration"/>, /// which includes the <see cref="IChatClient"/> that the /// evaluator uses to communicate with the model. s_chatConfiguration = GetAzureOpenAIChatConfiguration(); var chatOptions = new ChatOptions { Temperature = 0.0f, ResponseFormat = ChatResponseFormat.Text }; // Fetch the response to be evaluated // and store it in a static variable. s_response = await s_chatConfiguration.ChatClient.GetResponseAsync(s_messages, chatOptions); }Metode ini menyelesaikan tugas-tugas berikut:
- Menyiapkan ChatConfiguration.
- Mengatur
, termasuk dan . - Mengambil respons yang akan dievaluasi dengan memanggil GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken), dan menyimpannya dalam variabel statis.
Tambahkan metode
GetAzureOpenAIChatConfiguration, yang membuat IChatClient yang digunakan evaluator untuk berkomunikasi dengan model.private static ChatConfiguration GetAzureOpenAIChatConfiguration() { IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<MyTests>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string tenantId = config["AZURE_TENANT_ID"]; string model = "gpt-5"; // Get a chat client for the Azure OpenAI endpoint. AzureOpenAIClient azureClient = new( new Uri(endpoint), new DefaultAzureCredential(new DefaultAzureCredentialOptions() { TenantId = tenantId })); IChatClient client = azureClient.GetChatClient(deploymentName: model).AsIChatClient(); return new ChatConfiguration(client); }Tambahkan metode pengujian untuk mengevaluasi respons model.
[TestMethod] public async Task TestCoherence() { IEvaluator coherenceEvaluator = new CoherenceEvaluator(); EvaluationResult result = await coherenceEvaluator.EvaluateAsync( s_messages, s_response, s_chatConfiguration); /// Retrieve the score for coherence from the <see cref="EvaluationResult"/>. NumericMetric coherence = result.Get<NumericMetric>(CoherenceEvaluator.CoherenceMetricName); // Validate the default interpretation // for the returned coherence metric. Assert.IsFalse(coherence.Interpretation!.Failed); Assert.IsTrue(coherence.Interpretation.Rating is EvaluationRating.Good or EvaluationRating.Exceptional); // Validate that no diagnostics are present // on the returned coherence metric. Assert.IsFalse(coherence.ContainsDiagnostics()); }Metode ini melakukan hal berikut:
- Memanggil CoherenceEvaluator untuk mengevaluasi koherensi dari respons. Metode EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) mengembalikan EvaluationResult yang berisi NumericMetric.
NumericMetricberisi nilai numerik yang biasanya digunakan untuk mewakili skor numerik yang termasuk dalam rentang yang terdefinisi dengan baik. - Mengambil skor koherensi dari EvaluationResult.
- Memvalidasi interpretasi default untuk metrik koherensi yang dikembalikan. Evaluator dapat menyertakan interpretasi default untuk metrik yang mereka kembalikan. Anda juga dapat mengubah interpretasi default agar sesuai dengan persyaratan spesifik Anda, jika diperlukan.
- Memastikan bahwa tidak ada diagnostik pada metrik koherensi yang dikembalikan. Evaluator dapat menyertakan diagnostik pada metrik yang mereka kembali untuk menunjukkan kesalahan, peringatan, atau kondisi luar biasa lainnya yang ditemui selama evaluasi.
- Memanggil CoherenceEvaluator untuk mengevaluasi koherensi dari respons. Metode EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) mengembalikan EvaluationResult yang berisi NumericMetric.
Menjalankan pengujian/evaluasi
Jalankan pengujian menggunakan alur kerja pengujian pilihan Anda, misalnya, dengan menggunakan perintah dotnet test CLI atau melalui Test Explorer.
Membersihkan sumber daya
Jika Anda tidak lagi membutuhkannya, hapus sumber daya Azure OpenAI dan penyebaran model GPT-4.
- Di portal Microsoft Azure, navigasikan ke sumber daya Azure OpenAI.
- Pilih sumber daya Azure OpenAI, lalu pilih Hapus.
Langkah selanjutnya
- Evaluasi respons dari model OpenAI yang berbeda.
- Tambahkan pencachean respons dan pelaporan ke kode evaluasi Anda. Untuk informasi selengkapnya, lihat tutorial: Mengevaluasi respons model dengan pemadanan respons dan pelaporan.