Function Calling (Tool Use)
A chamada de funções, ou uso de ferramentas, permite que um modelo de linguagem solicite uma função externa com argumentos JSON, que a aplicação executa e cujo resultado retorna.
A chamada de função, também chamada de chamada de ferramenta ou uso de ferramenta, é a capacidade de um modelo de linguagem grande (LLM) responder com uma solicitação para executar uma função externa, em vez de texto simples. O aplicativo descreve cada ferramenta disponível com um nome, uma finalidade e um esquema JSON para seus argumentos. Quando uma solicitação exige dados em tempo real ou uma ação, o modelo responde com o nome da ferramenta e argumentos JSON, o aplicativo executa a função e o modelo redige a resposta com base no resultado. O modelo nunca executa nada por conta própria. O Toolformer da Meta mostrou em fevereiro de 2023 que um modelo podia aprender a inserir chamadas de API no próprio texto, e a OpenAI adicionou chamadas de função à sua API em 13 de junho de 2023, com modelos ajustados para detectar quando uma função é necessária e formatar argumentos compatíveis com sua assinatura. Hoje, todos os principais provedores de modelos oferecem esse recurso, e os modelos abertos o aprendem por meio do ajuste fino de instruções e de modelos de chat.
Como funciona a chamada de função#
Uma chamada de ferramenta é uma ida e volta entre o modelo e o aplicativo, repetida até que o modelo tenha o que precisa:
O código abaixo simula os dois lados de uma ida e volta no formato do guia de chamadas de função da OpenAI, com a resposta do modelo escrita diretamente para que o código seja executado sem uma chave de API.
import json
from jsonschema import validate
# A definição da ferramenta enviada com o pedido: um nome, uma finalidade e um JSON Schema para os argumentos
tool = {
"type": "function",
"name": "get_order_status",
"description": "Look up the shipping status of an order by its number.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string", "pattern": "^[0-9]+$"}},
"required": ["order_id"],
},
}
# A saída do modelo é uma chamada de função cujos argumentos chegam como uma string JSON
call = {"type": "function_call", "call_id": "call_1", "name": "get_order_status", "arguments": '{"order_id": "4417"}'}
args = json.loads(call["arguments"])
validate(args, tool["parameters"]) # Gera um erro antes de executar qualquer coisa se os argumentos não respeitarem o esquema
# A aplicação executa a própria função e devolve o resultado com o mesmo call_id
orders = {"4417": "Shipped, arriving Thursday"}
print({"type": "function_call_output", "call_id": call["call_id"], "output": orders[args["order_id"]]})Imprime {'type': 'function_call_output', 'call_id': 'call_1', 'output': 'Shipped, arriving Thursday'}, o item que a aplicação acrescenta à conversa antes de chamar o modelo novamente. Definir "strict": true numa ferramenta faz com que a API aplique decodificação restrita, para que os argumentos gerados pelo modelo correspondam sempre ao esquema.
Escolher e encadear ferramentas#
Os modelos podem emitir várias chamadas independentes numa única interação, por exemplo, verificar duas encomendas ao mesmo tempo, e uma aplicação pode forçar uma ferramenta específica, exigir uma ferramenta ou proibir ferramentas durante uma interação. Encadear chamadas entre interações, em que cada resultado determina a chamada seguinte, é o ciclo que transforma um modelo num agente de IA executado num ambiente de execução de agentes. O Berkeley Function Calling Leaderboard avalia estas competências: escolher a função certa, preencher os argumentos, fazer chamadas paralelas e em várias interações, e recusar quando nenhuma ferramenta é adequada. Como os resultados das ferramentas regressam ao modelo como entrada, uma página Web ou um documento obtido por uma ferramenta pode conter uma injeção de prompt; por isso, as aplicações concedem às ferramentas apenas os privilégios necessários e pedem a confirmação de uma pessoa antes de fazer compras, eliminar dados ou enviar mensagens.
Os modelos de visão são ferramentas naturais porque a respetiva saída já está estruturada. Em Ultralytics YOLO, Results.summary() devolve cada objeto detetado por um modelo YOLO26 como um dicionário com o nome da classe, o índice da classe, a confiança e as coordenadas da caixa; json.dumps transforma diretamente essa lista num resultado de ferramenta, para que um modelo de chat ou um modelo de visão e linguagem (VLM) possa contar e localizar objetos numa fotografia através de uma chamada ao modo de previsão.
Chamadas de função e termos relacionados#
- Agentes de utilização de computadores: Operam software através de capturas de ecrã, cliques e teclas, o que permite utilizar aplicações sem API. Quando existe uma API, uma chamada de função obtém o mesmo resultado com um único pedido estruturado.
- Saídas estruturadas: Restringem a resposta final de um modelo a um esquema, por exemplo, para extrair campos de uma fatura. As chamadas de função usam os mesmos esquemas para pedir uma ação e esperam receber um resultado.
- Geração aumentada por recuperação (RAG): Acrescenta documentos recuperados ao prompt. Uma ferramenta de pesquisa pode implementar RAG, e a RAG agêntica permite que o modelo decida quando pesquisar e o que pesquisar.
- Protocolo de Contexto do Modelo (MCP): Um protocolo aberto, apresentado pela Anthropic em novembro de 2024, através do qual as aplicações descobrem ferramentas disponibilizadas por programas externos. O modelo continua a invocar uma ferramenta MCP através de chamadas de função.










