Aracılığıyla paylaş


Hızlı Başlangıç: Yanıt kalitesini değerlendirme

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

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.

  1. Terminal penceresinde, uygulamanızı oluşturmak istediğiniz dizine gidin ve komutuyla dotnet new yeni bir MSTest uygulaması oluşturun:

    dotnet new mstest -o TestAI
    
  2. TestAI dizinine 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.UserSecrets
    
  3. Azure 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.

  4. Yeni uygulamayı kendi seçtiğiniz düzenleyicide açın.

Test uygulaması kodunu ekleme

  1. 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.

  2. Özel ChatConfiguration ve sohbet iletisini ve yanıt üyelerini sınıfına MyTests ekleyin. Bu s_messages alan, 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();
    
  3. InitializeAsync yöntemini sınıfına MyTests ekleyin.

    [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:

  4. GetAzureOpenAIChatConfiguration yö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);
    }
    
  5. 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.

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.

  1. Azure portalında Azure OpenAI kaynağına gidin.
  2. Azure OpenAI kaynağını seçin ve ardından Silöğesini seçin.

Sonraki Adımlar