Pular para o conteúdo
OpenAI

ChatGPT — Executando Funções

Capa do artigo: ChatGPT — Executando Funções

Olá Gente


Já aprendemos muito sobre o ChatGPT, mas esta na hora de irmos além!

Um recurso muito útil é a criação de funções, onde podemos indicar que, dependendo do que o cliente perguntar, deve ser acionado uma função que será processada no seu servidor.


Para este exemplo, iremos criar uma função chamada “checar_servidor_online”, que será utilizada para verificar se um servidor esta online ou offline.


Iremos utilizar o endpoint de “completions” incluindo um novo elemento “tools” para indicar as funções que serão utilizadas:

https://api.openai.com/v1/chat/completions


Uma função é composto de alguns elemento, entre ele:

- Nome da função
- Descrição da função (Que o ChatGPT utiliza para entender quando chamar esta função)
- Parâmetros (Os campos que esta função precisa)


Para nosso exemplo, precisamos que seja passado apenas o nome do servidor, com isto, a função ira ficar semelhante a função abaixo:

{
      "type": "function",
      "function": {
        "name": "checar_servidor_online",
        "description": "Verifica se Servidor esta Online",
        "parameters": {
          "type": "object",
          "properties": {
            "servidor": {
              "type": "string",
              "description": "Nome do Servidor"
            }
          },
          "required": ["servidor"]
        }
      }
    }


Com a função, vamos criar a Json que será enviado para a API:

{
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "O Servidor POTTERS1 esta Online?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "checar_servidor_online",
        "description": "Verifica se Servidor esta Online",
        "parameters": {
          "type": "object",
          "properties": {
            "servidor": {
              "type": "string",
              "description": "Nome do Servidor"
            }
          },
          "required": ["servidor"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}


Observe que aqui:

- Definimos o modelo para “gpt-3.5-turbo”
- Definimos a primeira mensagem do cliente para “O Servidor POTTERS1 esta Online?”
- Populamos o array “tools” com a função que criamos
- Definimos “tool_choice” como “auto” para que o ChatGPT escolha a melhor função com base no que o cliente digitar


Quando o Post for enviado, em “choises[0].message” teremos um elemento “tool_calls” indicando que uma função esta sendo chamada:


Nos dados da função, temos algumas informações importantes:

- id: O ID da chamada (Iremos utilizar para responder a função)
- function.name: O Nome da Função
- function.arguments: Os parâmetros que a função precisa


Neste momento, podemos fazer alguma chamada a alguma API externa (Como Pingdom) para verifica se o Servidor esta online e assim ter uma resposta para a função.


Para este exemplo, iremos responder que “Sim”, para isto, iremos adicionar uma nova mensagem com alguns parâmetros:

- role: Sete como “function”
- name: O nome da função
- tool_call_id: O ID da chamada que obtemos anteriormente
- content: A resposta da função


Segue exemplo completo do Json:

{
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "O Servidor POTTERS1 esta Online?"
    },
    {
      "role": "function",
      "name": "checar_servidor_online",
      "tool_call_id": "call_RcbsLzvqWKm7LTQH5I4Dk3nj",
      "content": "Sim"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "checar_servidor_online",
        "description": "Verifica se Servidor esta Online",
        "parameters": {
          "type": "object",
          "properties": {
            "servidor": {
              "type": "string",
              "description": "Nome do Servidor"
            }
          },
          "required": ["servidor"]
        }
      }
    }
  ],
  "tool_choice": "auto"
}


Como resposta, o Bot ira retornar uma mensagem que responde a pergunta com o valor que enviamos na função:


Por hoje é isto, queridos desenvolvedores! 👩‍💼
Até logo! 👋

Leia também