Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta, OpenAI modelindeki bir sohbet yanıtının kalitesini değerlendirmek için bir MSTest uygulaması oluşturacaksınız. Test uygulaması Microsoft.Extensions.AI.Evaluation kitaplıklarını kullanır.
Uyarı
Bu hızlı başlangıçta değerlendirme API'sinin en basit kullanımı gösterilmektedir. Özellikle, "çevrimdışı" bir değerlendirme işlem hattının parçası olarak çalışan birim testleri yazarken önemli olan yanıt önbelleğe alma ve raporlama işlevinin kullanımını göstermez. Bu hızlı başlangıçta gösterilen senaryo, üretim kodundaki yapay zeka yanıtlarının "çevrimiçi" değerlendirilmesi ve puanların bir telemetri sistemine kaydedilmesi gibi, önbelleğe alma ve raporlamanın geçerli olmadığı durumlarda uygundur. Önbelleğe alma ve raporlama işlevini gösteren bir öğretici için bkz . Öğretici: Yanıt önbelleğe alma ve raporlama ile modelin yanıtını değerlendirme
Önkoşullar
- .NET 8 veya sonraki bir sürümü
- Visual Studio Code (isteğe bağlı)
Yapay zeka hizmetini yapılandırma
Azure portalını kullanarak bir Azure OpenAI hizmeti ve modeli sağlamak için Azure OpenAI Hizmeti kaynağı oluşturma ve dağıtma makalesindeki adımları tamamlayın. "Model dağıtma" adımında gpt-5 modeli seçin.
Test uygulamasını oluşturma
Bir yapay zeka modeline bağlanan bir MSTest projesi oluşturmak için aşağıdaki adımları tamamlayın.
Terminal penceresinde, uygulamanızı oluşturmak istediğiniz dizine gidin ve komutuyla
dotnet newyeni bir MSTest uygulaması oluşturun:dotnet new mstest -o TestAITestAIdizinine gidin ve gerekli paketleri uygulamanıza ekleyin: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.UserSecretsAzure OpenAI uç noktanız ve kiracı kimliğiniz için uygulama gizli dizileri eklemek için aşağıdaki komutları çalıştırın:
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>Ortamınıza bağlı olarak kiracı kimliği gerekli olmayabilir. Bu durumda, onu DefaultAzureCredential kodundan kaldırın.
Yeni uygulamayı kendi seçtiğiniz düzenleyicide açın.
Test uygulaması kodunu ekleme
Test1.cs dosyasını MyTests.cs olarak yeniden adlandırın, sonra dosyayı açın ve sınıfını olarak
MyTestsyeniden adlandırın.Özel ChatConfiguration ve sohbet iletisini ve yanıt üyelerini sınıfına
MyTestsekleyin. Bus_messagesalan, biri sohbet botunun davranışını, diğeri ise kullanıcının sorusunu içeren iki ChatMessage nesne içeren bir listedir.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();InitializeAsyncyöntemini sınıfınaMyTestsekleyin.[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); }Bu yöntem aşağıdaki görevleri gerçekleştirir:
- ChatConfiguration öğesini ayarlar.
- ChatOptionsve Temperaturedahil olmak üzere ResponseFormat öğesini ayarlar.
- çağrılarak GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)değerlendirilecek yanıtı getirir ve statik bir değişkende depolar.
GetAzureOpenAIChatConfigurationyöntemini ekleyin, bu yöntem değerlendirme aracının modelle iletişim kurmasını sağlayan IChatClient'yi oluşturur.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); }Modelin yanıtını değerlendirmek için bir test yöntemi ekleyin.
[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()); }Bu yöntem aşağıdakileri yapar:
- Yanıtın CoherenceEvaluator değerlendirmek için 'yi çağırır. yöntemi, EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) içeren bir EvaluationResultNumericMetricdöndürür. A
NumericMetric, genellikle iyi tanımlanmış bir aralıkta yer alan sayısal puanları temsil etmek için kullanılan bir sayısal değer içerir. - EvaluationResult nesnesinden tutarlılık puanını alır.
- Döndürülen tutarlılık ölçümü için varsayılan yorumu doğrular. Değerlendiriciler, döndürdikleri ölçümler için varsayılan bir yorum içerebilir. Gerekirse, varsayılan yorumu belirli gereksinimlerinize uyacak şekilde de değiştirebilirsiniz.
- Döndürülen tutarlılık ölçümünde hiçbir tanılamanın mevcut olmadığını doğrular. Değerlendiriciler, değerlendirme sırasında karşılaşılan hataları, uyarıları veya diğer istisnai koşulları belirtmek için döndürdikleri ölçümlere tanılama ekleyebilir.
- Yanıtın CoherenceEvaluator değerlendirmek için 'yi çağırır. yöntemi, EvaluateAsync(IEnumerable<ChatMessage>, ChatResponse, ChatConfiguration, IEnumerable<EvaluationContext>, CancellationToken) içeren bir EvaluationResultNumericMetricdöndürür. A
Testi/değerlendirmeyi çalıştırma
Örneğin CLI komutunu dotnet test kullanarak veya Test Gezgini aracılığıyla tercih ettiğiniz test iş akışını kullanarak testi çalıştırın.
Kaynakları temizle
Artık bunlara ihtiyacınız yoksa Azure OpenAI kaynağını ve GPT-4 model dağıtımını silin.
- Azure portalında Azure OpenAI kaynağına gidin.
- Azure OpenAI kaynağını seçin ve ardından Silöğesini seçin.
Sonraki Adımlar
- Farklı OpenAI modellerinden gelen yanıtları değerlendirin.
- Değerlendirme kodunuza yanıt önbelleğe alma ve raporlama ekleyin. Daha fazla bilgi için bkz Eğitim: Yanıt önbelleğe alma ve raporlama ile bir modelin yanıtını değerlendirme.