Aracılığıyla paylaş


Yapılandırılmış çıkışla yanıt isteme

Bu hızlı başlangıçta, yapılandırılmış çıkışla yanıt isteyen bir sohbet uygulaması oluşturacaksınız. Yapılandırılmış çıkış yanıtı, yalnızca düz metin yerine belirttiğiniz türde bir sohbet yanıtıdır. Bu hızlı başlangıçta oluşturduğunuz sohbet uygulaması, çeşitli ürün incelemelerinin yaklaşımını analiz eder ve her gözden geçirmeyi özel bir sabit listesinin değerlerine göre kategorilere ayırır.

Ö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-4o modeli seçin.

Sohbet uygulamasını oluşturma

Yapay zeka modeline bağlanan bir konsol uygulaması oluşturmak için gpt-4o aşağıdaki adımları tamamlayın.

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

    dotnet new console -o SOChat
    
  2. SOChat 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
    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, model adınız ve kiracı kimliğiniz için uygulama gizli dizilerini eklemek amacıyla 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_OPENAI_GPT_NAME gpt-4o
    dotnet user-secrets set AZURE_TENANT_ID <your-tenant-ID>
    

    Uyarı

    Ortamınıza bağlı olarak kiracı kimliği gerekli olmayabilir. Bu durumda, DefaultAzureCredential örneğini oluşturan koddan kaldırın.

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

Kodu ekle

  1. Farklı yaklaşımları açıklayan numaralandırmayı tanımlayın.

    public enum Sentiment
    {
        Positive,
        Negative,
        Neutral
    }
    
  2. IChatClient Modelle iletişim kuracak olan öğesini oluşturun.

    IConfigurationRoot config = new ConfigurationBuilder()
        .AddUserSecrets<Program>()
        .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 chatClient = azureClient
        .GetChatClient(deploymentName: model)
        .AsIChatClient();
    

    Uyarı

    DefaultAzureCredential ortamınızdan veya yerel araçlardan kimlik doğrulama bilgilerini arar. Rolü Visual Studio'da veya Azure CLI'da oturum açmak için kullandığınız hesaba atamanız Azure AI Developer gerekir. Daha fazla bilgi için bkz. .NETile Azure AI hizmetlerinde kimlik doğrulaması .

  3. Tek bir ürün incelemesi ile modele bir istek gönderin ve ardından analiz edilen duygusal tonu konsola yazdırın. İstenen yapılandırılmış çıkış türünü, ChatClientStructuredOutputExtensions.GetResponseAsync<T>(IChatClient, String, ChatOptions, Nullable<Boolean>, CancellationToken) uzantı metoduna tür bağımsız değişkeni olarak geçirerek belirtirsiniz.

    string review = "I'm happy with the product!";
    var response = await chatClient.GetResponseAsync<Sentiment>($"What's the sentiment of this review? {review}");
    Console.WriteLine($"Sentiment: {response.Result}");
    

    Bu kod şuna benzer bir çıkış oluşturur:

    Sentiment: Positive
    
  4. Tek bir gözden geçirmeyi analiz etmek yerine, bir gözden geçirme koleksiyonunu analiz edebilirsiniz.

    string[] inputs = [
        "Best purchase ever!",
        "Returned it immediately.",
        "Hello",
        "It works as advertised.",
        "The packaging was damaged but otherwise okay."
    ];
    
    foreach (var i in inputs)
    {
        var response2 = await chatClient.GetResponseAsync<Sentiment>($"What's the sentiment of this review? {i}");
        Console.WriteLine($"Review: {i} | Sentiment: {response2.Result}");
    }
    

    Bu kod şuna benzer bir çıkış oluşturur:

    Review: Best purchase ever! | Sentiment: Positive
    Review: Returned it immediately. | Sentiment: Negative
    Review: Hello | Sentiment: Neutral
    Review: It works as advertised. | Sentiment: Neutral
    Review: The packaging was damaged but otherwise okay. | Sentiment: Neutral
    
  5. Ayrıca yalnızca analiz edilen sabit listesi değerini istemek yerine, çözümlenen değerle birlikte metin yanıtını da isteyebilirsiniz.

    Metin yanıtını ve analiz edilen yaklaşımı içerecek bir kayıt türü tanımlayın:

    record SentimentRecord(string ResponseText, Sentiment ReviewSentiment);
    

    (Bu kayıt türü birincil oluşturucu söz dizimi kullanılarak tanımlanır. Birincil oluşturucular, tür tanımını sınıfın herhangi bir örneğini oluşturmak için gereken parametrelerle birleştirir. C# derleyicisi birincil oluşturucu parametreleri için genel özellikler oluşturur.)

    kayıt türünü türü bağımsız değişkeni olarak kullanarak isteği adresine GetResponseAsync<T>gönderin:

    var review3 = "This product worked okay.";
    var response3 = await chatClient.GetResponseAsync<SentimentRecord>($"What's the sentiment of this review? {review3}");
    
    Console.WriteLine($"Response text: {response3.Result.ResponseText}");
    Console.WriteLine($"Sentiment: {response3.Result.ReviewSentiment}");
    

    Bu kod şuna benzer bir çıkış oluşturur:

    Response text: Certainly, I have analyzed the sentiment of the review you provided.
    Sentiment: Neutral
    

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üzerinde Azure OpenAI kaynağına gidin.
  2. Azure OpenAI kaynağını seçin ve ardından Silöğesini seçin.

Ayrıca bakınız