MÓDULO 4.2

🧰 Skills e Ferramentas

BaseTool, auto-discovery, Google Workspace, GitHub e como criar tools customizadas.

6
Tópicos
60
Minutos
Interm.
Nível
Prático
Tipo
1

🔧 BaseTool — O Contrato

BaseTool é a interface que torna o sistema de ferramentas extensível. Quatro atributos obrigatórios e o LLM já sabe como usar a ferramenta.

📌 Interface BaseTool

  • name: str — identificador único ('google_calendar')
  • description: str — para o LLM decidir quando usar
  • parameters: dict — JSON Schema dos argumentos
  • async execute(**kwargs) -> str — implementação
  • O registry.py descobre tools automaticamente em tools/

💡 Dica Prática

Escreva a description como se fosse para um humano inteligente. O LLM lê exatamente isso para decidir quando chamar a tool.

2

🔍 Registry e Descoberta Automática

O registry.py usa reflexão Python para descobrir automaticamente todas as classes que estendem BaseTool. Zero código manual de registro.

📌 Como o Auto-Discovery Funciona

  • Escaneia todos os arquivos em tools/*.py
  • Importa cada módulo com importlib.import_module()
  • Inspeciona classes com inspect.getmembers()
  • Filtra por subclasses de BaseTool com issubclass()
  • Instancia e registra em tool_registry dict

💡 Dica Prática

Coloque uma tool em tools/ e reinicie o Jarvis. Ela aparece disponível automaticamente. Sem editar Agent, sem editar registry manual.

3

📅 Google Workspace

A integração com Google Workspace conecta o Jarvis à infraestrutura mais comum de produtividade do mundo. Calendar, Drive, Gmail e Sheets em ferramentas nativas.

📌 Tools do Google Workspace

  • GoogleCalendarTool: criar, listar, atualizar e cancelar eventos
  • GoogleDriveTool: upload, download, busca e compartilhamento
  • GmailTool: ler, enviar, arquivar e categorizar e-mails
  • GoogleSheetsTool: ler e escrever em planilhas
  • Autenticação: OAuth2 com token refresh automático

💡 Dica Prática

Use service accounts para automação sem interação humana. Para uso pessoal, OAuth2 com token salvo no .secrets é mais simples.

4

🐙 GitHub Integration

A GitHubTool transforma o Jarvis em um colaborador de desenvolvimento. Issues, PRs, commits e code search via API.

📌 Capacidades do GitHub

  • Listar e criar issues com labels e assignees
  • Revisar PRs: ver diffs, comentar, aprovar ou requestar mudanças
  • Buscar código por padrão em repositório específico
  • Fazer commits simples (ex: atualizar arquivo de config)
  • Verificar status de CI/CD no último commit

💡 Dica Prática

Configure o GITHUB_TOKEN com scope mínimo necessário. Para read-only, use apenas 'repo:read'. Para escrita, adicione 'repo' completo.

5

🌐 BrowserTool — Web Scraping

BrowserTool usa Playwright headless para dar ao Jarvis acesso à web em tempo real. Pesquisar, extrair e navegar com aprovação do usuário.

📌 Capacidades do Browser

  • web_search(): busca em DuckDuckGo ou Google com resultados estruturados
  • fetch_page(): extrai texto de qualquer URL (com injection detection)
  • take_screenshot(): captura visual de páginas para análise
  • fill_form(): preenche formulários com aprovação explícita
  • Todas as ações passam pelo approval gate nível 2

💡 Dica Prática

Sempre passe conteúdo de páginas web pelo injection scanner antes de adicionar ao contexto. Páginas maliciosas podem conter indirect injection.

6

⚡ Criando Tools Customizadas

O modelo de extensão do INTELECTO é deliberadamente simples. Menos de 50 linhas para transformar qualquer API em uma ferramenta do Jarvis.

📌 Template de Tool em 5 Passos

  • 1. Criar tools/minha_tool.py
  • 2. from intelecto.tools.base import BaseTool
  • 3. class MinhaTool(BaseTool):
  • 4. Definir name, description, parameters (JSON Schema)
  • 5. async def execute(**kwargs) -> str: # sua lógica

💡 Dica Prática

O parâmetro description é o mais importante. Escreva como uma docstring de função: o que faz, quando usar, o que retorna. O LLM lê literalmente.

Resumo do Módulo 4.2

BaseTool — O Contrato — 4 atributos + execute() — o LLM usa description para decidir quando e como chamar
Registry e Descoberta Automática — Reflexão Python + importlib = auto-discovery zero-config
Google Workspace — Calendar, Drive, Gmail e Sheets — integração completa com OAuth2 automático
GitHub Integration — Issues, PRs, commits e code search — Jarvis como colaborador de dev
BrowserTool — Web Scraping — Playwright headless com safety wrapper — acesso à web real com proteção
Criando Tools Customizadas — Template de 50 linhas — qualquer API REST vira uma tool em minutos

Próximo:

4.3 Automação e Webhooks