PTENES
MÓDULO 4.2

🧰 Skills y herramientas

BaseTool, autodiscovery, Google Workspace, GitHub y cómo crear tools personalizadas.

6
Temas
60
Minutos
Interm.
Nivel
Práctico
Tipo
1

🔧 BaseTool — el contrato

BaseTool es la interfaz que hace extensible el sistema de herramientas. Cuatro atributos obligatorios y el LLM ya sabe cómo usar la herramienta.

📌 Interfaz BaseTool

  • •name: str — identificador único ('google_calendar')
  • •description: str — para que el LLM decida cuándo usarla
  • •parameters: dict — JSON Schema de los argumentos
  • •async execute(**kwargs) -> str — implementación
  • •registry.py descubre tools automáticamente en tools/

💡 Consejo práctico

Escribe la description como si fuera para una persona inteligente. El LLM lee exactamente eso para decidir cuándo llamar a la tool.

2

🔍 Registry y descubrimiento automático

registry.py usa reflexión de Python para descubrir automáticamente todas las clases que extienden BaseTool. Cero código manual de registro.

📌 Cómo funciona el Auto-Discovery

  • •Escanea todos los archivos en tools/*.py
  • •Importa cada módulo con importlib.import_module()
  • •Inspecciona clases con inspect.getmembers()
  • •Filtra por subclases de BaseTool con issubclass()
  • •Instancia y registra en el dict tool_registry

💡 Consejo práctico

Coloca una tool en tools/ y reinicia Jarvis. Aparecerá disponible automáticamente. Sin editar Agent ni modificar el registry manualmente.

3

📅 Google Workspace

La integración con Google Workspace conecta Jarvis con la infraestructura de productividad más común del mundo. Calendar, Drive, Gmail y Sheets en herramientas nativas.

📌 Tools de Google Workspace

  • •GoogleCalendarTool: crear, listar, actualizar y cancelar eventos
  • •GoogleDriveTool: subir, descargar, buscar y compartir archivos
  • •GmailTool: leer, enviar, archivar y categorizar correos electrónicos
  • •GoogleSheetsTool: leer y escribir en hojas de cálculo
  • •Autenticación: OAuth2 con actualización automática del token

💡 Consejo práctico

Usa cuentas de servicio para automatizar sin interacción humana. Para uso personal, OAuth2 con un token guardado en .secrets es más sencillo.

4

🐙 Integración con GitHub

La GitHubTool convierte a Jarvis en un colaborador de desarrollo. Issues, PRs, commits y búsqueda de código vía API.

📌 Capacidades de GitHub

  • •Listar y crear issues con labels y assignees
  • •Revisar PRs: ver diffs, comentar, aprobar o solicitar cambios
  • •Buscar código por defecto en un repositorio específico
  • •Hacer commits simples (ej.: actualizar un archivo de configuración)
  • •Verifica el estado de CI/CD en el último commit

💡 Consejo práctico

Configura GITHUB_TOKEN con el scope mínimo necesario. Para solo lectura, usa únicamente 'repo:read'. Para escribir, agrega 'repo' completo.

5

🌐 BrowserTool — Web Scraping

BrowserTool usa Playwright headless para darle a Jarvis acceso web en tiempo real. Investigar, extraer y navegar con la aprobación del usuario.

📌 Capacidades del browser

  • •web_search(): busca en DuckDuckGo o Google con resultados estructurados
  • •fetch_page(): extrae texto de cualquier URL (con detección de inyección)
  • •take_screenshot(): captura visual de páginas para análisis
  • •fill_form(): completa formularios con aprobación explícita
  • •Todas las acciones pasan por el approval gate de nivel 2

💡 Consejo práctico

Siempre pasa el contenido de las páginas web por el escáner de inyección antes de agregarlo al contexto. Las páginas maliciosas pueden contener indirect injection.

6

⚡ Creación de Tools personalizadas

El modelo de extensión de INTELECTO es deliberadamente simple. Menos de 50 líneas para convertir cualquier API en una herramienta de Jarvis.

📌 Plantilla de tool en 5 pasos

  • •1. Crear 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

💡 Consejo práctico

El parámetro description es el más importante. Escríbelo como una docstring de función: qué hace, cuándo usarlo y qué devuelve. El LLM lo lee literalmente.

✅ Resumen del Módulo 4.2

✓
BaseTool — El contrato — 4 atributos + execute() — el LLM usa description para decidir cuándo y cómo llamar
✓
Registro y descubrimiento automático — Reflexión Python + importlib = auto-discovery sin configuración
✓
Google Workspace — Calendar, Drive, Gmail y Sheets — integración completa con OAuth2 automático
✓
GitHub Integration — Issues, PRs, commits y code search — Jarvis como colaborador de desarrollo
✓
BrowserTool — Web scraping — Playwright headless con safety wrapper — acceso a la web real con protección
✓
Creando Tools personalizadas — Template de 50 líneas — cualquier API REST se convierte en una tool en minutos

Siguiente:

4.3 Automatización y webhooks