ChatGPT - Retornando um Json com elementos relacionados a conversa

Descubra como solicitar respostas no formato JSON com a OpenAI para extrair informações específicas de conversas

ChatGPT - Retornando um Json com elementos relacionados a conversa

Olá meus Unicórnios! 🦄✨

No tutorial anterior, conversamos sobre fazer perguntas sobre conversas previamente transcritas.

Porem, simplesmente trazer respostas ainda é algo muito "manual".

Vamos utilizar o mesmo exemplo do tutorial anterior mas com uma pitada de automação:

ChatGPT - Questionando o contexto de uma conversa
Aprenda a usar o modelo GPT-4o da OpenAI para fazer perguntas sobre transcrições de reuniões e gerar respostas precisas com base em conversas.

O que iremos fazer neste exemplo, é pedir para que a OpenAI nos retorne um Json que ira nos retornar um Objeto com os dados que queremos.

Iremos utilizar a mesma conversa e a mesma instrução:

Tenho a conversa abaixo, e irei fazer perguntas sobre elas:
- Pessoal, vocês já pararam para pensar qual é o melhor filme de Harry Potter? Eu sou totalmente #TeamAzkaban.
- Ah, não! Azkaban é ótimo, mas pra mim, o melhor filme é O Cálice de Fogo. A trama do Torneio Tribruxo, os dragões, a cena do pântano... Isso é ação de verdade!
- Eu até entendo sua paixão por "O Cálice de Fogo", mas a atmosfera sombria de "O Prisioneiro de Azkaban" é incomparável! A forma como o filme lida com o passado de Harry, a introdução do Sirius Black... é incrível.

Porem, iremos mudar a pergunta, para indicar como queremos a resposta:

Sobre o que eles estão conversando?

O retorno deve ser um Json, onde teremos os elementos abaixo:
- [Assunto] Assunto da Conversa
- [Filme] Array com uma lista dos Filmes Discutidos
- [QtdPessoas] Quantidade de pessoas na conversa

E em nossa requisição, precisamos indicar que queremos que o retorno seja um Json:

"response_format": {
  "type": "json_object"
}

Vamos para a Prática, iremos utilizar o recurso "completions" e o modelo "gpt-4o".

{
  "model": "gpt-4o",
  "max_tokens": 300,
  "messages": [
    {
      "role": "system",
      "content": [
        {
          "type": "text",
          "text": "Tenho a conversa abaixo, e irei fazer perguntas sobre elas:\n- Pessoal, vocês já pararam para pensar qual é o melhor filme de Harry Potter? Eu sou totalmente #TeamAzkaban.\n- Ah, não! Azkaban é ótimo, mas pra mim, o melhor filme é O Cálice de Fogo. A trama do Torneio Tribruxo, os dragões, a cena do pântano... Isso é ação de verdade!\n- Eu até entendo sua paixão por \"O Cálice de Fogo\", mas a atmosfera sombria de \"O Prisioneiro de Azkaban\" é incomparável! A forma como o filme lida com o passado de Harry, a introdução do Sirius Black... é incrível."
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Sobre o que eles estão conversando?\n\nO retorno deve ser um Json, onde teremos os elementos abaixo:\n- [Assunto] Assunto da Conversa\n- [Filme] Array com uma lista dos Filmes Discutidos\n- [QtdPessoas] Quantidade de pessoas na conversa"
        }
      ]
    }
  ],
  "response_format": {
    "type": "json_object"
  }
}

Em "choises[0].message.content" iremos receber o json com nossa resposta:

{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "{\n  \"Assunto\": \"Melhor filme da série Harry Potter\",\n  \"Filme\": [\n    \"O Prisioneiro de Azkaban\",\n    \"O Cálice de Fogo\"\n  ],\n  \"QtdPessoas\": 3\n}",
      }
    }
  ]
}

Agora, basta decodificarmos o Json retornado em "content":

{
  "Assunto": "Melhor filme da série Harry Potter",
  "Filme": [
    "O Prisioneiro de Azkaban",
    "O Cálice de Fogo"
  ],
  "QtdPessoas": 3
}

Mas para que iremos utilizar isto?

Imagine que temos um sistema de imobiliária, onde cada atendente conversa por áudio com os clientes.

Podemos transcrever estes áudios e checar se existe alguma conversa sobre uma venda "por fora", e com base nisto gerar alguma ação no sistema.

Por hoje é só, meus unicórnios! 🦄✨

Que a magia do arco-íris continue brilhando em suas vidas! Até mais! 🌈🌟