PTENES
MÓDULO 5.1

🤖 Jarvis: Tu asistente personal

Imagina tener un pasante que vive dentro de tu chat: le envías un mensaje, lo entiende, realiza una tarea y responde. En este módulo vas a crear tu propio asistente de IA en Telegram, conectado a un modelo como Claude o GPT, funcionando las 24 horas del día en tu servidor.

6
Temas
45
Minutos
Básico
Nivel
Práctico
Tipo
1

Qué es un asistente personal de IA

Un asistente personal de IA es un programa que recibe tus mensajes, piensa usando un modelo de lenguaje y ejecuta tareas. Ya conoces ChatGPT en el navegador. La diferencia aquí es que el asistente vive en TU chat (Telegram), responde las 24 horas del día y puede hacer cosas de verdad: consultar el pronóstico del tiempo, guardar una nota, crear un recordatorio. No solo conversa: actúa.

🧠 Analogía: el pasante que vive en el chat

Piensa en un pasante muy dedicado. Le mandas un mensaje por el chat: "averigua cuánto falta para la reunión". Lo lee, entiende, revisa la agenda y te responde. No necesitas explicarle cómo buscar en la agenda: ya lo sabe. Tu asistente de IA es exactamente eso, pero digital y disponible a cualquier hora.

  • •Envías: un mensaje en lenguaje natural ("resume este texto por mí")
  • •Piensa: el modelo de IA interpreta lo que quieres
  • •Actúa: usa una herramienta (una "tool") si la necesitas
  • •Responde: envía la respuesta de vuelta al chat

💡 ¿Por qué "Jarvis"?

Jarvis es el asistente de Iron Man en las películas: hablas, entiende y actúa. Tu Jarvis no va a pilotar una armadura, pero te ayudará en el día a día. El concepto es el mismo: un asistente que escucha en lenguaje natural y ejecuta. Descubrirás que crear uno es más sencillo de lo que parece: basta con juntar tres piezas (un chat, un cerebro y algunas herramientas).

2

La arquitectura básica

Todo asistente sigue el mismo flujo de cuatro etapas: el bot recibe el mensaje, el modelo de IA piensa, las herramientas se ejecutan y la respuesta vuelve. Entender este recorrido hace que todo sea más fácil, porque cada pieza que armes en los próximos temas encaja en este esquema.

👤 Tú Telegram el chat Bot tu código LLM Claude / GPT piensa tool: tiempo tool: nota herramientas la respuesta vuelve por el mismo camino

👁 Las cuatro etapas, en orden

  • 1.Recibe: envías "¿qué hora es en Tokyo?" por Telegram. El bot (tu código) recibe ese texto.
  • 2.Piensa: el bot envía tu mensaje al modelo de IA. El modelo entiende la intención.
  • 3.Ejecuta: si necesita datos externos, el modelo pide usar una herramienta (ej.: consultar la hora).
  • 4.Responde: la respuesta final vuelve por el bot hasta tu chat en Telegram.

💡 Consejo: tres piezas, nada más

En el fondo, todo el asistente cabe en tres piezas: el chat (Telegram, donde ocurre la conversación), el cerebro (el LLM, que piensa) y las herramientas (funciones que ejecutan acciones). Si siempre sabes qué pieza estás modificando, nunca te perderás en el código.

3

Crear el bot en Telegram

Telegram tiene una forma oficial y gratuita de crear bots: el BotFather. Es un bot que crea bots. Hablas con él, le pones un nombre a tu asistente y recibes un token (una contraseña única que le da a tu código el control del bot). Sin el token, tu código no puede enviar ni recibir mensajes.

1

Abre BotFather

En Telegram, busca @BotFather (el oficial tiene una insignia azul de verificado). Haz clic en "Iniciar".

2

Crea el bot

Envía el comando y responde las preguntas: nombre visible y nombre de usuario (debe terminar en «bot»).

/newbot

# BotFather pregunta el nombre:

Mi Jarvis

# Y el username (debe terminar en "bot"):

meu_jarvis_bot

3

Guarda el token

BotFather responde con el token. Se ve así (cópialo y guárdalo con cuidado):

Use this token to access the HTTP API:

7891234567:AAH4k_exemplo-de-token-NAO-use-o-real

Polling (más sencillo)

Tu código le pregunta a Telegram «¿hay algún mensaje nuevo?» cada cierto tiempo. No necesitas dominio ni HTTPS. Es ideal para empezar y para ejecutarlo en el VPS.

  • ✓Se ejecuta en cualquier lugar
  • ✓Configuración de red cero

Webhook (más avanzado)

Telegram avisa a tu servidor cada vez que llega un mensaje. Es más eficiente, pero requiere una dirección pública con HTTPS. Déjalo para después.

  • ✓Respuesta instantánea
  • ✓Menos uso de red

⚠️ Error común

Problema: "Pegué el token en un archivo y lo subí a GitHub. Ahora se filtró."
Solución: El token es una contraseña. Quien lo tenga controla tu bot. Nunca pongas el token directamente en el código ni en un repositorio público. Usa un archivo .env (lo verás en el tema 6) y agrega .env no .gitignore. Si se filtró, contacta con BotFather y usa /revoke para generar un token nuevo.

4

Conectar el Cerebro: Claude o GPT

Ahora tu bot necesita un cerebro. En vez de programar reglas como «si el mensaje es X, responde Y», envías el mensaje del usuario a un modelo de IA (Claude de Anthropic o GPT de OpenAI) y te devuelve la respuesta. Técnicamente, esto es una llamada a la API: tu código envía una solicitud por Internet y recibe la respuesta.

El bot que solo responde (todavía sin IA)

Empieza de forma sencilla: recibe un mensaje y repítelo. Aquí en Python con la biblioteca python-telegram-bot.

# instalar la biblioteca

$ pip install python-telegram-bot anthropic

import os

from telegram.ext import Application, MessageHandler, filters

async def responder(update, ctx):

    texto = update.message.text

    await update.message.reply_text("Dijiste: " + texto)

🤖 Ahora con el cerebro de IA

En vez de repetir el texto, envías el mensaje al modelo y devuelves lo que responde. La «API key» es la contraseña que da acceso al modelo (se obtiene en console.anthropic.com o platform.openai.com).

from anthropic import Anthropic

cliente = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

async def responder(update, ctx):

    resp = cliente.messages.create(

        model="claude-3-5-haiku-latest",

        max_tokens=500,

        messages=[{"role": "user",

            "content": update.message.text}])

    texto = resp.content[0].text

    await update.message.reply_text(texto)

O prompt y es el contenido que envías; la respuesta viene en resp.content[0].text.

👁 Qué vas a ver en el chat

# Tú en Telegram:

Tú: explica qué es Git en una frase

# El bot (cerebro de IA) responde:

Jarvis: Git es un sistema que guarda el

historial de tu código, permitiéndote

volver en el tiempo y trabajar en equipo.

💡 Consejo: empieza con el modelo barato

Cada llamada a la API cuesta dinero (centavos, pero se acumulan). Mientras pruebas y cometes errores, usa un modelo pequeño y económico (como Haiku o GPT-mini). Cuando el asistente esté bien ajustado, cambias una línea (el nombre del modelo) por uno más potente. Así no gastas de más mientras aprendes.

5

Skills y comandos

Hasta aquí tu Jarvis solo conversa. Para que ejecutar acciones, creas comandos. En Telegram, los comandos empiezan con una barra: /start, /ajuda, /nota. Cada comando apunta a una función de tu código. Es la forma más sencilla de darle "skills" (habilidades) a tu asistente.

Mapear /comando a una acción

Registras un CommandHandler para cada comando. Cuando el usuario escribe /nota comprar pao, la función recibe el texto y actúa.

from telegram.ext import CommandHandler

async def cmd_start(update, ctx):

    await update.message.reply_text("¡Hola! Soy Jarvis.")

async def cmd_nota(update, ctx):

    texto = " ".join(ctx.args)

    salvar_nota(texto)  # tu función

    await update.message.reply_text("Nota salva: " + texto)

app.add_handler(CommandHandler("start", cmd_start))

app.add_handler(CommandHandler("nota", cmd_nota))

👁 Qué vas a ver en el chat

Tú: /nota comprar pan y leche

Jarvis: Nota guardada: comprar pan y leche

Tú: /ajuda

Jarvis: Comandos: /nota, /tempo, /lembrete

✓ Qué HACER

  • ✓Crear siempre uno /ajuda que enumera los comandos
  • ✓Dar nombres cortos y claros (/tempo, /nota)
  • ✓Confirmar la acción con una respuesta ("Nota guardada")

✗ Qué NO hacer

  • ✗Crear 20 comandos antes de que el bot funcione
  • ✗Nombres confusos (/xpt2)
  • ✗Dejar al usuario sin comentarios (el silencio parece que algo se rompió)

💡 Consejo: comandos en el menú de Telegram

Vuelve a BotFather y usa /setcommands para registrar la lista de comandos. Así, cuando el usuario escribe "/" en el chat, aparece un menú atractivo con los comandos disponibles. Es un detalle que hace que tu Jarvis parezca profesional.

6

Deploy: funcionando 24/7 en el VPS

Tu Jarvis solo responde mientras el código está en ejecución. En tu computadora, se detiene cuando cierras la terminal o apagas el equipo. Para responder a cualquier hora, necesita estar alojado en un VPS (el servidor de la Trilha 3) y ejecutarse como un servicio de systemd, que se inicia solo y se reinicia si se cae.

Paso 1: Sube el código y crea el .env

En el VPS, el archivo .env guarda los tokens fuera del código.

$ nano .env

# dentro del archivo:

TELEGRAM_TOKEN=7891234567:AAH...

ANTHROPIC_API_KEY=sk-ant-...

# y protégelo para que nadie lo lea

$ chmod 600 .env

Paso 2: Crea el servicio de systemd

Crea el archivo /etc/systemd/system/jarvis.service.

[Unit]

Description=Jarvis Bot

After=network.target

[Service]

WorkingDirectory=/home/deploy/jarvis

EnvironmentFile=/home/deploy/jarvis/.env

ExecStart=/usr/bin/python3 bot.py

Restart=always

[Install]

WantedBy=multi-user.target

Paso 3: Enciéndelo y mira cómo funciona

# vuelve a cargar la lista de servicios

$ sudo systemctl daemon-reload

# lo activa ahora y también al iniciar el sistema

$ sudo systemctl enable --now jarvis

# verifica el estado

$ sudo systemctl status jarvis

● jarvis.service - Jarvis Bot

   Active: active (running)

⚠️ Error común

Problema: "El servicio no inicia y el estado dice failed."
Solución: Casi siempre es una ruta incorrecta o una variable faltante. Revisa los logs con journalctl -u jarvis -n 50. Comprueba si el WorkingDirectory existe, si el .env tiene los dos tokens y si la ruta de Python es correcta (prueba con which python3).

✓ Qué HACER

  • ✓Guardar tokens en el .env, nunca en el código
  • ✓Usar Restart=always para volver a levantarlo si se cae
  • ✓Observar journalctl cuando algo salga mal

✗ Qué NO hacer

  • ✗Ejecutar con python bot.py en la terminal y cerrar la sesión
  • ✗Hacer commit del .env en Git
  • ✗Olvidar el enable (no se inicia después de un reinicio)

🏆 ¡Felicitaciones!

Si llegaste hasta aquí, tienes un asistente de IA que vive en tu Telegram, piensa con Claude o GPT, ejecuta comandos y funciona las 24 horas del día en tu servidor. Este es el esqueleto de cualquier asistente. En el próximo módulo, profundizarás en el cerebro de tu Jarvis y le darás una memoria y un razonamiento más ricos.

📚 Resumen del módulo

✓
Un asistente de IA es un pasante en el chat - recibe, piensa, ejecuta y responde
✓
Arquitectura de tres piezas - chat (Telegram), cerebro (LLM) y herramientas (tools)
✓
BotFather y token - crea el bot en Telegram y usa polling para empezar
✓
Llamada a la API de Claude/GPT - envía el prompt, recibe la respuesta, la devuelve en el chat
✓
Comandos y deploy 24/7 - /comando para acciones y systemd en el VPS con tokens en .env

Siguiente módulo:

5.2 - Intelecto: dar memoria y un razonamiento más profundo a tu asistente de IA