Gerenciador de Múltiplos Agentes de Conversação Fluida é uma plataforma para criar agentes de conversação treinados no seu próprio conteúdo, integrada a múltiplas LLMs e escrita em
Elixir, com Phoenix e OTP. É o projeto que une meus conhecimentos de back-end e IA, e uma versão mais simples do sistema de gerência e deploy de chatbots que desenvolvi para a Elife.
A arquitetura é
orientada a eventos: tudo que acontece no sistema (uma mensagem respondida, uma chamada de modelo, o progresso de um treinamento) vira um evento no PubSub do Phoenix. Persistência, contabilização de tokens, webhooks e um canal ao vivo por WebSocket são assinantes independentes, e uma falha em um deles não afeta os outros.
Cada conversa roda no seu próprio
processo supervisionado: as mensagens de um mesmo usuário são processadas em ordem, usuários diferentes em paralelo, o histórico fica em memória e os avisos de inatividade são timers do próprio processo, sem cron. Se o servidor cai no meio de um treinamento, o coordenador reconstrói a fila a partir do banco ao subir.
Responder e treinar são
pipelines componíveis, declarados como uma lista de etapas. Cada etapa pode ser condicional, ter retry, rodar com timeout numa tarefa supervisionada ou em paralelo com outras (a detecção de idioma e a busca semântica rodam ao mesmo tempo), e dá para trocar, inserir ou remover etapas em tempo de execução ou por configuração.
Os modelos são
intercambiáveis: cada um é endereçado como provedor:modelo (OpenAI, Anthropic, Gemini ou modelos locais via Ollama), e trocar o modelo de um agente é um único PATCH, inclusive no meio de uma conversa. Cada provedor pode ter rate limiting próprio, com retries que respeitam os limites da API.
O RAG faz busca semântica com embeddings em
PostgreSQL com pgvector, e os agentes podem chamar
ferramentas locais ou de qualquer servidor MCP (via stdio ou HTTP). A conversa pode ser transferida para um atendente humano quando integrada a um sistema externo, e a suíte de testes roda sem banco nem rede, com armazenamento em memória e um provedor de modelos falso.
Tecnologias:
Elixir, Phoenix, PostgreSQL + pgvector, Ollama e MCP.
Gravações reais com modelos locais (qwen2.5 e embeddinggemma via Ollama, em CPU); as esperas pelo modelo foram encurtadas.