Function Calling
Function calling (tambem chamado de uso de ferramentas) e o recurso que permite a um LLM analisar a solicitacao de um usuario e invocar funcoes ou APIs externas em formato JSON estruturado. A OpenAI introduziu suporte oficial em junho de 2023; desde entao, Claude, Gemini e Llama passaram a oferece-lo como recurso padrao, e ele se tornou a unidade atomica das implementacoes de agentes de IA.
Function calling (tambem chamado de uso de ferramentas) e o recurso que permite a um LLM analisar a solicitacao de um usuario e invocar funcoes ou APIs externas em formato JSON estruturado. A OpenAI introduziu suporte oficial em junho de 2023; desde entao, Claude, Gemini e Llama passaram a oferece-lo como recurso padrao, e ele se tornou a unidade atomica das implementacoes de agentes de IA.
Por que isso importa
Os LLMs sao, fundamentalmente, geradores de texto. Sem function calling, perguntar "qual e o clima em Sao Paulo agora?" so consegue trazer a tona o conhecimento do momento do treinamento. Com function calling, o modelo emite get_weather(location: "Seoul") como JSON, o aplicativo host executa a API real e o resultado retorna ao modelo para a resposta final. Esse mecanismo simples e a base dos agentes de IA, da busca com IA e de todo o ecossistema do MCP.
Como funciona
- Definicoes de ferramentas: O aplicativo passa ao LLM uma lista de funcoes disponiveis: nome, descricao, schema de parametros.
- Solicitacao do usuario: O usuario insere uma pergunta em linguagem natural.
- Decisao de chamada: O LLM decide qual funcao invocar e gera os argumentos como JSON.
- Execucao real: O aplicativo host analisa o JSON e executa a funcao real. O modelo em si nao executa codigo.
- Injecao dos resultados: A saida da funcao retorna ao contexto do LLM.
- Resposta final: O LLM produz uma resposta em linguagem natural fundamentada nos resultados.
Exemplo
Definicao da ferramenta:
{
"name": "search_blog_posts",
"description": "Search blog posts by keyword",
"parameters": {
"type": "object",
"properties": {
"keyword": { "type": "string", "description": "search keyword" },
"limit": { "type": "integer", "default": 5 }
},
"required": ["keyword"]
}
}
Usuario: "Encontre 3 posts sobre GEO"
Resposta do modelo:
{
"tool_call": "search_blog_posts",
"arguments": { "keyword": "GEO", "limit": 3 }
}
Depois que o aplicativo executa a ferramenta: [{title: "...", url: "..."}, ...]
Resposta final: "Encontrei 3 posts sobre GEO..."
Function Calling vs MCP vs ReAct
| Aspecto | Function Calling | MCP | ReAct |
|---|---|---|---|
| Nivel | Protocolo de chamada de API | Protocolo padronizado de conexao de ferramentas | Padrao de prompting |
| Funcao | O modelo emite JSON para invocar uma ferramenta | Compartilhar ferramentas entre hosts/servidores diferentes | Loop de raciocinio + acao passo a passo |
| Relacao | A base do MCP | Padroniza function calling entre aplicativos | Usa function calling dentro de um loop |
Function calling e uma unica invocacao de ferramenta; o MCP e como muitos aplicativos compartilham a mesma ferramenta; o ReAct e um padrao para executar chamadas em loop com raciocinio.
Limites e pegadinhas
Risco de alucinacao: O modelo pode inventar funcoes inexistentes ou gerar argumentos ruins. A validacao rigorosa de schema e obrigatoria.
Chamadas paralelas: Modelos de fronteira (GPT-4o, Claude Opus 4.6) conseguem invocar varias funcoes em paralelo. Isso traz a gestao de dependencias.
Custo: Cada chamada expande o contexto e aumenta o gasto com tokens. Reduzir a exposicao de ferramentas melhora tanto o desempenho quanto o custo.
Seguranca: Combinado com injecao de prompt, o function calling pode amplificar os danos. Exija confirmacao do usuario para acoes arriscadas, como pagamentos ou exclusoes.
Implicacoes para GEO
Quando a busca com IA extrai informacao de um blog, ela internamente invoca funcoes como fetch_web_content, search_knowledge ou cite_source. Blogs que expoem HTML limpo e dados estruturados melhoram a qualidade dessas chamadas e aumentam a probabilidade de citacao. Em outras palavras, "um blog facil de ler para as funcoes" e um blog amigavel ao GEO.
Fontes: