Este proyecto es parte del curso Proyecto III de innovación tecnológica de IA de la Maestría en Inteligencia Artificial aplicada de la Universidad Icesi, Cali Colombia.
Líder del Proyecto: Fabian Salazar Figueroa | fabian.salazarfigueroa77@gmail.com
Docente / Tutor: José Armando Ordoñez
| Name | |
|---|---|
| Luis Esteban Ordoñez Erazo | esteban.leoe@gmail.com |
| Raul Albero Echeverry Lopez | raelv06@gmail.com |
| Arlex Pino Aguirre | apino@icesi.edu.co |
| Alfredo Aponte | alfredo.aponte@u.icesi.edu.co |
- ¡No dudes en contactar al líder del equipo si tienes alguna pregunta o si estás interesado en colaborar con el proyecto!
El objetivo principal de SARA es resolver la ineficiencia y el error humano en la búsqueda y evaluación manual de licitaciones públicas del Estado colombiano (SECOP II). SARA es un ecosistema autónomo basado en Inteligencia Artificial que ingesta masivamente pliegos de condiciones, los cruza semánticamente con las capacidades institucionales de la Universidad Icesi mediante una arquitectura RAG, y utiliza un panel Multi-Agente (Llama 3) para emitir un dictamen de viabilidad, alertando a los stakeholders y redactando borradores de propuesta de forma automatizada.
- Universidad Icesi (Dirección de Consultoría y Extensión)
- Sitio web: www.icesi.edu.co
- Generación Aumentada por Recuperación (RAG)
- Orquestación Multi-Agente (Adversarial Debate)
- Procesamiento de Lenguaje Natural (NLP)
- MLOps & Mejora Continua (Human-in-the-loop / Golden Truth)
- Ingeniería de Resiliencia (Circuit Breaker Pattern)
- Evaluaciones de Similitud Semántica Vectorial
- Python 3 (Ecosistema base)
- LLM Local: Meta Llama 3 8B (Cuantización Q4_0 vía Ollama)
- Embeddings: BAAI BGE-M3
- Bases de Datos: ChromaDB (Vectorial), SQLite3 (Relacional/Transaccional)
- Backend & API: FastAPI, Pydantic, SODA API Client
- Frontend / UI: Streamlit
- Infraestructura: Docker & Docker Compose
El proyecto SARA aborda un desafío crítico: la Universidad Icesi dejaba pasar oportunidades de negocio o incurría en riesgos legales ocultos por no tener capacidad humana para procesar miles de pliegos diarios en SECOP II.
Para resolverlo, construimos una solución integral de Software Engineering + AI:
- Ingesta Autónoma: Un cliente automatizado extrae la data diaria mediante la API pública de SODA.
- Memoria RAG: El texto es vectorizado por el modelo multilingüe
BGE-M3y almacenado enChromaDB, donde SARA busca si el perfil de la universidad hace "match" con la licitación. - Cognición Adversarial: Un Agente Explorador aprueba técnicamente la propuesta, y un Agente Auditor Jurídico intenta buscar activamente fallos legales o trampas en los pliegos para evitar falsos positivos.
- Notificación Inteligente: Si la viabilidad es alta (>70%), SARA usa un patrón de Circuit Breaker para enviar notificaciones SMTP de manera resiliente, adjuntando un borrador en Markdown redactado por un tercer agente especializado.
Desafíos superados: SARA resolvió problemas de latencia (reducción del 94% implementando aceleración GPU) y problemas de sycophancy en el LLM (el sesgo de ser excesivamente complaciente) mediante su diseño de debate entre agentes.
⚠️ Aviso de Privacidad y Protección de Datos: Debido a las políticas de privacidad de la Universidad Icesi y la confidencialidad estratégica de su perfil institucional, no se subirá ni compartirá la base de datos vectorial (ChromaDB) ni la base de datos transaccional (SQLite3) en este repositorio público. Todo el directoriodata/(incluyendodata/04_vector_db/ysara_database.db) ha sido añadido al.gitignore.Nota de Portabilidad: Al clonar este repositorio, la estructura de carpetas de
data/se descargará completamente vacía por diseño. Los investigadores que deseen replicar el sistema deberán inyectar sus propios PDFs endata/01_raw_icesi/, proveer su propiogolden_truth.json, y construir su propia base de conocimiento institucional mediante el script de ingesta masiva.
El repositorio está organizado bajo principios de modularidad y arquitectura limpia:
SARA/
├── data/ # Ignorado en Git (Bases de datos, Vectores, PDFs)
├── docs/ # Documentación, diagramas y papers de referencia
├── logs/ # Registros de observabilidad en tiempo real (.log)
├── scripts/ # Herramientas de mantenimiento y ejecución manual (scripts)
├── src/ # Código fuente central
│ ├── agents/ # Lógica de los Agentes (Explorador, Auditor, Redactor)
│ ├── api/ # Capa de servicios REST (FastAPI)
│ ├── brain/ # Orquestación del motor LLM (Ollama)
│ ├── evaluation/ # Algoritmos de validación y cálculo de métricas
│ ├── frontend/ # Panel de control e interfaz de observabilidad (Streamlit)
│ └── ingestion/ # Scripts para interactuar con SODA API y vectorizar
├── tests/ # Batería de pruebas unitarias y de integración
├── run_pipeline.py # Orquestador principal (CLI)
└── run_evaluation.py # Script para calcular métricas contra el Golden Truth
Existen dos maneras de desplegar el ecosistema SARA: Instalación Local o mediante Contenedores (Docker).
- Clonar este repositorio.
- Crear un entorno virtual e instalar dependencias:
python -m venv venv source venv/bin/activate pip install -r requirements.txt - Instalar Ollama y descargar el modelo exacto (Llama 3 8B) localmente:
ollama pull llama3:8b
- Ejecutar la Interfaz de Observabilidad (Frontend):
streamlit run src/frontend/app.py
- Ejecutar el Pipeline Core (Backend):
python run_pipeline.py --limit 50 --date 2024-05-27
Para garantizar la portabilidad y evitar conflictos de dependencias, SARA está diseñado para ejecutarse sobre una infraestructura de microservicios.
Requisito Estricto: Debes tener instalado Docker, Docker Compose v2, y de forma mandatoria el paquete NVIDIA Container Toolkit en tu servidor host. Si este toolkit no está presente, el despliegue fallará catástróficamente al intentar el mapeo de GPU (runtime: nvidia).
- Construir y levantar la orquesta (4 servicios: API, UI, Worker, Ollama):
docker compose up --build -d
- Inyección del Modelo (El Cerebro):
Una vez levantados los contenedores, el motor Ollama estará vacío. Debes ingresar al contenedor y descargar el archivo de pesos de Llama 3 8B:
docker exec -it sara_ollama ollama pull llama3:8b - Acceder a los servicios:
- API de SARA (FastAPI):
http://localhost:8000/docs - Panel de Control (Streamlit):
http://localhost:8501 - SARA Worker: Corre silenciosamente en background (
docker logs -f sara_worker).
- API de SARA (FastAPI):
Toda la fundamentación teórica, de métricas y arquitectónica está disponible en los documentos internos del repositorio: