Skip to content

Chamada de Funções do OpenAI: Exemplos para Começar

No cenário em constante evolução da inteligência artificial (IA), a OpenAI emergiu como uma mudança de jogo. Sua abordagem inovadora para chamada de funções está revolucionando a interação dos desenvolvedores com modelos de IA. Este artigo explora as complexidades da chamada de funções do OpenAI, fornecendo um guia detalhado sobre seu potencial e como aproveitá-lo para suas aplicações.

📚

Entendendo a Chamada de Funções do OpenAI

Considere uma chamada de API enviada para https://api.openai.com/v1/chat/completions com a OPEN_API_KEY definida no cabeçalho. O objetivo dessa chamada é gerar um arquivo JSON que possa ser usado para agendar uma reunião. O documento JSON enviado para o modelo seria algo como isto:

{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {
      "role": "user",
      "content": "Agende uma reunião com João da Silva na próxima terça-feira às 15h."
    }
  ],
  "functions": [
    {
      "name": "agendar_reuniao",
      "description": "Por favor, agende uma reunião.",
      "parameters": {
        "type": "object",
        "properties": {
          "participante": {
            "type": "string",
            "description": "Participante da reunião"
          },
          "data": {
            "type": "string",
            "description": "Data da reunião"
          },
          "horario": {
            "type": "string",
            "description": "Horário da reunião"
          }
        }
      }
    }
  ]
}

O modelo gera uma saída JSON que pode ser usada para chamar a função agendar_reuniao a partir do seu código.

Aplicações do Mundo Real da Chamada de Funções do OpenAI

Considere um exemplo de análise do mercado de ações. A frase do usuário é definida como: "Qual é o preço atual das ações da Apple?". Os parâmetros definidos são: ticker_symbol.

{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {
      "role": "user",
      "content": "Qual é o preço atual das ações da Apple?"
    }
  ],
  "functions": [
    {
      "name": "obter_preco_acao",
      "description": "Obter preço atual da ação",
      "parameters": {
        "type": "object",
        "properties": {
          "ticker_symbol": {
            "type": "string",
            "description": "Símbolo do ticker da ação"
          }
        }
      }
    }
  ]
}

O modelo gera uma saída JSON que pode ser usada para chamar a função obter_preco_acao a partir do seu código.

O Poder da Chamada de Funções no OpenAI

A chamada de funções no OpenAI é um grande avanço na direção certa. Ela permite que o Modelo de Linguagem Grande (LLM, na sigla em inglês) estruture a saída não apenas em linguagem conversacional natural, mas também em um formato que pode ser consumido por outro sistema, em vez de um humano. Essa característica estrutura a saída para consumo de máquina na forma de uma API, em vez de consumo humano na forma de linguagem natural não estruturada.

Há algumas considerações a serem observadas. Programaticamente, o chatbot ou a interface de usuário conversacional precisará saber que a saída para o LLM deve estar no formato JSON. Portanto, será necessário algum tipo de classificação para detectar o tipo de saída. Deve existir um modelo pré-definido para a entrada no LLM de conclusão. O modelo JSON orienta o LLM sobre como preencher os valores. Os parâmetros que devem ser preenchidos devem estar bem definidos.

Aplicações do Mundo Real da Chamada de Funções do OpenAI

A chamada de funções do OpenAI tem uma ampla gama de aplicações. Por exemplo, pode ser usada para criar chatbots que respondem a perguntas chamando APIs externas. Também pode converter linguagem natural em dados JSON estruturados ou extrair dados estruturados de texto.

Considere um exemplo de reserva de viagem. A frase do usuário é definida como: "Preciso reservar uma viagem de Bonn para Amsterdam para minha esposa, mãe e meus dois filhos e filhas. Eu também irei acompanhá-los. A companhia aérea deve voar direto." Os parâmetros definidos são: destino, partida, número_de_pessoas e modo_de_viagem.

{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {
      "role": "user",
      "content": "Preciso reservar uma viagem de Bonn para Amsterdam para minha esposa, mãe e meus dois filhos e filhas. Eu também irei acompanhá-los. A companhia aérea deve voar direto."
    }
  ],
  "functions": [
    {
      "name": "reservar_viagem",
      "description": "Reservar viagem",
      "parameters": {
        "type": "object",
        "properties": {
          "destino": {
            "type": "string",
            "description": "Seu destino de viagem."
          },
          "partida": {
            "type": "string",
            "description": "De onde você está viajando"
          },
          "numero_de_pessoas": {
            "type": "string",
            "description": "Quantas pessoas estão viajando"
          },
          "modo_de_viagem": {
            "type": "string",
            "description": "Qual será o modo de viagem."
          }
        }
      }
    }
  ]
}

O modelo gera uma saída JSON que pode ser usada para chamar a função reservar_viagem a partir do seu código.

Chamada de Funções do OpenAI: Um Passo em Direção ao Futuro

A capacidade de chamada de funções da OpenAI é um testemunho dos avanços rápidos na tecnologia de IA. Ela permite que os desenvolvedores obtenham dados estruturados de forma mais confiável do modelo. Essa funcionalidade é uma nova maneira de conectar de forma mais confiável as capacidades do GPT com ferramentas e APIs externas.

Em junho de 2023, a OpenAI anunciou atualizações, incluindo modelos de API mais controláveis, capacidade de chamada de funções, contexto mais longo e preços mais baixos. Agora, os desenvolvedores podem descrever funções para gpt-4-0613 e gpt-3.5-turbo-0613, e o modelo escolherá de forma inteligente produzir um objeto JSON contendo argumentos para chamar essas funções.

Essa funcionalidade permite que os desenvolvedores criem chatbots que respondam a perguntas chamando ferramentas externas, convertam consultas em chamadas de função, convertam linguagem natural em chamadas de API ou consultas a bancos de dados e extraiam dados estruturados de texto. Esses casos de uso são possíveis graças a novos parâmetros de API no endpoint /v1/chat/completions, functions e function_call, que permitem que os desenvolvedores descrevam funções para o modelo por meio do JSON Schema e, opcionalmente, peçam que ele chame uma função específica.

Um Caso Concreto de Chamada de Funções do OpenAI: Resolvendo Problemas Matemáticos Complexos

A funcionalidade de chamada de funções do OpenAI não é apenas um conceito teórico, mas uma ferramenta prática que pode ser aplicada para resolver problemas complexos. Vamos analisar um exemplo concreto que demonstra seu poder. Este exemplo é baseado em um thread do Twitter (opens in a new tab) do Santiago (@svpino).

Considere uma pergunta matemática complexa: "Qual é o resultado de 22 mais 5 em decimal adicionado ao número hexadecimal A?" Essa pergunta requer a adição de números em diferentes formatos, o que pode ser bastante desafiador. No entanto, com a funcionalidade de chamada de funções do OpenAI, podemos resolvê-la combinando funções com prompts.

Veja como funciona:

  1. Defina duas funções: uma que sabe somar dois números decimais e outra que sabe somar dois números hexadecimais. Essas funções são definidas como parte da chamada de Completude do Chat.

  2. Implemente essas duas funções. Elas analisam os argumentos e realizam a soma.

  3. Chame repetidamente a API da OpenAI até encontrar um motivo de "parada". Sempre que a API terminar com um motivo de "function_call", chame a função específica e passe os resultados de volta para a API.

A saída do script será:

  • 22 + 5 = 27 (decimal)
  • 27 + A = 31 (hexadecimal)
  • O resultado de adicionar 22 e 5 em decimal e, em seguida, adicionar o número hexadecimal A, é 31.

Isso mostra que o GPT usou ambas as funções para calcular o resultado final! Você pode encontrar o código desse exemplo aqui (opens in a new tab).

Esse exemplo demonstra o poder da funcionalidade de chamada de funções do OpenAI. Ela permite que os desenvolvedores definam e usem funções personalizadas, possibilitando que o modelo resolva problemas complexos que exigem etapas múltiplas e diferentes tipos de cálculos.

Outras Atualizações Recentes do ChatGPT para 13 de junho de 2023

Além da atualização para a chamada de funções da API, a OpenAI anunciou recentemente (opens in a new tab) uma série de atualizações inovadoras para seus modelos de API, introduzindo novas capacidades e versões mais controláveis do GPT-4 e do GPT-3.5-turbo. Essas atualizações estão prestes a revolucionar a forma como interagimos com modelos de IA, oferecendo funcionalidades aprimoradas e relação custo-benefício.

Aumento de Contexto para o GPT-3.5-turbo

Uma das atualizações mais notáveis é a introdução de uma nova versão de 16k de contexto do GPT-3.5-turbo. Isso significa que o modelo agora pode considerar até 16.000 tokens de histórico ao gerar respostas, melhorando significativamente sua capacidade de lidar com conversas complexas e longas. Esse aumento de contexto permite respostas mais nuanciadas e contextualmente relevantes, aprimorando a experiência geral do usuário. Isso pode representar um golpe significativo para a LangChain, mas as implicações futuras ainda estão por serem vistas.

Atualização de Preços

Os preços para o GPT-4 e o GPT-3.5-turbo também foram atualizados. O GPT-4 agora custa $0.03/1K tokens para 8K de contexto e $0.06/1K tokens para 32K de contexto. O GPT-3.5-turbo tem o preço acessível de $0.002/1K tokens. Esses preços competitivos tornam esses modelos avançados de IA mais acessíveis para desenvolvedores e empresas de todos os tamanhos.

Essas atualizações marcam uma etapa significativa na jornada da OpenAI, nos aproximando de um futuro em que os modelos de IA são mais poderosos, eficientes e acessíveis. À medida que a OpenAI continua a inovar e empurrar os limites do que é possível com a IA, podemos esperar ver desenvolvimentos ainda mais empolgantes em um futuro próximo.

Medidas de Segurança

Alinhada ao compromisso com a segurança, a OpenAI está trabalhando diligentemente para mitigar possíveis explorações. Eles aconselham os desenvolvedores a usar ferramentas confiáveis e incluir etapas de confirmação do usuário antes de realizar ações no mundo real. Isso garante que os modelos de IA sejam usados de forma responsávele que os dados do usuário estejam protegidos. Isso pode significar que suas sugestões de quebra de prisão do ChatGPT favoritas deixarão de funcionar.

Conclusão

Isso conclui nosso guia abrangente sobre a funcionalidade de chamada de funções da OpenAI. Como vimos, essa funcionalidade é uma ferramenta poderosa que pode ser usada para resolver problemas complexos e criar aplicativos mais interativos e inteligentes. À medida que a OpenAI continua a inovar e introduzir novos recursos, as possibilidades do que podemos alcançar com a IA são infinitas.

Perguntas Frequentes

  1. O que é a funcionalidade de chamada de funções da OpenAI?

    A funcionalidade de chamada de funções da OpenAI permite que os desenvolvedores descrevam uma função, e o modelo gera uma saída JSON contendo argumentos. Essa funcionalidade não chama nenhuma função em si, mas gera o JSON que pode ser usado para chamar uma função a partir do seu código.

  2. Como funciona a funcionalidade de chamada de funções da OpenAI?

    Os desenvolvedores definem funções como parte da chamada de Completude do Chat. O modelo, então, gera uma saída JSON que pode ser usada para chamar a função específica a partir do seu código. A API é chamada repetidamente até que um motivo de "parada" seja encontrado. Sempre que a API termina com um motivo de "function_call", a função específica é chamada, e os resultados são enviados de volta para a API.

  3. Quais são as aplicações da funcionalidade de chamada de funções da OpenAI?

    A funcionalidade de chamada de funções da OpenAI tem uma ampla gama de aplicações. Ela pode ser usada para criar chatbots que respondem a perguntas chamando APIs externas, converter linguagem natural em dados JSON estruturados, extrair dados estruturados de texto e resolver problemas complexos que exigem etapas múltiplas e diferentes tipos de cálculos.

📚