Saltar al contenido principal
Nivel: Intermedio · Etiquetas: IA, RAG, WhatsApp, Telegram Funcionalidades: RAG con cualquier retriever · citas con appendSources · warmup() del retriever al arrancar · autoresponder de IA · 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).

Tu FAQ

Guárdalo como faq.md junto a bot.js. Cada sección ## es un pasaje que el modelo puede citar.

El bot

Cómo funciona

  • Recuperación en cada turno. Antes de cada respuesta el plugin llama a retrieve(pregunta) y añade los pasajes al prompt de sistema como un bloque numerado, con instrucciones para responder a partir de ellos, citarlos como [n] y tratarlos como datos, no como instrucciones.
  • Citas. Con appendSources: true la respuesta termina con las fuentes que citó el modelo. Si nada coincide, no se envía ningún pasaje y la persona hace que el modelo diga que no lo sabe en vez de adivinar.
  • Nunca rompe una respuesta. Si el retriever lanza un error o tarda más de timeoutMs (10 s por defecto), el turno sigue sin contexto.
  • Arranque. warmup() lee el archivo al arrancar el bot, así la primera pregunta no lo espera.
  • Bases de conocimiento más grandes. Cambia markdownRetriever por una llamada a tu base de datos vectorial o a tu API de búsqueda: sirve cualquier objeto con retrieve(query) que resuelva pasajes { text, citation?, score? }.
Retriever listo para usar: @botmesh/ragEl paquete @botmesh/rag tiene loaders (Markdown, texto, JSON, PDF), troceado, embeddings (local, OpenAI u Ollama) y un índice persistente: rag: { retriever: createRag({ documents: ['./faq.md'] }), appendSources: true }. Instálalo con npm install @botmesh/rag; ver @botmesh/rag.

Pruébalo

Una ejecución del código de arriba en el simulador de terminal, con faq.md al lado. El modelo sigue un guion en el test que ejecuta esta página (packages/ai/tests/docs-examples-ai.test.ts), que además comprueba que al modelo le llegó la sección correcta del FAQ; la recuperación y la línea de fuentes son las reales.

Otros proveedores de modelos

Solo cambian las opciones del proveedor; rag queda igual.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