Saltar al contenido principal
Nivel: Avanzado · Etiquetas: IA, Flujos, Enrutado por intención, WhatsApp, Telegram Funcionalidades: ctx.tools.ai.generate() · replyInChat() con historial del chat · flujos con validación y menús · iniciar un flujo desde código (bot.trigger) · handler catch-all · coste y latencia

Requisitos

  • Node.js 22.12 o superior.
  • Una API key de Anthropic en la variable de entorno ANTHROPIC_API_KEY (u otro proveedor de modelos, ver más abajo).

El bot

Cómo funciona

  • El modelo clasifica, tu código decide. clasificar() pide una etiqueta con ctx.tools.ai.generate(), una llamada sin historial ni persona. La respuesta se limpia y se comprueba contra INTENCIONES; cualquier cosa inesperada cae en charla, así un modelo confundido nunca puede iniciar un flujo que no esté en la lista.
  • El dinero sigue siendo determinista. El flujo de pago valida el número de cuenta, ofrece un menú fijo y arma la confirmación en código. El modelo nunca ve el número de cuenta ni decide el importe.
  • bot.trigger() inicia el flujo. Se puede hacer await desde un handler del mismo chat: corre en el turno de ese mensaje. Después el flujo atiende los mensajes siguientes, igual que si el usuario hubiera escrito su nombre.
  • La charla guarda historial. replyInChat(chatKeyOf(ctx), text) lee y guarda el historial de IA del chat y usa la persona del plugin. Con autoReply: false el plugin no añade su propio catch-all.
  • Nunca en silencio. Un error del modelo (sin key, timeout, límite de peticiones, caída) queda en el log y el cliente recibe una respuesta fija que lo lleva a los flujos, que siguen funcionando sin la IA. Los mensajes sin texto (una foto, una nota de voz, una ubicación) también reciben una respuesta fija, sin llamar al modelo.
  • Coste. Las palabras clave (“pago”, “pedido”) y los comandos slash se saltan el clasificador. La llamada del clasificador es corta (maxTokens: 100, effort: 'low'); maxTokens incluye los tokens de pensamiento de los modelos de razonamiento, así que no lo pongas demasiado bajo.

Pruébalo

Una ejecución del código de arriba en el simulador de terminal. El modelo (las etiquetas del clasificador y la respuesta de charla) sigue un guion en el test que ejecuta esta página (packages/ai/tests/docs-examples-ai.test.ts); los flujos son los reales.

Otros proveedores de modelos

Cambia las opciones de aiPlugin; los proveedores distintos de Anthropic ignoran effort.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):

Ejecutarlo en WhatsApp o Telegram

node bot.js muestra un código QR: escanéalo con WhatsApp (Dispositivos vinculados). Para Telegram, instala @botmesh/telegram y arranca la fábrica con new TelegramProvider({ token: process.env.TELEGRAM_TOKEN ?? '' }).

Siguientes pasos