Caso técnico · WorkChat Core
El backend de un ChatGPT empresarial con gobierno de herramientas
Orquestación LLM, tool calling autorizado, streaming, persistencia conversacional y auditoría para una SPA interna.
Problema
El equipo necesitaba una interfaz conversacional interna tipo ChatGPT donde cada usuario solo pudiera acceder a las herramientas autorizadas, con auditoría completa de cada interacción.
Restricciones
- Múltiples aplicaciones con herramientas variables
- Permisos granulares por usuario, rol y app
- Streaming de respuestas en tiempo real
- Auditoría de queries, tool calls y errores
- Manejo de estado conversacional persistente
Arquitectura
Cliente
Backend
Servicios
Datos
Decisiones de arquitectura
¿Por qué SSE en lugar de WebSocket?
Porque SSE sobre HTTP es más simple de operar, se integra naturalmente con Laravel, y no requiere mantener estado de conexión bidireccional. El streaming unidireccional es suficiente.
¿Por qué MCP para tool governance?
Porque MCP permite definir herramientas con schemas explícitos, validar parámetros antes de ejecutar y aislar la lógica de cada herramienta del orquestador principal.
¿Por qué monolito en lugar de microservicios?
Porque el equipo es pequeño, el dominio es coherente y un monolito bien estructurado reduce complejidad operativa sin sacrificar modularidad interna.
Riesgos y modos de fallo
- Tool call inválido generado por el LLM
- LLM no responde o timeout
- Rate limiting de OpenAI
- Permisos revocados durante una conversación activa
- Error parcial en tool call múltiple
- Pérdida de conexión SSE
Qué construí
- Arquitectura del backend monolítico
- Sistema de autenticación y autorización
- Orquestador LLM con streaming SSE
- Integración MCP para tool calling
- Persistencia conversacional
- Sistema de auditoría completo
- Panel administrativo con Filament
Stack
¿Buscas alguien que piense así?