MODULO 3.2

๐Ÿ”ง Tool Use e Function Calling

Conecte LLMs a ferramentas externas: APIs, bancos de dados, calculadoras e sistemas reais.

6
Topicos
30
Minutos
Avancado
Nivel
Integracao
Tipo
1

๐Ÿ”ง Conceito de Tool Use

Tool use (ou function calling) e o paradigma onde o LLM nao apenas gera texto, mas decide quando e qual ferramenta externa chamar para resolver a tarefa do usuario. O modelo analisa a intencao, seleciona a funcao apropriada, gera os argumentos e interpreta o resultado.

๐Ÿ”„ Fluxo de Tool Use

1 Usuario faz uma pergunta que requer dados externos (ex.: "Qual o clima em Sao Paulo?")
2 O modelo identifica que precisa chamar uma ferramenta e gera um JSON com nome da funcao + argumentos
3 Sua aplicacao executa a funcao real (API call) e retorna o resultado ao modelo
4 O modelo interpreta o resultado e gera uma resposta natural para o usuario

๐Ÿ“Š APIs de Tool Use por Provedor

  • โ€ข OpenAI: tools parameter com type: "function" โ€” suporta chamadas paralelas
  • โ€ข Anthropic: tools array com input_schema em JSON Schema โ€” suporta tool_choice
  • โ€ข Google: function_declarations com suporte a grounding e code execution
2

๐Ÿ“ Function Calling Schema

O schema da funcao e o contrato que diz ao modelo o que a ferramenta faz e quais parametros aceita. Um schema bem definido e a diferenca entre o modelo usar a tool corretamente ou gerar chamadas invalidas.

๐Ÿ“ Estrutura de um Schema

{

"name": "get_weather",

"description": "Obtem a previsao do tempo atual para uma cidade",

"parameters": {

"type": "object",

"properties": {

"city": { "type": "string", "description": "Nome da cidade" },

"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] }

},

"required": ["city"]

}

}

๐Ÿ’ก Boas Praticas de Schema

  • โ€ข Nomes descritivos: search_products em vez de sp
  • โ€ข Descricoes ricas: Explique quando usar, nao apenas o que faz
  • โ€ข Enums quando possivel: Restrinja valores validos para evitar erros
  • โ€ข Required explicito: Marque campos obrigatorios para evitar chamadas incompletas
3

๐Ÿ“ Descricao de Ferramentas

A descricao da ferramenta e o fator mais critico para o modelo decidir quando usa-la. Descricoes vagas levam a chamadas incorretas ou a ferramentas sendo ignoradas quando deveriam ser usadas.

โœ— Descricoes Ruins

  • โœ— "Busca dados" โ€” vago demais, quando usar?
  • โœ— "Funcao de calculo" โ€” qual tipo de calculo?
  • โœ— "Processa input" โ€” nao diz o que retorna
  • โœ— Descricao identica para tools diferentes

โœ“ Descricoes Boas

  • โœ“ "Busca produtos no catalogo por nome, categoria ou faixa de preco"
  • โœ“ "Calcula frete com base em CEP de origem, destino e peso em kg"
  • โœ“ "Converte moedas usando taxa de cambio em tempo real"
  • โœ“ Cada tool com escopo claro e distinto

๐ŸŽฏ Disambiguation

Quando voce tem tools parecidas, a descricao deve deixar claro quando usar cada uma:

  • โ€ข search_products: "Use quando o usuario quer encontrar ou comparar produtos. NAO use para verificar status de pedido."
  • โ€ข get_order_status: "Use quando o usuario pergunta sobre um pedido existente (envio, entrega, rastreamento). Requer order_id."
4

๐Ÿ”„ Orquestracao de Chamadas

Em cenarios reais, uma unica interacao pode exigir multiplas chamadas de ferramentas. Orquestrar essas chamadas โ€” decidir a ordem, gerenciar dependencias e manter o estado โ€” e essencial para construir aplicacoes robustas.

Seq

Chamadas Sequenciais

O resultado de uma chamada alimenta a proxima. Ex.: buscar usuario โ†’ buscar pedidos do usuario โ†’ calcular frete.

Quando usar: Quando ha dependencia de dados entre as chamadas.

Par

Chamadas Paralelas

Multiplas chamadas independentes ao mesmo tempo. Ex.: buscar clima + buscar noticias + buscar cotacao โ€” tudo simultaneamente.

Quando usar: Quando as chamadas nao dependem umas das outras. Reduz latencia significativamente.

Cnd

Chamadas Condicionais

O modelo decide se precisa chamar outra tool com base no resultado anterior. Ex.: se produto esta em estoque, calcular frete; senao, sugerir alternativas.

Quando usar: Quando o fluxo depende de condicoes dinamicas.

โš ๏ธ Cuidado com Context Window

Cada chamada de ferramenta e seu resultado consomem tokens da janela de contexto. Em fluxos complexos com muitas chamadas, voce pode atingir o limite. Estrategias: resumir resultados intermediarios, limitar dados retornados, usar paginacao.

5

โš ๏ธ Tratamento de Erros

Ferramentas externas falham. APIs ficam fora do ar, parametros sao invalidos, timeouts acontecem. Um sistema robusto precisa lidar com essas falhas de forma elegante, sem expor erros tecnicos ao usuario final.

๐Ÿ›ก๏ธ Estrategias de Error Handling

  • โ€ข Retry com backoff: Tentar novamente com espera exponencial (1s, 2s, 4s) para erros transientes como timeout
  • โ€ข Fallback tools: Se a API principal falha, usar uma alternativa. Ex.: se a API de clima falha, retornar dados em cache
  • โ€ข Mensagem amigavel: Informar o usuario que o servico esta temporariamente indisponivel, sem expor stack traces
  • โ€ข Logging estruturado: Registrar cada chamada, parametros, resposta e tempo para debug posterior

๐Ÿ’ก Como Informar o Modelo sobre Erros

Quando uma tool falha, retorne um resultado estruturado que ajude o modelo a reagir adequadamente:

{ "error": true,

"error_type": "service_unavailable",

"message": "API de clima indisponivel",

"suggestion": "Informe ao usuario e sugira tentar novamente em alguns minutos" }

6

๐Ÿงช Exercicio: Integrar uma API

Neste exercicio, voce vai criar um schema completo de tools para um assistente que combina uma API de clima com uma calculadora. O objetivo e praticar a definicao de schemas, descricoes claras e orquestracao.

๐Ÿ“‹ Requisitos do Exercicio

  • โ€ข Tool 1 โ€” get_weather: Recebe cidade e unidade (celsius/fahrenheit), retorna temperatura, condicao e umidade
  • โ€ข Tool 2 โ€” calculate: Recebe expressao matematica como string, retorna o resultado numerico
  • โ€ข Tool 3 โ€” convert_unit: Recebe valor, unidade de origem e unidade de destino (temperatura, distancia, peso)

๐ŸŽฏ Teste seu Schema

  • 1. Escreva o JSON Schema completo para cada uma das 3 tools
  • 2. Teste com estas perguntas: "Qual o clima em Tokyo em Fahrenheit?", "Quanto e 15% de 340?", "Converta 100km para milhas"
  • 3. Teste um cenario de orquestracao: "Qual a diferenca de temperatura entre SP e NY em Celsius?"
  • 4. Simule um erro (API fora do ar) e verifique se o modelo reage adequadamente

๐Ÿ“ Resumo do Modulo

โœ“
Tool use e o modelo decidindo โ€” O LLM escolhe quando e qual ferramenta chamar, gera argumentos e interpreta resultados
โœ“
Schema e o contrato โ€” JSON Schema com nome, descricao, parametros tipados e required
โœ“
Descricoes fazem a diferenca โ€” Descricoes claras e disambiguation evitam chamadas incorretas
โœ“
Orquestracao de chamadas โ€” Sequencial, paralela e condicional conforme as dependencias
โœ“
Erros sao inevitaveis โ€” Retry, fallback, mensagens amigaveis e logging estruturado

Proximo Modulo:

3.3 โ€” RAG (Retrieval-Augmented Generation): combine busca em documentos com geracao