Skip to main content

Chamada de Ferramentas (Function Calling)

PARA AGENTES DE IAChatGPTClaude

Mecanismo de baixo nível dos modelos de linguagem que permite gerar com segurança parâmetros validados em formato JSON para a execução de funções em um ambiente de software externo.

1. Visão geral do conceito e problema sistêmico

Nos estágios iniciais do desenvolvimento de modelos de linguagem, os engenheiros tentavam fazer a IA interagir com APIs usando prompts comuns: «Se você precisar de informações, gere um JSON no formato {"action": "search", "query": "..."}».

Essa abordagem quebrava regularmente em produção:

  1. Falhas sintáticas de JSON: O modelo adicionava comentários aleatoriamente, omitia aspas, inseria vírgulas finais (trailing commas) ou misturava texto explicativo com código.
  2. Alucinações de argumentos: O modelo inventava nomes de parâmetros que não existiam na API real.
  3. Parsing não confiável: O backend precisava escrever expressões regulares frágeis para extrair blocos de código das respostas textuais.

O Native Tool Calling (Function Calling) transferiu o trabalho com ferramentas da esfera do prompting não confiável para o nível da arquitetura do modelo e do protocolo da API: o modelo é treinado em tokens de serviço específicos e interpreta as ferramentas como contratos determinísticos de chamada de sistema.

2. Taxonomia arquitetural e modelo mental

O padrão moderno de invocação de ferramentas baseia-se em três entidades fundamentais do protocolo:

  • 1. Tool Definition (Declaração do contrato): O desenvolvedor envia, junto ao prompt, um array de descrições das ferramentas disponíveis seguindo o padrão JSON Schema: nome da função, seu propósito semântico (usado pelo LLM para seleção) e tipagem estrita dos parâmetros (properties, required, enum).
  • 2. Tool Call Payload (Intenção estruturada): Em vez de gerar uma resposta textual (content: null), o modelo forma um array de chamadas: tool_calls: [{ id: "call_xyz", type: "function", function: { name: "get_user", arguments: "{\"user_id\": 42}" } }].
  • 3. Tool Response Injection (Retorno do resultado): O backend executa a função e injeta o resultado no contexto como uma mensagem especial com a role tool e o identificador tool_call_id.
  • 4. Modos de invocação de ferramentas:
    • auto: o modelo decide autonomamente se responde com texto ou invoca uma/várias ferramentas.
    • required: o modelo é obrigado a invocar pelo menos uma ferramenta antes da resposta final.
    • tool_choice: { type: "function", name: "..." }: invocação forçada de uma ferramenta específica.

3. Pipeline técnico e mecânica interna

O ciclo de vida da execução de uma requisição utilizando a tecnologia Tool Calling:

  1. Schema Translation & Grammar Compilation (Preparação dos schemas): O cliente envia as descrições das ferramentas para a API do provedor (Anthropic, OpenAI). Os schemas são convertidos para o formato interno de atenção do modelo.
  2. Inference & Intent Activation (Inferência e ativação da chamada): O modelo analisa a solicitação do usuário. Se decidir aplicar uma ferramenta, a geração de texto é bloqueada e o modelo ativa a geração do bloco estruturado tool_calls.
  3. Dispatcher Execution (Despachante assíncrono): O backend do cliente recebe o sinal de chamada, valida os argumentos (por exemplo, via Pydantic ou Zod), executa a função alvo no banco de dados ou sistema e serializa o resultado em string.
  4. Final Synthesis (Síntese final da resposta): O resultado obtido é adicionado ao histórico do diálogo. O modelo realiza um último passe de inferência, lê o resultado da execução da função e formula uma resposta compreensível para o usuário.

4. Cenários de engenharia prática em produção

01. Operações determinísticas com banco de dados e CRM

O usuário escreve: «Mude o status do pedido #1042 para 'enviado'». Em vez de gerar texto bruto perigoso, o modelo invoca a função update_order_status(order_id=1042, new_status="shipped"). O backend verifica as permissões de acesso do usuário e executa uma consulta parametrizada segura.

02. Leitura paralela da base de código em IDEs modernas

Um agente de código como o Cursor, durante a análise de um bug, gera em um único passo 5 chamadas paralelas à ferramenta read_file para diferentes arquivos do repositório. O cliente lê todos os arquivos paralelamente em 100 ms e os retorna ao modelo simultaneamente, evitando 5 ida-e-volta sequenciais à API.

03. Calculadora hardware para cálculos matemáticos complexos

Os modelos frequentemente erram ao multiplicar números grandes ou calcular percentuais financeiros. Com o Tool Calling, o modelo delega o cálculo a uma função precisa em Python, recebe o resultado sem erros e o retorna ao usuário com total exatidão matemática.

5. Armadilhas, erros comuns e segurança

  • Ambiguidade semântica nas descrições (Ambiguous Tool Descriptions): Se houver duas funções semelhantes registradas no sistema (search_code e find_in_files) com descrições vagas, o modelo escolherá a ferramenta errada aleatoriamente ou ficará preso na incerteza. Escreva instruções cristalinas sobre quando exatamente cada ferramenta deve ser selecionada.
  • Race Conditions em chamadas paralelas: Se o modelo gerar chamadas simultâneas delete_file("a.txt") e read_file("a.txt"), a execução dessincronizada causará um erro. O backend deve garantir uma ordem determinística de processamento para chamadas paralelas.
  • Overhead de contexto dos schemas (Schema Context Tax): A descrição de 30 ferramentas complexas pode ocupar até 10.000 tokens em cada requisição, aumentando significativamente o custo operacional. Utilize a tecnologia Prompt Caching para armazenar em cache o bloco de ferramentas ou filtre dinamicamente as ferramentas disponíveis conforme a etapa da tarefa.
/ Perguntas FrequentesSchema.org FAQPage

FAQ: Chamada de Ferramentas (Function Calling)

Não. O modelo é apenas um gerador probabilístico de texto e tokens. Ele gera uma intenção estruturada (Intent): o nome da função e argumentos válidos em formato JSON. A execução física do código (consultas ao banco de dados, curl, cálculos matemáticos) é realizada pelo backend da aplicação do desenvolvedor, que então retorna o resultado ao modelo.
/ Links internos
Todos os termos