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 pengujian MSTest untuk mengevaluasi kualitas tanggapan percakapan dari model OpenAI. Aplikasi pengujian menggunakan pustaka Microsoft.Extensions.AI.Evaluation.
Nota
Panduan ini mendemonstrasikan penggunaan API evaluasi yang paling sederhana. Terutama, ini tidak menunjukkan penggunaan dari penembolokan respons dan fungsionalitas pelaporan , yang penting jika Anda membuat pengujian unit yang dijalankan sebagai bagian dari alur evaluasi "offline". Skenario yang ditunjukkan dalam panduan cepat ini cocok untuk kasus penggunaan seperti evaluasi "online" respons AI dalam kode produksi dan pencatatan skor ke telemetri, di mana penyimpanan sementara dan pelaporan tidak relevan. Untuk tutorial yang mendemonstrasikan fungsi penyimpanan sementara dan pelaporan, lihat Tutorial : Mengevaluasi respons model dengan penyimpanan sementara 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-4o
.
Membuat aplikasi pengujian
Selesaikan langkah-langkah berikut untuk membuat proyek MSTest yang tersambung ke model AI gpt-4o
.
Di jendela terminal, navigasikan ke direktori tempat Anda ingin membuat aplikasi, dan buat aplikasi MSTest baru dengan perintah
dotnet new
:dotnet new mstest -o TestAI
Navigasi 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.UserSecrets
Jalankan perintah berikut untuk menambahkan rahasia aplikasi untuk titik akhir Azure OpenAI, nama model, dan ID penyewa Anda:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME gpt-4o dotnet user-secrets set AZURE_TENANT_ID <your-tenant-ID>
(Tergantung pada lingkungan Anda, ID penyewa mungkin saja tidak diperlukan. Dalam hal ini, hapus dari kode yang menyusun 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 variabel anggota privat ChatConfiguration untuk pesan obrolan dan respons ke dalam kelas
MyTests
. Bidangs_messages
adalah daftar yang berisi dua objek ChatMessage—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();
Tambahkan metode
InitializeAsync
ke 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 ChatOptions, termasuk Temperature dan ResponseFormat.
- 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 oleh evaluator untuk berkomunikasi dengan model.private static ChatConfiguration GetAzureOpenAIChatConfiguration() { IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<MyTests>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string model = config["AZURE_OPENAI_GPT_NAME"]; string tenantId = config["AZURE_TENANT_ID"]; // 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 tanggapan. Metode EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) mengembalikan EvaluationResult yang berisi NumericMetric.
NumericMetric
berisi 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 tanggapan. 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 CLI dotnet test
atau melalui Test Explorer.
Membersihkan sumber daya
Jika Anda tidak lagi membutuhkannya, hapus sumber daya Azure OpenAI dan penyebaran model GPT-4.
- Di Portal Azure, navigasikan ke sumber daya Azure OpenAI.
- Pilih sumber daya Azure OpenAI, lalu pilih Hapus.
Langkah berikutnya
- Evaluasi respons dari model OpenAI yang berbeda.
- Tambahkan cache respons dan pelaporan ke kode evaluasi Anda. Untuk informasi lebih lanjut, lihat Tutorial : Mengevaluasi respons model dengan caching respons dan pelaporan.