Pressione Esc para fechar

Agentes - Function Calling

← Voltar para o Dia 7: Agentes

Function Calling

O que é

Function Calling é o nome que a OpenAI deu, em 2023, ao recurso que permite ao LLM gerar uma chamada estruturada para uma função definida pelo desenvolvedor.

Na prática, Function Calling e Tool Calling são o mesmo conceito. "Function Calling" foi o termo original; "Tool Calling" se tornou o termo mais geral, porque uma ferramenta pode ser uma função, uma API, uma busca na web, um interpretador de código etc.

Function Calling  ≈  Tool Calling
(termo original)     (termo atual e mais amplo)

Como funciona

O desenvolvedor descreve a função com nome, descrição e parâmetros:

def buscar_pedido(numero: str) -> dict:
    """Busca os dados de um pedido pelo número."""
    ...

Essa função é apresentada ao modelo como um schema. Quando o usuário pergunta algo relacionado, o modelo devolve:

{
  "name": "buscar_pedido",
  "arguments": "{\"numero\": \"12345\"}"
}

O código da aplicação lê essa saída, chama buscar_pedido("12345") de verdade e devolve o resultado ao modelo.

Usuário → LLM → JSON com função e argumentos
                         ↓
               Código executa a função
                         ↓
               Resultado volta ao LLM
                         ↓
                     Resposta

Um exemplo

Usuário: "Qual o status do pedido 12345?"
   ↓
LLM: buscar_pedido(numero="12345")
   ↓
Resultado: {"status": "enviado", "previsao": "05/11"}
   ↓
LLM: "Seu pedido foi enviado e deve chegar em 05/11."

O mesmo recurso também é usado sem agente nenhum, apenas para extrair dados estruturados de um texto (por exemplo, transformar um e-mail em um objeto com nome, data e assunto).

Por que é importante

Function Calling resolveu um problema antigo: fazer o modelo devolver saídas confiáveis e estruturadas que um programa consegue processar, em vez de texto livre difícil de interpretar.

Ele também conecta diretamente com Structured Output e JSON Schema, vistos no Dia 2.

Em entrevistas, vale saber explicar que:

  • o modelo não executa a função;
  • a aplicação é responsável por validar argumentos e tratar erros;
  • é preciso cuidado com permissões, porque o modelo pode pedir a função errada ou com argumentos inesperados.

link de compartilhamento