Proyecto Integrador IA 2025 – Grupo 13 (UTN FRM)
Comisión 5K10 – Ciclo 2025
Sistema experto multimodal basado en procesamiento de lenguaje natural, análisis de sentimientos, lógica difusa y base de datos en grafos, diseñado para proporcionar asistencia contextualizada a organizadores, prestadores de servicios y propietarios de lugares en la plataforma Wevently.
Implementa un chatbot inteligente que integra técnicas avanzadas de inteligencia artificial simbólica y conexionista para gestionar consultas relacionadas con eventos privados, transacciones de pago y operaciones de la plataforma.
- ✅ Análisis de sentimientos con modelo BETO (8 emociones)
- ✅ Extracción de palabras clave mediante spaCy
- ✅ Categorización difusa de problemas (scikit-fuzzy)
- ✅ Base de conocimiento en Neo4j (grafos semánticos)
- ✅ Generación de respuestas con Ollama/LangChain
- ✅ Interfaz interactiva tipo WhatsApp en Streamlit
- ✅ Logs y métricas de rendimiento por módulo
wevently-streamlit/
├── src/
│ ├── streamlit_app.py # Interfaz principal
│ ├── langchain.py # Orquestación NLP y BD
│ └── neo4j_connection.py # Gestor de conexiones Neo4j
├── Documentacion_Tecnica/ # 📁 Fichas técnicas
│ ├── INDICE_TECNICO.md # Índice general
│ ├── Modulo_1_Red_Procesos.md # Red de procesos
│ ├── Modulo_2_Red_Semantica.md # Modelo conceptual
│ ├── Modulo_3_Frames_Difusos.md # Lógica difusa
│ ├── Modulo_4_Base_Grafos.md # Neo4j y Cypher
│ ├── Modulo_5_Flujo_Planificacion.md # Orquestación
│ ├── Modulo_6_Aprendizaje_Integracion.md # KNIME/AutoML
│ ├── Modulo_7_NLP_Integration.md # spaCy, BETO
│ ├── Modulo_8_Generativo.md # Ollama, LangChain
│ └── Modulo_9_API_Asistente.md # API REST
├── tests/
│ └── test_app.py # Pruebas unitarias
├── .streamlit/
│ └── config.toml # Configuración Streamlit
├── .env # Variables de entorno
├── .gitignore # Archivos excluidos
├── requirements.txt # Dependencias Python
├── pruebas_wevently.log # Registro de ejecuciones
├── resultados_pruebas.json # Métricas de pruebas
└── README.md # Este archivo
El asistente inteligente está compuesto por 9 módulos integrados que trabajan secuencialmente para procesar consultas y generar respuestas:
| # | Módulo | Descripción | Herramientas |
|---|---|---|---|
| 1 | Red de Procesos | Define flujos de decisión y reglas de negocio | Diagramas, reglas lógicas |
| 2 | Red Semántica | Ontología del dominio: entidades y relaciones | Grafos conceptuales, RDF |
| 3 | Frames Difusos | Categorización probabilística | scikit-fuzzy, funciones membresía |
| 4 | Base Orientada a Grafos | Almacenamiento de conocimiento estructurado | Neo4j, Cypher, langchain_neo4j |
| 5 | Flujo de Planificación | Orquestación de módulos y scheduling | Decoradores, logging |
| 6 | Aprendizaje e Integración | Entrenamiento y evaluación de modelos | KNIME, AutoML, scikit-learn |
| 7 | Integración NLP | Procesamiento de texto y sentimientos | spaCy, transformers, BETO-TASS |
| 8 | Integración Generativa | Generación de respuestas contextualizadas | Ollama (gpt-oss:20b), LangChain |
| 9 | API del Asistente | Interfaz de usuario y endpoints | Streamlit, FastAPI (futuro) |
📖 Ver fichas técnicas detalladas →
Cada módulo cuenta con una ficha técnica completa que incluye:
- ✅ Propósito del componente dentro del sistema
- ✅ Entradas y salidas esperadas (datos, formatos)
- ✅ Herramientas y entorno (dependencias, configuración)
- ✅ Código relevante o enlaces al repositorio
- ✅ Capturas y ejemplos de funcionamiento
- ✅ Resultados de pruebas (métricas, validación)
- ✅ Observaciones y sugerencias de mejora
| Recurso | Enlace |
|---|---|
| 📂 Documentación Técnica | Documentacion_Tecnica/ |
| 📑 Índice General | INDICE_TECNICO.md |
| 📄 Informe Ejecutivo | Google Docs |
git clone https://github.com/crosaless/wevently-streamlit.git
cd wevently-streamlitpython -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activatepip install -r requirements.txt
python -m spacy download es_core_news_smCompleta el archivo .env con tus credenciales:
# Neo4j (Aura Cloud o local)
NEO4J_URI=neo4j+s://xxxxxxx.databases.neo4j.io
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=tu_contraseña_segura
NEO4J_URL=bolt://localhost:7687
# Ollama Cloud
OLLAMA_BASE_URL=https://ollama.com
OLLAMA_API_KEY=tu_api_key_ollama
# HuggingFace (para modelo BETO)
HUGGINGFACE_HUB_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxstreamlit run src/streamlit_app.pyLa aplicación estará disponible en http://localhost:8501
- Selecciona tu rol: Organizador, Prestador o Propietario
- Escribe tu consulta en el campo de texto
- Recibe respuesta contextualizada con:
- Palabras clave detectadas (spaCy)
- Emoción identificada (BETO)
- Nivel de confianza (lógica difusa)
- Solución recuperada de Neo4j
- Respuesta generada por Ollama
👤 Usuario (Organizador): "Mi tarjeta fue rechazada dos veces, ¿qué hago?"
🔄 Procesamiento del Sistema:
├─ [Módulo 7] Extrae keywords: ['tarjeta', 'rechazar', 'hacer']
├─ [Módulo 7] Detecta emoción: "enojo" (score: 0.82)
├─ [Módulo 3] Calcula confianza: 0.90 (lógica difusa)
├─ [Módulo 4] Consulta Neo4j → Categoría: "Demora en acreditación"
└─ [Módulo 8] Genera respuesta con tono serio y conciliador
🤖 Respuesta del Asistente:
"¡Hola estimado organizador! Entendemos tu frustración. Te recomendamos
verificar que los datos de tu tarjeta estén actualizados y reintentar.
Si el problema persiste, contacta a soporte (weventlyempresa@gmail.com)
con el número de transacción."
pytest tests/test_app.py -vpruebas_wevently.log: Registro detallado de ejecuciones con timestampsresultados_pruebas.json: Métricas de desempeño por módulo
| Métrica | Valor | Descripción |
|---|---|---|
| ⏱️ Latencia Total | 3-8 seg | 90% dominada por LLM |
| 🎯 Precisión Keywords | Alta | spaCy es_core_news_sm |
| 😊 F1-score Emociones | 0.78-0.85 | Modelo BETO |
| 🔍 Confianza Promedio | 0.70-0.95 | Lógica difusa |
| Categoría | Paquete | Versión | Propósito |
|---|---|---|---|
| Interfaz | streamlit |
≥1.28.0 | Frontend web interactivo |
| NLP | spacy |
≥3.6.0 | Tokenización y extracción |
| NLP | transformers |
≥4.35.0 | Modelos BETO |
| BD Grafos | neo4j |
≥5.14.0 | Cliente Neo4j oficial |
| BD Grafos | langchain-neo4j |
≥0.0.3 | Integración LangChain-Neo4j |
| LLM | langchain-ollama |
≥0.1.0 | Integración Ollama Cloud |
| Lógica Difusa | scikit-fuzzy |
≥0.4.2 | Sistema de inferencia |
| ML | torch |
≥2.1.0 | Backend transformer |
| Utilidades | python-dotenv |
≥1.0.0 | Variables de entorno |
Las contribuciones son bienvenidas. Para colaborar:
- Fork el repositorio
- Crea una rama:
git checkout -b feature/mi-mejora - Haz commit:
git commit -m "Agrega mi mejora" - Push:
git push origin feature/mi-mejora - Abre un Pull Request
- Gestión de contexto conversacional (memoria de chat)
- Despliegue local de LLM (Llama 2, Mistral)
- Expansión de escenarios en base de conocimiento Neo4j
- API REST con FastAPI para integración con otros sistemas
- Tests de integración end-to-end
Este proyecto está bajo licencia MIT. Consulta el archivo LICENSE para más detalles.
| Recurso | Enlace |
|---|---|
| 📖 Documentación Técnica | Documentacion_Tecnica/ |
| 📊 Informe Ejecutivo | Google Docs |
| 🐛 Reportar Issues | GitHub Issues |
| 💬 Contacto | @crosaless |
Este proyecto fue desarrollado como Proyecto Integrador Final de la materia Inteligencia Artificial de la carrera de Ingeniería en Sistemas de Información de la Universidad Tecnológica Nacional - Facultad Regional Mendoza, ciclo lectivo 2025.
Grupo 13 - Comisión 5K10
⭐ Si este proyecto te resultó útil, considera darle una estrella