Chamada de Ferramentas (Function Calling)
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:
- 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.
- Alucinações de argumentos: O modelo inventava nomes de parâmetros que não existiam na API real.
- 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
toole o identificadortool_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:
- 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.
- 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. - 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.
- 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_codeefind_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")eread_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.
FAQ: Chamada de Ferramentas (Function Calling)
Termos relacionados
MCP (Model Context Protocol)
Padrão aberto da Anthropic baseado em JSON-RPC 2.0 para conexão bidirecional unificada de assistentes de IA a ferramentas externas, bancos de dados e ambientes do sistema.
Agentes de IA (Agentes Autônomos)
Sistemas de software baseados em LLMs, capazes de perceber autonomamente o estado do ambiente, decompor objetivos complexos, invocar ferramentas externas e corrigir iterativamente os seus próprios erros.
Padrão ReAct (Raciocínio + Ação)
Padrão algorítmico fundamental para agentes autônomos que alterna entre etapas de raciocínio interno (Thought), execução de ferramentas externas (Action) e análise dos resultados obtidos (Observation).
Guardrails & Safety Rails
Camada de software composta por filtros determinísticos, validadores de esquema e políticas de segurança que interceptam prompts de entrada, comandos do sistema e respostas dos modelos para prevenir falhas, vazamentos e exploits.