He creado un "Jarvis" personal en Telegram con Llama 3 y Python (Open Source) y os enseño cómo montarlo 🤖


Onru420

Miembro muy activo
¡Buenas a todos!

Quería compartir con la comunidad un proyecto en el que he estado trabajando. Estaba harto de tener 5 apps distintas para organizarme (calendario, to-do list, apps de finanzas para las suscripciones, etc.), así que he programado mi propio asistente personal integrado directamente en Telegram.

Lo he diseñado para que funcione de forma casi invisible. Le mando un audio rápido por Telegram mientras voy por la calle y él se encarga de entender el contexto y hacer el trabajo sucio.

🚀 ¿Qué hace exactamente?​

  1. Gestión por Voz con IA (Zero-Click): Usa Llama 3 (a través de la API de Groq, que es gratuita y rapidísima) para extraer "intenciones". Si le digo: "Añade una cita con el dentista mañana a las 5", "Añade comprar pan a las tareas" o "He pasado la ITV del coche", el bot detecta el comando exacto y actualiza mis bases de datos en tiempo real.
  2. El "Briefing" Matutino: Todos los días a las 09:00 AM me manda un resumen gigante con:
    • Mi agenda del calendario de Google.
    • Tráfico actual en el área metropolitana (TomTom API) y Clima (wttr.in).
    • Finanzas: Precio del S&P 500 y Bitcoin (Yahoo Finance + CoinGecko).
    • Tareas pendientes del día.
  3. Control Financiero: Le mando un audio con mis suscripciones y me avisa siempre 2 días antes de que me pasen un recibo por el banco.
  4. Asistente de Vehículo: Vigila mi coche. Me manda alertas 15, 7 y 1 días antes de tener que renovar la ITV, el seguro o pagar el impuesto de circulación.

🛠️ Stack Tecnológico​

  • Lenguaje: Python 3
  • Bot Framework: python-telegram-bot (versión 20+)
  • NLP / Cerebro: Groq API (Llama 3 8B)
  • Despliegue: Preparado con Dockerfile para subir a Render (Free Tier) o cualquier VPS.

📖 Guía de Implementación (Paso a Paso)​

He dejado el código abierto en mi GitHub para que cualquiera pueda usarlo. La configuración lleva unos 10 minutos y el despliegue es 100% gratuito.

Paso 1: Conseguir tus Claves API (Todas gratis)​

Vas a necesitar 4 datos clave para que el bot funcione. Aquí te explico dónde sacar cada uno en 2 minutos:

  1. TELEGRAM_BOT_TOKEN: Abre Telegram, busca al usuario @BotFather. Escríbele /newbot, dale un nombre a tu bot y te dará un token largo (ej. 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11).
  2. USER_CHAT_ID: Para que el bot solo te obedezca a ti y nadie más pueda leer tus tareas. Busca en Telegram al bot @userinfobot, mándale un mensaje y te devolverá tu ID numérico (ej. 123456789).
  3. GROQ_API_KEY (El Cerebro de IA): Entra en console.groq.com, regístrate gratis, ve al menú izquierdo "API Keys" y dale a "Create API Key". Esto nos da acceso a Llama 3 a una velocidad absurda.
  4. TOMTOM_API_KEY (Tráfico): Entra en el Portal de Desarrolladores de TomTom, crea una cuenta gratuita. Ve a tu Dashboard, haz clic en tu perfil > "Keys", y copia la Key que viene por defecto ("My First App").

Paso 2: Despliegue en Render (Gratis y 24/7)​

Para no tener que tener tu PC encendido todo el día, vamos a subirlo a Render, que tiene un servidor gratuito ideal para bots de Python.

  1. Haz un Fork del código: Ve a mi repositorio de GitHub (https://github.com/jarvistelegrambot/asistentepersonal2) y haz clic en "Fork" para copiártelo a tu propia cuenta.
  2. Configura Render:
    • Entra en render.com y regístrate con tu GitHub.
    • Haz clic en "New" -> "Web Service" (o Background Worker si lo prefieres).
    • Selecciona "Build and deploy from a Git repository" y conecta el Fork que acabas de crear.
  3. Ajustes de despliegue:
    • Ponle un nombre (ej. mi-bot-personal).
    • Runtime: Python 3
    • Build Command: pip install -r requirements.txt
    • Start Command: python main.py
    • Instance Type: Elige el plan gratuito (Free).
  4. Variables de Entorno (Crucial):
    • Haz scroll hacia abajo hasta "Environment Variables" y dale a "Add Environment Variable".
    • Tienes que añadir todas las claves que conseguimos en el Paso 1:
      • TELEGRAM_BOT_TOKEN = Tu token de BotFather
      • GROQ_API_KEY = Tu clave de Groq
      • TOMTOM_API_KEY = Tu clave de TomTom
      • USER_CHAT_ID = Tu ID numérico
      • USER_NAME = Tu nombre (para que el bot te salude)
      • TIMEZONE = Europe/Madrid (o tu franja horaria)
      • CITY_NAME = Tu ciudad para el clima (ej. Barcelona)
      • TRAFFIC_BBOX = Coordenadas de tu zona para TomTom (opcional, por defecto es Madrid).
  5. ¡Desplegar!
    • Dale a "Create Web Service". Verás una consola negra bajando los paquetes de Python. En unos minutos pondrá "Your service is live".
    • Abre Telegram, háblale a tu bot, pon /resumen y... ¡Magia! Ya tienes a tu propio Jarvis funcionando.

Paso 3: (Opcional) Conectar tu Google Calendar​

Si quieres que el bot te lea la agenda y te añada citas, hay que hacer un pequeño paso extra antes de subirlo a Render, ya que requiere pedirle permisos a Google.

  1. Obtener Credenciales de Google:
    • Ve a Google Cloud Console.
    • Crea un proyecto nuevo y busca "Google Calendar API" en la barra superior. Dale a habilitar.
    • Ve a "Pantalla de consentimiento de OAuth" y configúrala como "Externa" (añade tu propio correo como usuario de prueba).
    • Ve a "Credenciales" -> "Crear credenciales" -> "ID de cliente de OAuth".
    • Elige tipo de aplicación: App de escritorio.
    • Se te descargará un archivo JSON. Renómbralo exactamente a credentials.json y mételo en la carpeta de tu bot.
  2. Generar el Token Localmente:
    • ¡Atención! Este paso hay que hacerlo en tu propio ordenador (no en Render).
    • Ejecuta el bot en tu PC con python main.py.
    • Se te abrirá una pestaña en el navegador pidiéndote iniciar sesión con tu cuenta de Google. Acepta los permisos.
    • En tu carpeta se habrá creado un archivo nuevo llamado token.json.
  3. Subirlo a Render (El Truco):
    • Como Render es un servidor en la nube y no tiene navegador web para iniciar sesión, he preparado el código para saltarnos este problema.
    • Abre el archivo token.json que acabas de generar con el Bloc de Notas y copia todo el texto que hay dentro.
    • Ve a tu panel de Render, entra en las Variables de Entorno (Environment Variables) donde pusimos las APIs, y crea una nueva:
      • Key: GOOGLE_TOKEN_JSON
      • Value: (Pega aquí todo el texto gigante que copiaste del token.json)
    • ¡Listo! Cuando Render arranque, el bot leerá esa variable secreta, reconstruirá el archivo en la nube él solo y se conectará a tu calendario.

Es un proyecto hiper modular, podéis crear nuevos "Servicios" fácilmente copiando la estructura de todo_service.py o vehicle_service.py. Cualquier duda o Pull Request es súper bienvenida. ¡Os leo!
 
  • Like
Reacciones : Black_wolf.es

inknot8x

Miembro muy activo
Nodero
Noder
Me gusta, ademas que he visto algun video que otro de esto. Mi recomendacion (cosa que yo tambien estoy intentando mejorar), es que no abuses de IA. En este tipo de programa no creo que cause ningun problema grave, pero si en un futuro quieres construir algo que contenga datos de usuarios andate con ojo que la IA parace que lo hace todo bien, pero te la meten doblada por cualquier lado. Pero mola mucho lo que has hecho jefe