Ir al contenido

Arquitectura

Kisuno se ejecuta en contenedores sobre una máquina Linux. Esta página muestra la estructura a grandes rasgos. Describe qué camino toma una petición y qué decisiones hay detrás, pero no la puesta en marcha en detalle.

El camino de una consultaDe arriba abajo: el navegador llega a un único punto de entrada donde termina TLS. Detrás se ejecuta la aplicación, LibreChat, con el almacenamiento de datos de cuentas y conversaciones. Para las respuestas del modelo, la aplicación se dirige al proveedor de modelos fuera del servidor.AccesoBrowserSu servidorPunto de entradaaquí termina TLSAplicaciónchat, agentes, archivosAlmacenamiento de datoscuentas y conversacionesEn el exteriorProveedor de modelosallí se calculan las respuestas del modelo

Dos cosas son esenciales en ello. Primero, todo camino desde fuera pasa por el proxy inverso; los demás servicios no aceptan conexiones desde la red. Segundo, las cuentas, las conversaciones y los archivos permanecen en su servidor, mientras que para las respuestas del modelo se recurre al proveedor.

Proxy inverso. El único punto de entrada desde fuera. Termina TLS, se ocupa del certificado y reparte las peticiones entre los servicios que hay detrás.

Aplicación. Es LibreChat. El servicio entrega la interfaz, se dirige a los proveedores de modelos, ejecuta los agentes y procesa los archivos subidos.

Almacenamiento de datos. Las cuentas, las conversaciones, los mensajes, los agentes y los registros están en la base de datos de la instancia; a ello se suman un índice de búsqueda sobre los chats propios y los archivos subidos en el mismo servidor. La base de datos es la fuente de la verdad, el índice de búsqueda puede reconstruirse a partir de ella en cualquier momento.

Añadidos de Kisuno. Alrededor de LibreChat se sitúan servicios propios para la administración, la gestión de permisos y la vista del consumo, además de la conexión con sistemas ajenos. Solo son accesibles dentro de la instancia y no están expuestos en la red.

Fuera de la instancia. Para las respuestas del modelo se recurre al proveedor de inferencia, para la búsqueda web a motores de búsqueda externos. Si se activa la ejecución de código, esta corre en un entorno propio y separado junto a la aplicación.

LibreChat no conoce la multitenencia. Por eso la separación queda por debajo de la aplicación: un cliente es una instancia propia con su propia base de datos, su propio índice de búsqueda, sus propios archivos, su propia configuración y su propia clave de inferencia. Que dos instancias compartan una máquina es a partir de ahí una pura cuestión de costes y de riesgo.

Como mucho pueden compartirse recursos de operación sin relación con el cliente. Lo que debe permanecer separado en todo caso es el almacenamiento de datos, la configuración con todas sus claves y el entorno de la ejecución de código. De lo contrario no se pueden separar limpiamente ni los datos ni los costes por cliente.