Sistema Bastión orientado a la anonimización de información sensible antes de su envío a servicios externos de inteligencia artificial (En el caso de este sistema OpenAI).
La aplicación está formada por distintos módulos independientes. La mayoría se despliegan mediante Docker Compose, mientras que el módulo proveedor de modelos se ejecuta por separado para poder ejecutarse en un equipo a parte por la necesidad de más requisitos de hardware.
Para ejecutar el sistema principal se necesita:
- Docker
- Docker Compose
- Una clave válida para acceder a la API de OpenAI
- Acceso al servidor donde se ejecutará el proveedor de modelos
Para ejecutar el proveedor de modelos se necesita además:
- Python
- Las dependencias indicadas en el módulo
model-provider - Un equipo con recursos suficientes para cargar el modelo local seleccionado
- Preferiblemente, una GPU compatible
El sistema principal está formado por los siguientes servicios:
| Servicio | Puerto |
|---|---|
| Interfaz web backend | 8000 |
| Procesador de documentos | 8001 |
| Módulo de privacidad | 8002 |
| Orquestador | 8003 |
| Pasarela de IA | 8005 |
| MongoDB | 27017 |
| Frontend | 5173 |
El proveedor de modelos se ejecuta de forma independiente:
| Servicio | Puerto |
|---|---|
| Proveedor de modelos | 8010 |
Antes de levantar los contenedores, se deben configurar las variables de entorno necesarias.
Crear o modificar el fichero .env correspondiente.
Las variables recomendadas para el despliegue actual son:
OPENAI_API_KEY=<clave_de_openai>
ORCHESTRATOR_ASSISTANT_MODE=real
LLM_BASE_URL=http://<ip_del_servidor_de_modelos>:8010
MODEL_PROVIDER_BASE_URL=http://<ip_del_servidor_de_modelos>:8010
MODEL_PROVIDER_URL=http://<ip_del_servidor_de_modelos>:8010/generate_response
PRIVACY_MODEL_NAME=<modelo_para_anonimizacion>
DOCUMENT_MODEL_NAME=<modelo_para_extraccion_documental>Significado de cada variable:
OPENAI_API_KEY: clave utilizada porai-gatewaypara llamar a OpenAI.ORCHESTRATOR_ASSISTANT_MODE: modo del orquestador. Para funcionamiento real debe serreal(el modo fake es para hacer pruebas sin llamadas a la IA externa).LLM_BASE_URL: URL base del proveedor de modelos usada pordocument-processor.MODEL_PROVIDER_BASE_URL: URL base del proveedor de modelos usada porprivacy-shieldyweb-ui-backend.MODEL_PROVIDER_URL: endpoint concreto de generación usado porprivacy-shield.PRIVACY_MODEL_NAME: nombre del modelo local usado para anonimizar.DOCUMENT_MODEL_NAME: nombre del modelo local usado para extracción o lectura documental.
Lo normal es que todos los modulos apunten al mismo proveedor de modelos LLM_BASE_URL, MODEL_PROVIDER_BASE_URL y MODEL_PROVIDER_URL.
Si no se definen algunas de estas variables, docker-compose.yml aplicará valores por defecto orientados a un proveedor accesible en http://host.docker.internal:8010.
El proveedor de modelos se arrancará antes que el resto del sistema, ya que otros módulos realizan llamadas a este servicio durante el procesamiento de documentos y la anonimización.
Acceda al servidor donde se ejecutará el modelo local y entra en la carpeta correspondiente:
cd <ruta_del_proyecto>/model-providerInstale las dependencias necesarias siguiendo el sistema de gestión utilizado en el proyecto.
uv syncDespués, arranque el proveedor de modelos:
uv run main.pyEl módulo debe quedar accesible mediante el puerto 8010.
El modelo utilizado puede modificarse desde el fichero de configuración correspondiente del módulo model-provider.
Si el equipo disponible cuenta con pocos recursos hardware, se recomienda seleccionar un modelo de menor tamaño para reducir el consumo de memoria y facilitar su ejecución.
Una vez arrancado el proveedor de modelos, vuelva a la carpeta raíz del proyecto:
cd <ruta_del_proyecto>Construya y levante los contenedores mediante Docker Compose:
docker compose up --buildDocker Compose se encargará de iniciar los módulos principales, la base de datos MongoDB y el frontend.
Una vez levantados todos los servicios, abra la aplicación desde el navegador:
http://localhost:5173
Desde la interfaz será posible:
- Crear y gestionar conversaciones
- Seleccionar el modelo externo de OpenAI
- Configurar los tipos de información que deben anonimizarse
- Enviar consultas
- Adjuntar documentos PDF
- Revisar el contenido anonimizado antes de enviarlo
- Recibir la respuesta desanonimizada
Para comprobar que los servicios se han iniciado correctamente:
docker compose psPara consultar los logs del sistema:
docker compose logsPara detener todos los contenedores:
docker compose downLa información almacenada en MongoDB se mantiene gracias al volumen persistente definido en Docker Compose.
Si también se desea detener el proveedor de modelos, debe finalizarse manualmente el proceso uv run main.py en el servidor correspondiente.
El orden recomendado para levantar el sistema es el siguiente:
- Acceder al servidor donde se encuentra el proveedor de modelos.
- Iniciar el módulo
model-provider. - Esperar a que el modelo local termine de cargarse.
- Configurar el fichero
.envdel sistema principal. - Ejecutar
docker compose up --build -ddesde la carpeta raíz. - Comprobar el estado de los contenedores con
docker compose ps. - Acceder a
http://localhost:5173desde el navegador.