Skills, Tools e Function Calling em IA
Este documento explica em profundidade como os modelos de IA modernos utilizam Skills, Tools e Function Calling para executar tarefas no mundo real, indo além da simples geração de texto.
O que são Skills e Tools?
Skills (ou Tools) são funcionalidades especializadas que estendem as capacidades dos modelos de linguagem, permitindo que eles:
- Executem ações no mundo real (enviar emails, criar arquivos, fazer deploy)
- Acessem dados externos (APIs, bancos de dados, documentos)
- Interajam com sistemas (navegadores, terminais, IDEs)
- Processem informações em tempo real (busca web, cálculos, código)
Isso transforma a IA de uma ferramenta passiva de conversação em um orquestrador ativo capaz de automatizar workflows complexos.
Function Calling: O Mecanismo Base
Function Calling é o mecanismo que permite aos modelos de IA chamar funções externas de forma estruturada.
Fluxo de Execução
1. Usuário faz uma requisição
↓
2. Modelo analisa e identifica necessidade de ferramenta
↓
3. Modelo gera chamada de função com parâmetros (JSON)
↓
4. Aplicação executa a função
↓
5. Resultado retorna ao modelo
↓
6. Modelo formula resposta em linguagem naturalExemplo Prático
// Requisição do usuário: "Qual o clima em São Paulo?"
// Modelo gera:
{
"function": "get_weather",
"parameters": {
"city": "São Paulo",
"country": "BR",
"units": "metric"
}
}
// Aplicação executa e retorna:
{
"temperature": 25,
"condition": "partly_cloudy",
"humidity": 65
}
// Modelo responde:
"O clima em São Paulo está parcialmente nublado,
com temperatura de 25°C e umidade de 65%."Implementações por Provedor
OpenAI (GPT-4, GPT-4o, o1)
A OpenAI oferece Function Calling integrado nativamente aos modelos, com suporte a:
Características:
- JSON-native outputs com seleção automática de ferramentas
- Integração profunda na arquitetura transformer
- Suporte a workflows multi-step
Agents SDK - Hosted Tools:
| Tool | Descrição |
|---|---|
WebSearchTool | Busca na web em tempo real |
FileSearchTool | Recupera informações de Vector Stores |
CodeInterpreterTool | Executa código em sandbox |
ImageGenerationTool | Gera imagens via DALL-E |
HostedMCPTool | Integração com servidores MCP |
Categorias de Tools no SDK:
- Hosted tools - Executam nos servidores da OpenAI
- Local built-in tools - Executam no seu ambiente
- Function tools - Encapsulam qualquer função local
- Agents as tools - Expõem agentes como ferramentas
- MCP servers - Model Context Protocol
- Codex tool - Tarefas de workspace (experimental)
from openai import OpenAI
from agents import Agent, WebSearchTool
agent = Agent(
name="Research Assistant",
instructions="Pesquise informações atualizadas",
tools=[WebSearchTool()]
)Anthropic Claude
O Claude utiliza Tool Use com características avançadas:
Características:
- Interleaved Thinking - Alterna entre raciocínio e uso de ferramentas em um único turno
- Parallel Tool Execution - Reduz tempo de resposta em até 60%
- Suporte a 512 declarações de função
- Compatibilidade com OpenAPI
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
tools=[
{
"name": "get_stock_price",
"description": "Obtém preço atual de ações",
"input_schema": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Símbolo da ação (ex: AAPL)"
}
},
"required": ["symbol"]
}
}
],
messages=[
{"role": "user", "content": "Qual o preço da PETR4?"}
]
)Google Gemini
O Gemini 2.5 Pro suporta Function Calling para três casos de uso principais:
- Augmentar conhecimento - Acesso a APIs e bancos de dados externos
- Estender capacidades - Calculadoras, conversores, processadores
- Executar ações - Agendar reuniões, controlar dispositivos IoT
import google.generativeai as genai
def get_exchange_rate(currency_from: str, currency_to: str) -> dict:
"""Obtém taxa de câmbio entre moedas."""
# Implementação...
return {"rate": 5.45, "from": currency_from, "to": currency_to}
model = genai.GenerativeModel(
model_name='gemini-2.5-pro',
tools=[get_exchange_rate]
)
response = model.generate_content(
"Quanto vale 100 dólares em reais?"
)Model Context Protocol (MCP)
O MCP é um protocolo aberto desenvolvido pela Anthropic (nov/2024) que padroniza como sistemas de IA se conectam a fontes de dados e ferramentas externas.
Analogia
"MCP é como uma porta USB-C para aplicações de IA" — um conector universal que padroniza interfaces.
Problema Resolvido
Antes do MCP, cada integração IA ↔ Sistema exigia código customizado (problema M×N). O MCP elimina silos de informação criando um padrão único.
Arquitetura
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ MCP Client │────▶│ MCP Protocol│────▶│ MCP Server │
│ (Claude, │ │ (JSON-RPC) │ │ (GitHub, │
│ Cursor) │◀────│ │◀────│ Slack...) │
└─────────────┘ └─────────────┘ └─────────────┘Servidores MCP Disponíveis
| Servidor | Funcionalidade |
|---|---|
@github | Repositórios, issues, PRs |
@slack | Mensagens, canais |
@google-drive | Documentos, planilhas |
@postgres | Consultas SQL |
@puppeteer | Automação de browser |
@filesystem | Leitura/escrita de arquivos |
Exemplo de Uso
// Configuração no Claude Desktop
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_xxx"
}
}
}
}Agentes de Código (Coding Agents)
Em 2025, a indústria migrou de "IA-Assistida" para "IA-Autônoma" no desenvolvimento de software.
Loop Agêntico
┌─────────────┐
│ PERCEPTION │ ← Contexto do código, estrutura, terminal
└──────┬──────┘
↓
┌─────────────┐
│ REASONING │ ← Planejamento de modificações
└──────┬──────┘
↓
┌─────────────┐
│ ACTION │ ← Execução de comandos e edições
└──────┬──────┘
↓
┌─────────────┐
│ OBSERVATION │ ← Leitura de resultados, auto-correção
└─────────────┘
↓
(loop)Comparativo de Ferramentas
| Característica | Cursor | Cline | Windsurf |
|---|---|---|---|
| Base | VS Code fork | Extensão VS Code | Editor próprio |
| Modelos | Claude, GPT | Multi-modelo | Proprietário |
| Autonomia | Média | Alta | Média |
| Custo | $20/mês | Gratuito + API | $15/mês |
| Open Source | Não | Sim | Não |
| MCP Support | Sim | Sim | Limitado |
Cursor
- Autocomplete com contexto do projeto
- Refatoração via linguagem natural
- Integração com GitHub
- Suporte a MCP servers
Cline
- Extensão open-source para VS Code
- Suporta múltiplos LLMs (Claude, GPT, Gemini, DeepSeek, modelos locais)
- Executa código, comandos de terminal, automação de browser
- Human-in-the-loop com checkpoints
Windsurf
- Editor com regras de IA programáveis
- Foco em geração de UI/componentes
- Alta customização para sugestões baseadas em regras
Criando suas Próprias Skills
Estrutura de uma Skill (OpenAI)
def create_skill():
return {
"type": "function",
"function": {
"name": "send_notification",
"description": "Envia notificação push para usuário",
"parameters": {
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "ID do usuário"
},
"title": {
"type": "string",
"description": "Título da notificação"
},
"message": {
"type": "string",
"description": "Corpo da mensagem"
},
"priority": {
"type": "string",
"enum": ["low", "normal", "high"],
"description": "Prioridade da notificação"
}
},
"required": ["user_id", "title", "message"]
}
}
}Criando um MCP Server
// server.ts
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-custom-server",
version: "1.0.0"
}, {
capabilities: {
tools: {}
}
});
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "calculate_tax",
description: "Calcula impostos brasileiros",
inputSchema: {
type: "object",
properties: {
value: { type: "number" },
tax_type: { type: "string", enum: ["ICMS", "ISS", "PIS", "COFINS"] }
},
required: ["value", "tax_type"]
}
}]
}));
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "calculate_tax") {
const { value, tax_type } = request.params.arguments;
// Lógica de cálculo...
return { content: [{ type: "text", text: `Imposto: R$ ${result}` }] };
}
});
const transport = new StdioServerTransport();
await server.connect(transport);Casos de Uso Práticos
1. Automação de Atendimento
- Consulta CRM para histórico do cliente
- Processa pagamentos
- Agenda callbacks
- Resultado: 90% das queries resolvidas mais rápido
2. Análise de Dados
- Conecta a data warehouses
- Executa queries SQL
- Gera visualizações
- Exporta relatórios
3. DevOps Automatizado
- Monitora logs e métricas
- Executa deploys
- Gerencia infraestrutura via Terraform
- Responde a alertas
4. Pesquisa e Documentação
- Busca em múltiplas fontes
- Sintetiza informações
- Gera documentação técnica
- Mantém bases de conhecimento
Melhores Práticas
Design de Skills
- Descrições claras - O modelo depende da descrição para escolher a skill correta
- Parâmetros bem definidos - Use tipos específicos e enums quando possível
- Tratamento de erros - Retorne mensagens úteis em caso de falha
- Idempotência - Skills que modificam estado devem ser seguras para re-execução
Segurança
- Princípio do menor privilégio - Skills devem ter acesso mínimo necessário
- Validação de entrada - Nunca confie nos parâmetros sem validar
- Rate limiting - Proteja contra uso excessivo
- Audit logging - Registre todas as execuções de skills
Performance
- Timeout adequado - Defina limites de tempo realistas
- Caching - Cache resultados quando apropriado
- Async quando possível - Não bloqueie o modelo desnecessariamente
Recursos e Documentação
Documentação Oficial
- OpenAI Function Calling
- OpenAI Agents SDK
- Anthropic Tool Use
- Model Context Protocol
- Gemini Function Calling
Repositórios
- MCP Servers - 78k+ stars
- OpenAI Agents Python
- Cline - Extensão open-source
Conclusão
Skills e Tools representam a evolução dos LLMs de geradores de texto para agentes autônomos. Com Function Calling, MCP e SDKs modernos, é possível construir sistemas de IA que:
- Integram-se com qualquer API ou serviço
- Automatizam workflows complexos
- Mantêm contexto entre interações
- Executam tarefas no mundo real
A tendência é clara: IA como orquestradora, não apenas assistente.