---
title: "Function calling: como fazer um LLM agir, não só responder"
description: "Function calling (tool use) é o que transforma um modelo de linguagem de tagarela em agente que executa. Como funciona, como projetar boas ferramentas e os erros que quebram em produção."
slug: function-calling-llm-que-age
lang: pt
date: 2026-07-22
updated: 2026-07-22
author: Lucas Silva
category: deep-dive
tags: [Function Calling, Tool Use, LLM, Agentes de IA, Engenharia de IA]
reading_time: 9
featured: false
faq:
  - q: "O que é function calling?"
    a: "Function calling (ou tool use) é a capacidade de um modelo de linguagem decidir chamar funções/APIs externas durante uma conversa. Em vez de só gerar texto, o LLM devolve uma requisição estruturada ('chame buscar_pedido com id=123'), o seu código executa e devolve o resultado, e o modelo continua a conversa com esse dado real. É o que transforma um chatbot em agente que age."
  - q: "Qual a diferença entre function calling e um agente de IA?"
    a: "Function calling é o mecanismo; o agente é o sistema. O agente usa function calling como sua 'mão' para agir no mundo — consultar sistemas, criar registros, processar pagamentos — combinado com memória, contexto e lógica de negócio. Sem tools, um agente só conversa."
  - q: "O LLM executa a função sozinho?"
    a: "Não. O modelo apenas decide e propõe qual função chamar e com quais argumentos. Quem executa é o seu código, que valida os argumentos, roda a operação e devolve o resultado ao modelo. Essa separação é crucial: o LLM pode alucinar, mas a camada de execução valida e controla."
---

Um modelo de linguagem, sozinho, só sabe fazer uma coisa: gerar texto. Ele é um conversador brilhante e um executor nulo. Pergunte a ele qual o seu saldo bancário e, sem ajuda, ele vai inventar um número convincente — porque gerar texto plausível é literalmente tudo que ele faz. **Function calling é a ponte entre esse conversador e o mundo real.** É o mecanismo que transforma "IA que fala" em "IA que faz".

Se você quer construir agentes que resolvem — e não chatbots que empurram o cliente pro portal — precisa entender isso a fundo.

## O que é, de verdade

Function calling (também chamado de *tool use*) é a capacidade do modelo de, no meio de uma conversa, decidir que precisa de uma ferramenta externa e pedir para usá-la. O fluxo é este:

1. Você diz ao modelo quais **ferramentas** existem (nome, descrição, parâmetros).
2. Na conversa, o modelo percebe que precisa de uma delas e, em vez de responder texto, devolve uma **chamada estruturada**: `buscar_pedido(id: "123")`.
3. **O seu código executa** essa função de verdade — consulta o banco, chama a API — e devolve o resultado ao modelo.
4. O modelo usa esse dado real para continuar a conversa: "Seu pedido 123 saiu para entrega hoje."

O ponto que muita gente erra: **o LLM não executa nada.** Ele só decide *o quê* chamar e *com quais argumentos*. Quem executa — e valida — é você. Essa separação é a espinha dorsal de um agente seguro.

## Por que isso muda tudo

Sem tools, o teto de um LLM é dar informação genérica e, na pior das hipóteses, alucinar. Com tools, ele passa a operar sobre a **realidade do seu negócio**: os dados reais do cliente, o estoque real, o pagamento real. A conversa deixa de ser sobre o problema e passa a resolver o problema.

É exatamente essa a diferença que separa [um agente de IA de um chatbot](https://www.lucassilva.io/blog/agente-de-ia-vs-chatbot). O chatbot diz "para segunda via, acesse o portal". O agente chama `gerar_segunda_via(cliente_id)`, recebe o boleto e manda o PIX na conversa. Mesma pergunta, categorias de software completamente diferentes — e a diferença é function calling bem-feito.

## Como projetar boas ferramentas

A qualidade do seu agente depende mais do design das ferramentas do que do modelo. Princípios que eu sigo:

**Descrições que o modelo entende.** A `description` de cada ferramenta é um prompt. "Busca informações" é ruim; "Busca o status de entrega de um pedido pelo número do pedido" é bom. O modelo escolhe a ferramenta lendo isso — seja específico.

**Parâmetros tipados e mínimos.** Peça exatamente o que a função precisa, com tipos claros. Menos parâmetros, menos chance do modelo errar o preenchimento. Enums quando os valores são fixos.

**Ferramentas atômicas, não canivetes suíços.** Uma ferramenta que faz cinco coisas dependendo de um parâmetro `acao` confunde o modelo. Prefira `abrir_chamado`, `consultar_chamado`, `fechar_chamado` separados. Cada uma faz uma coisa bem.

**Retornos que o modelo consegue usar.** Devolva dados estruturados e concisos. Um JSON gigante gasta contexto e confunde. Devolva o essencial para a próxima decisão.

## Os erros que quebram em produção

Vi (e cometi) todos estes:

- **Confiar nos argumentos do modelo sem validar.** O LLM pode alucinar um `cliente_id` que não existe, ou um valor negativo. **Sua camada de execução valida tudo** antes de agir. Regra inegociável.
- **Ferramentas irreversíveis sem confirmação.** `transferir_dinheiro` não pode ser chamada só porque o modelo achou que era uma boa ideia. Ações que mudam o mundo de forma irreversível exigem confirmação explícita do usuário e log.
- **Loop infinito de tools.** O modelo chama, o resultado o faz chamar de novo, e ele entra em ciclo. Coloque um limite de chamadas por turno e observabilidade pra detectar.
- **Sem log das chamadas.** Se você não registra qual ferramenta foi chamada, com quais argumentos e qual resultado, você não debuga nada quando der errado. E vai dar.

## A regra de ouro

Eu resumo assim: **o LLM é o cérebro que decide; a camada de ferramentas é o corpo que age com responsabilidade.** O cérebro pode divagar, hesitar, até alucinar. O corpo — o seu código — não pode. Ele valida cada intenção, confirma o que é perigoso, executa o que é seguro, e registra tudo.

Function calling é o que faz IA sair da tela e tocar o negócio. Mas é também onde mora o risco. Fazer bem essa camada é a diferença entre um agente que você confia em produção e um que você não deveria ter ligado.

---

*Construo agentes de IA que agem de verdade — com function calling seguro, integrado aos sistemas do negócio. Se você quer sair do chatbot e ter IA que executa, [vamos conversar](https://www.lucassilva.io).*
