Válasz kérése strukturált kimenettel

Ebben a rövid útmutatóban létrehoz egy csevegőalkalmazást, amely strukturált kimenettel választ kér. A strukturált kimeneti válasz olyan csevegési válasz, amely a megadott típusú, nem csupán egyszerű szöveg. Az ebben a rövid útmutatóban létrehozott csevegőalkalmazás elemzi a különböző termékértékelések hangulatát, és kategorizálja az egyes felülvizsgálatokat az egyéni felsorolás értékei szerint.

Előfeltételek

Az AI-szolgáltatás konfigurálása

Ha Azure OpenAI-szolgáltatást és modellt szeretne kiépíteni az Azure Portalon, végezze el az Azure OpenAI-szolgáltatás erőforrásának létrehozása és üzembe helyezése cikkben leírt lépéseket. A "Modell üzembe helyezése" lépésben válassza ki a gpt-5 modellt.

A csevegőalkalmazás létrehozása

Az AI-modellhez csatlakozó konzolalkalmazás létrehozásához hajtsa végre az gpt-5 alábbi lépéseket.

  1. Egy terminálablakban lépjen arra a könyvtárra, ahol létre szeretné hozni az alkalmazást, és hozzon létre egy új konzolalkalmazást a dotnet new következő paranccsal:

    dotnet new console -o SOChat
    
  2. Lépjen a SOChat könyvtárra, és adja hozzá a szükséges csomagokat az alkalmazáshoz:

    dotnet add package Azure.AI.OpenAI
    dotnet add package Azure.Identity
    dotnet add package Microsoft.Extensions.AI
    dotnet add package Microsoft.Extensions.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  3. Futtassa az alábbi parancsokat az Azure OpenAI végpontjához és a bérlői azonosítóhoz tartozó alkalmazás-titkok hozzáadásához.

    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>
    

    Megjegyzés:

    A környezettől függően előfordulhat, hogy nincs szükség a bérlőazonosítóra. Ebben az esetben távolítsa el azt a kódból, amely a DefaultAzureCredential példányosítást végzi.

  4. Nyissa meg az új alkalmazást a választott szerkesztőben.

A kód hozzáadása

  1. Adja meg a különböző hangulatokat leíró enumerálást.

    public enum Sentiment
    {
        Positive,
        Negative,
        Neutral
    }
    
  2. Hozza létre a IChatClient, amely kommunikálni fog a modellel.

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

    Megjegyzés:

    DefaultAzureCredential Hitelesítő adatokat keres a környezeti beállításokból vagy a helyi eszközkészletből. A szerepkört a Visual Studióba vagy az Azure AI Developer Azure CLI-be való bejelentkezéshez használt fiókhoz kell hozzárendelnie. További információért lásd: A Foundry eszközök hitelesítése a .NET segítségével.

  3. Küldjön egy kérelmet a modellnek egyetlen termékértékeléssel, majd nyomtassa ki az elemzett hangulatot a konzolon. A kért strukturált kimeneti típust úgy deklarálhatja, hogy típusargumentumként átadja a ChatClientStructuredOutputExtensions.GetResponseAsync<T>(IChatClient, String, ChatOptions, Nullable<Boolean>, CancellationToken) bővítménymetódusnak.

    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}");
    

    Ez a kód a következőhöz hasonló kimenetet hoz létre:

    Sentiment: Positive
    
  4. Ahelyett, hogy csak egyetlen felülvizsgálatot elemez, elemezheti a felülvizsgálatok gyűjteményét.

    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}");
    }
    

    Ez a kód a következőhöz hasonló kimenetet hoz létre:

    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. Ahelyett, hogy csak az elemzett enumerálási értéket kérnél, a szöveges választ az elemzett értékkel együtt is kérheti.

    Adjon meg egy rekordtípust , amely tartalmazza a szöveges választ és az elemzett hangulatot:

    record SentimentRecord(string ResponseText, Sentiment ReviewSentiment);
    

    (Ez a rekordtípus elsődleges konstruktorszintaxissal van definiálva. Az elsődleges konstruktorok egyesítik a típusdefiníciót az osztály bármely példányának példányosításához szükséges paraméterekkel. A C#-fordító nyilvános tulajdonságokat hoz létre az elsődleges konstruktorparaméterekhez.)

    Küldje el a kérést a rekordtípus használatával típusargumentumként a következő címre GetResponseAsync<T>:

    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}");
    

    Ez a kód a következőhöz hasonló kimenetet hoz létre:

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

Erőforrások tisztítása

Ha már nincs rájuk szüksége, törölje az Azure OpenAI-erőforrást és a modell üzembe helyezését.

  1. Az Azure Portalon keresse meg az Azure OpenAI-erőforrást.
  2. Válassza ki az Azure OpenAI-erőforrást, majd válassza a Törléslehetőséget.

Lásd még