Saltar al contenido principal
Nivel: Intermedio · Etiquetas: IA, Streaming, Telegram, Rendimiento Funcionalidades: autoresponder en streaming (stream) · estrategias por canal: borradores, ediciones, trozos · “escribiendo…” mientras genera · provider de Telegram · coste y latencia · probar streams con MockProvider

Requisitos

  • Node.js 22.12 o superior.
  • Un token de bot de Telegram de @BotFather en TELEGRAM_TOKEN.
  • Una API key de Anthropic en ANTHROPIC_API_KEY (u otro proveedor de modelos, ver más abajo).

El bot

Cómo funciona

  • Una opción. stream hace que el autoresponder envíe la respuesta con ctx.stream() mientras el modelo la genera. El mismo código elige la mejor estrategia para cada canal:
  • cursor se muestra al final del texto mientras se escribe y nunca en el mensaje final. canStop añade al borrador el botón de parar de Telegram: pulsarlo aborta la petición al modelo, así dejas de pagarla.
  • Escribiendo. humanizeTyping (activo por defecto) muestra “escribiendo…” hasta que llegan las primeras palabras.
  • Las herramientas desactivan el streaming. Un turno que puede llamar a herramientas necesita la respuesta completa antes, así que con tools configuradas la respuesta va en un solo mensaje.

Consejos de coste y latencia

Responde lo obvio sin el modelo (comandos, triggers de bot.when(), flujos) y mira Coste y latencia para el resto.

Pruébalo

El simulador no tiene borradores ni ediciones, así que muestra la estrategia de “trozos” que usa WhatsApp: la respuesta llega en mensajes del tamaño de una frase. Esta ejecución sigue un guion en el test que ejecuta esta página (packages/ai/tests/docs-examples-ai.test.ts), que además ejecuta el bot sobre un provider simulado parecido a Telegram y comprueba que allí la respuesta llega como un borrador que crece.

Otros proveedores de modelos

Todos los proveedores hacen streaming. Deja las demás opciones como están.OpenAI (npm install openai, key en OPENAI_API_KEY):
Gemini (npm install @google/genai, key en GEMINI_API_KEY):
Ollama en tu máquina (sin paquete ni key; antes ejecuta ollama pull llama3.1): el primer token llega sin pasar por la red, y no hay límite de salida salvo que pongas maxTokens.

Ejecutarlo en Telegram o WhatsApp

Pon el token y la key en un archivo .env junto a bot.js (TELEGRAM_TOKEN=... y ANTHROPIC_API_KEY=...), ejecuta node --env-file=.env bot.js y escribe a tu bot en Telegram. Para WhatsApp, instala @botmesh/baileys y arranca la fábrica con new BaileysProvider({ session: 'pantry-bot' }): el mismo código envía la respuesta en trozos con “escribiendo…”.

Siguientes pasos