🔗 Proveedores de IA
OpenRouter (100+ modelos), Ollama local, interfaz BaseProvider, failover multiproveedor y selección de modelo por tarea.
OpenRouter es un gateway de LLMs que reúne más de 100 modelos con una sola clave de API y facturación unificada.
Elimina la dependencia de un proveedor. Cambiar de Claude a GPT-4o es cambiar una cadena de configuración.
API key, enrutamiento de modelos, seguimiento de costos, límites de solicitudes por modelo.
Ollama ejecuta modelos como Llama 3, Mistral y Gemma 2 localmente, sin enviar datos a APIs externas.
Para datos sensibles o uso intensivo, Ollama elimina el costo de API y garantiza la privacidad total de los datos.
Inferencia local, cuantización, formato GGUF, longitud de contexto, aceleración por GPU.
BaseProvider define async chat(messages) -> str como único método obligatorio. El agente nunca accede directamente a los LLM.
Cualquier LLM que implemente BaseProvider funciona con el Agent sin cambios. ¿Agregar Anthropic directamente? 20 líneas.
Clase base abstracta, interfaz async, normalización del formato de mensaje, manejo de errores.
ProviderChain intenta con el proveedor principal y, si falla, pasa al secundario. Es transparente para el Agent.
Las APIs de LLM tienen interrupciones. Sin failover, tu asistente queda desconectado cuando el proveedor deja de funcionar. Con failover, sigue funcionando.
Circuit breaker, lógica de reintentos, prioridad de providers, comprobación de estado, cadena de fallback.
Las distintas tareas tienen distintas necesidades: el código necesita un modelo técnico, para los resúmenes se puede usar un modelo económico y el razonamiento complejo requiere el modelo más capaz.
Usar GPT-4o para todo es costoso y lento. El enrutamiento inteligente reduce los costos entre un 60 y un 80 % sin una pérdida perceptible de calidad.
Clasificación de tareas, enrutamiento de modelos, optimización de costos, equilibrio entre calidad y velocidad.
cost_tracker.py monitorea los tokens consumidos por sesión, por modelo y por día, y envía alertas cuando se alcanzan los umbrales.
Los LLM pueden generar costos inesperados rápidamente. La supervisión proactiva evita sorpresas en la factura y ciclos costosos.
Recuento de tokens, costo por modelo, presupuesto diario, umbrales de alerta, desglose de costos.
🧰 Skills y herramientas
Sistema de herramientas con BaseTool, descubrimiento automático mediante registry.py, Google Workspace, GitHub y creación de herramientas personalizadas.
BaseTool define: name (identificador), description (lo que hace la tool — se envía al LLM), parameters (JSON Schema de los argumentos) y async execute(**kwargs) -> str.
El LLM usa description y parameters para decidir cuándo y cómo llamar a la tool. Una description bien redactada es tan importante como la implementación.
Llamadas a funciones, JSON Schema, docstring como documentación, convenciones de formato de retorno.
registry.py examina el directorio tools/ y descubre automáticamente todas las clases que extienden BaseTool. Agregar una nueva tool = crear el archivo. Sin cambios en el Agent.
Sin registro automático, agregar una herramienta exige modificar el Agent. Con el registry, creas la herramienta y aparece disponible automáticamente en la siguiente ejecución.
Arquitectura de plugins, descubrimiento automático, importlib, introspección de clases.
GoogleCalendarTool permite crear, listar y actualizar eventos. GoogleDriveTool permite subir, descargar y buscar archivos. Autenticación mediante OAuth2 con actualización automática del token.
Para usuarios de Google Workspace, integrar Jarvis con Calendar y Drive crea un asistente que realmente administra tu agenda y tus documentos.
Flujo de OAuth2, cuenta de servicio, cuota de API, renovación de token, solicitudes por lotes.
GitHubTool permite crear y cerrar issues, revisar PRs, hacer commits y buscar código por semántica en el repositorio. Usa GitHub API con un token de acceso personal.
Un Jarvis integrado con GitHub puede responder «¿cuál es el estado del PR #123?», crear issues a partir de errores reportados en la conversación y hacer commits de correcciones sencillas.
GitHub API, personal access token, webhook events, code search, PR review automation.
BrowserTool usa Playwright para la navegación headless. Permite buscar en la web, extraer contenido de páginas y completar formularios con la aprobación del usuario.
Un Jarvis sin acceso a la web queda limitado a su entrenamiento. BrowserTool da acceso a información actualizada y permite automatizar tareas web repetitivas.
Playwright, navegador headless, extracción de contenido, contenedor de safety, ejecución de JavaScript.
Crear una tool: (1) crear el archivo en tools/minha_tool.py, (2) extender BaseTool, (3) definir name, description, parameters, (4) implementar execute(). El registry la detecta automáticamente.
El modelo de extensión de INTELECTO es deliberadamente simple. Cualquier API REST, servicio web o script local puede convertirse en una tool con menos de 50 líneas de código.
Patrón de herencia, ejecución asíncrona, manejo de errores, formato de string de retorno, anotaciones de tipos.
⚙ Automatización y Webhooks
Programación con Cron, Heartbeat para verificaciones periódicas, webhooks (n8n, Zapier), subagentes y colaboración entre agentes.
cron.py de INTELECTO permite programar tareas con el formato cron estándar. Jarvis puede generar un informe diario a las 9h, revisar correos cada 30min o hacer una copia de seguridad semanal.
Un Jarvis verdaderamente proactivo no espera a que lo llamen: actúa en el momento adecuado. Cron transforma al asistente de reactivo a proactivo.
Expresión cron, scheduler de asyncio, persistencia de tareas, manejo de zonas horarias y recuperación de errores.
Heartbeat es un loop periódico que verifica condiciones configuradas: ¿dejó de funcionar una API de terceros? ¿Falló el deploy? ¿La memoria de la base de datos superó el límite? Envía alertas proactivas.
El monitoreo reactivo (te enteras cuando el usuario se queja) es inaceptable para la infraestructura. El heartbeat convierte a Jarvis en un monitor activo.
Health checks, threshold monitoring, alert fatigue prevention, escalation policy.
webhook_server.py expone endpoints HTTPS que reciben eventos externos. n8n o Zapier envían eventos (nuevo lead, correo recibido, issue abierta) que activan acciones de Jarvis.
Los webhooks conectan Jarvis con el ecosistema de automatización existente. No necesitas reescribir los flujos que ya existen — solo agregas Jarvis como un paso inteligente.
FastAPI, verificación de firma HMAC, encolamiento de eventos, idempotencia, gestión de reintentos.
Los subagentes son instancias del Agent que se ejecutan en segundo plano para tareas que llevan minutos u horas. El Jarvis principal puede crear subagentes para investigar, compilar o analizar.
Sin subagentes, las tareas largas bloquean Jarvis para otras conversaciones. Con subagentes, el usuario puede seguir conversando mientras el trabajo se realiza en paralelo.
Tareas de asyncio, cola de tareas, notificación del progreso, cancelación y agregación de resultados.
Varios agentes especializados colaboran mediante mensajes: @coder genera el código, @reviewer analiza y @deployer hace el deploy. Cada agente tiene un SOUL.md especializado.
Un solo agente generalista es menos eficaz que varios especialistas que colaboran. El patrón TinyClaw permite combinar agentes para tareas complejas.
Mensajería entre agentes, especialización de roles, transferencia de trabajo, mecanismo de consenso, orquestación.
metrics.py recopila: latencia por request, tokens consumidos, tools llamadas, errores por tipo. Dashboard vía Telegram o endpoint HTTP con las métricas actuales.
Sin observabilidad, no sabes por qué Jarvis es lento o costoso. Las métricas permiten optimizar con datos en lugar de intuición.
Recopilación de métricas, seguimiento de latencia, tasa de errores, costo por acción, diseño del dashboard.