Kaique Mitsuo Silva Yamamoto
Ia

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 natural

Exemplo 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:

ToolDescrição
WebSearchToolBusca na web em tempo real
FileSearchToolRecupera informações de Vector Stores
CodeInterpreterToolExecuta código em sandbox
ImageGenerationToolGera imagens via DALL-E
HostedMCPToolIntegração com servidores MCP

Categorias de Tools no SDK:

  1. Hosted tools - Executam nos servidores da OpenAI
  2. Local built-in tools - Executam no seu ambiente
  3. Function tools - Encapsulam qualquer função local
  4. Agents as tools - Expõem agentes como ferramentas
  5. MCP servers - Model Context Protocol
  6. 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:

  1. Augmentar conhecimento - Acesso a APIs e bancos de dados externos
  2. Estender capacidades - Calculadoras, conversores, processadores
  3. 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

ServidorFuncionalidade
@githubRepositórios, issues, PRs
@slackMensagens, canais
@google-driveDocumentos, planilhas
@postgresConsultas SQL
@puppeteerAutomação de browser
@filesystemLeitura/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ísticaCursorClineWindsurf
BaseVS Code forkExtensão VS CodeEditor próprio
ModelosClaude, GPTMulti-modeloProprietário
AutonomiaMédiaAltaMédia
Custo$20/mêsGratuito + API$15/mês
Open SourceNãoSimNão
MCP SupportSimSimLimitado

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

  1. Descrições claras - O modelo depende da descrição para escolher a skill correta
  2. Parâmetros bem definidos - Use tipos específicos e enums quando possível
  3. Tratamento de erros - Retorne mensagens úteis em caso de falha
  4. Idempotência - Skills que modificam estado devem ser seguras para re-execução

Segurança

  1. Princípio do menor privilégio - Skills devem ter acesso mínimo necessário
  2. Validação de entrada - Nunca confie nos parâmetros sem validar
  3. Rate limiting - Proteja contra uso excessivo
  4. Audit logging - Registre todas as execuções de skills

Performance

  1. Timeout adequado - Defina limites de tempo realistas
  2. Caching - Cache resultados quando apropriado
  3. Async quando possível - Não bloqueie o modelo desnecessariamente

Recursos e Documentação

Documentação Oficial

Repositórios


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.