Partilhar via


Solicite uma resposta com saída estruturada

Neste início rápido, você cria um aplicativo de bate-papo que solicita uma resposta com saída estruturada. Uma resposta de saída estruturada é uma resposta de bate-papo do tipo que você especifica em vez de apenas texto sem formatação. O aplicativo de bate-papo que você cria neste guia de início rápido analisa o sentimento de várias avaliações de produtos, categorizando cada avaliação de acordo com os valores de uma enumeração personalizada.

Pré-requisitos

Configurar o serviço de IA

Para provisionar um serviço e um modelo do Azure OpenAI usando o portal do Azure, conclua as etapas no artigo Criar e implantar um recurso do Serviço OpenAI do Azure. Na etapa "Implantar um modelo", selecione o modelo gpt-5.

Criar o aplicativo de bate-papo

Conclua as etapas a seguir para criar um aplicativo de console que se conecte ao gpt-5 modelo de IA.

  1. Em uma janela de terminal, navegue até o diretório onde você deseja criar seu aplicativo e crie um novo aplicativo de console com o dotnet new comando:

    dotnet new console -o SOChat
    
  2. Navegue até o diretório SOChat e adicione os pacotes necessários ao seu aplicativo:

    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. Execute os seguintes comandos para adicionar segredos de aplicação para o seu endpoint Azure OpenAI e o ID do inquilino:

    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>
    

    Observação

    Dependendo do seu ambiente, o ID do locatário pode não ser necessário. Nesse caso, remova-o do código que instancia o DefaultAzureCredentialarquivo .

  4. Abra o novo aplicativo no editor de sua escolha.

Adicionar o código

  1. Defina a enumeração que descreve os diferentes sentimentos.

    public enum Sentiment
    {
        Positive,
        Negative,
        Neutral
    }
    
  2. Crie o IChatClient que se comunicará com o modelo.

    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();
    

    Observação

    DefaultAzureCredential Procura credenciais de autenticação do seu ambiente ou ferramentas locais. Você precisará atribuir a Azure AI Developer função à conta usada para entrar no Visual Studio ou na CLI do Azure. Para mais informações, consulte Autenticar para ferramentas Foundry com .NET.

  3. Envie uma solicitação para o modelo com uma única revisão do produto e, em seguida, imprima o sentimento analisado no console. Você declara o tipo de saída estruturada solicitado passando-o como o argumento "type" para o método de extensão ChatClientStructuredOutputExtensions.GetResponseAsync<T>(IChatClient, String, ChatOptions, Nullable<Boolean>, CancellationToken).

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

    Este código produz uma saída semelhante a:

    Sentiment: Positive
    
  4. Em vez de analisar apenas uma avaliação, você pode analisar uma coleção de avaliações.

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

    Este código produz uma saída semelhante a:

    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. E em vez de solicitar apenas o valor de enumeração analisado, você pode solicitar a resposta de texto junto com o valor analisado.

    Defina um tipo de registro para conter a resposta de texto e o sentimento analisado:

    record SentimentRecord(string ResponseText, Sentiment ReviewSentiment);
    

    (Este tipo de registro é definido usando a sintaxe do construtor primário . Os construtores primários combinam a definição de tipo com os parâmetros necessários para instanciar qualquer instância da classe. O compilador C# gera propriedades públicas para os parâmetros primários do construtor.)

    Envie a solicitação usando o tipo de registro como o argumento type para 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}");
    

    Este código produz uma saída semelhante a:

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

Limpeza de recursos

Se você não precisar mais deles, exclua o recurso e a implantação do modelo do Azure OpenAI.

  1. No portal Azure, navegue até ao recurso Azure OpenAI.
  2. Selecione o recurso Azure OpenAI e, em seguida, selecione Excluir.

Ver também