Gestor de Múltiples Agentes de Conversación Fluida es una plataforma para crear agentes conversacionales entrenados con tu propio contenido, integrada con múltiples LLMs y escrita en
Elixir, con Phoenix y OTP. Es el proyecto que une mis conocimientos de back-end e IA, y una versión más simple del sistema de gestión y despliegue de chatbots que desarrollé para Elife.
La arquitectura es
orientada a eventos: todo lo que ocurre en el sistema (un mensaje respondido, una llamada a un modelo, el progreso de un entrenamiento) se convierte en un evento en el PubSub de Phoenix. La persistencia, el conteo de tokens, los webhooks y un canal en vivo por WebSocket son suscriptores independientes, y una falla en uno de ellos no afecta a los demás.
Cada conversación corre en su propio
proceso supervisado: los mensajes de un mismo usuario se procesan en orden, los de usuarios distintos en paralelo, el historial queda en memoria y los avisos de inactividad son timers del propio proceso, sin cron. Si el servidor se cae en medio de un entrenamiento, el coordinador reconstruye la cola desde la base de datos al volver a iniciar.
Responder y entrenar son
pipelines componibles, declarados como una lista de pasos. Cada paso puede ser condicional, tener reintentos, correr con timeout en una tarea supervisada o en paralelo con otros (la detección de idioma y la búsqueda semántica corren al mismo tiempo), y los pasos se pueden reemplazar, insertar o quitar en tiempo de ejecución o por configuración.
Los modelos son
intercambiables: cada uno se identifica como proveedor:modelo (OpenAI, Anthropic, Gemini o modelos locales con Ollama), y cambiar el modelo de un agente es un solo PATCH, incluso en medio de una conversación. Cada proveedor puede tener su propio rate limiting, con reintentos que respetan los límites de la API.
El RAG hace búsqueda semántica con embeddings en
PostgreSQL con pgvector, y los agentes pueden llamar
herramientas locales o de cualquier servidor MCP (por stdio o HTTP). La conversación se puede transferir a un agente humano cuando está integrada a un sistema externo, y la suite de tests corre sin base de datos ni red, con almacenamiento en memoria y un proveedor de modelos falso.
Tecnologías:
Elixir, Phoenix, PostgreSQL + pgvector, Ollama y MCP.
Grabaciones reales con modelos locales (qwen2.5 y embeddinggemma vía Ollama, en CPU); las esperas por el modelo se acortaron.