edullm / README.md
JairoDanielMT's picture
Update README.md
8726650 verified
metadata
title: Edullm
emoji: 
colorFrom: indigo
colorTo: green
sdk: docker
pinned: false
license: mit

📚 GEN_EDU_IA: Sistema RAG Educativo con LLM y FAISS

GEN_EDU_IA es una solución integral que combina un pipeline RAG (Retrieval-Augmented Generation) con modelos LLM, gestión de vectores mediante FAISS y un bot de Telegram interactivo. Este sistema permite generar automáticamente materiales pedagógicos a partir de texto o imágenes, entregando el resultado en formato DOCX listo para ser utilizado por docentes.


🚀 Características Principales

  • Pipeline RAG: Integración de recuperación de contexto con generación automática usando LLM.
  • 🤖 Bot de Telegram: Interfaz conversacional para docentes, soporta texto e imágenes.
  • 📄 Conversión Automática: Generación de documentos en formato DOCX desde Markdown.
  • 🗂️ Gestión de Vectorstore: Indexación eficiente de documentos educativos con FAISS.
  • 📝 Soporte Multimodal: Procesamiento tanto de texto como de imágenes.

📂 Estructura del Proyecto

GEN_EDU_IA/
├── config/                # Configuración (.env, prompts)
├── core/                  # Lógica principal del sistema
│   ├── integrations/      # Integraciones (Bot, conversión DOCX)
│   ├── llm/               # Gestión del modelo LLM
│   ├── pipeline/          # Pipeline RAG
│   └── vectorstore/       # Gestión de FAISS
├── database/              # Almacenamiento del índice FAISS
│   └── edullm_store/      # Índice vectorial preconstruido
├── docs/                  # Documentación y materiales educativos
├── logs/                  # Registros del sistema
├── scripts/               # Scripts de ejecución
├── tests/                 # Pruebas unitarias
├── Dockerfile            # Configuración de Docker
├── requirements.txt      # Dependencias de Python
├── main.py              # Lanzador principal del sistema
└── README.md            # Documentación del proyecto

⚙️ Requisitos Previos

Opción 1: Instalación Local

  • Python 3.11+
  • pip instalado
  • Pandoc instalado
  • Instalación de uv para una gestión eficiente de dependencias:
pip install uv

Opción 2: Usando Docker

  • Docker instalado
  • Docker Compose (opcional)

📦 Instalación

Opción 1: Instalación Local

  1. Clona el repositorio:
git clone https://github.com/tu-usuario/gen-edu-ia.git
cd gen-edu-ia
  1. Instala las dependencias:
uv sync

Opción 2: Usando Docker

  1. Construye la imagen:
docker build -t gen-edu-ia .
  1. Ejecuta el contenedor:
docker run -d \
  --name gen-edu-ia \
  -v $(pwd)/config:/app/config \
  -v $(pwd)/database:/app/database \
  -v $(pwd)/docs:/app/docs \
  -v $(pwd)/logs:/app/logs \
  gen-edu-ia

🚨 Configuración

  1. Copia el archivo de ejemplo y configura las variables:
cp config/.env.example config/.env
  1. Edita el archivo config/.env con tus credenciales:
# ==========================================
# 🔑 CONFIGURACIÓN DEL BOT DE TELEGRAM
# ==========================================
TELEGRAM_TOKEN=your_telegram_bot_token

# ==========================================
# 🤖 CONFIGURACIÓN DEL MODELO LLM
# ==========================================
LLM_MODEL_NAME=gpt-3.5-turbo
LLM_API_KEY=your_openai_api_key
LLM_BASE_URL=https://api.openai.com/v1

# ==========================================
# 📚 CONFIGURACIÓN DEL VECTORSTORE
# ==========================================
VECTORSTORE_PATH=docs/
VECTORSTORE_NAME=edullm_store

# ==========================================
# 📝 CONFIGURACIÓN DE PROMPTS
# ==========================================
PATH_SYSTEM_PROMPT=config/prompt_system.txt

# ==========================================
# 🔄 CONFIGURACIÓN DE EMBEDDINGS
# ==========================================
MODEL_EMBEDDINGS=sentence-transformers/distiluse-base-multilingual-cased
  1. Asegúrate de tener:
    • Un token válido de Bot de Telegram (obtenido de @BotFather)
    • Una API key válida para el servicio LLM
    • El archivo prompt_system.txt en la carpeta config/
    • Documentos en la carpeta docs/ o un índice preconstruido en database/edullm_store/

🚀 Ejecución del Proyecto

Opción 1: Local

uv run main.py

Opción 2: Docker

docker start gen-edu-ia

El sistema iniciará:

  • 🤖 Bot de Telegram listo para recibir mensajes

🎯 Uso del Bot EduLLM

  1. Abre Telegram y busca tu bot con el token configurado
  2. Envía un texto descriptivo o una imagen (puede ser una foto de una pizarra)
  3. El bot generará automáticamente un material educativo
  4. Recibirás un botón para descargar el archivo en formato DOCX

Comandos Disponibles

  • /start - Inicia el bot y muestra el mensaje de bienvenida
  • /help - Muestra la ayuda y los comandos disponibles
  • /about - Muestra información sobre el sistema

🧪 Ejecución de Pruebas

uv run pytest

Esto mostrará un reporte detallado del estado de las pruebas y el porcentaje de cobertura.


📊 Tecnologías Utilizadas

  • Python 3.11
  • Telegram Bot API
  • LangChain & FAISS
  • OpenAI / Groq API
  • pypandoc (Conversión Markdown → DOCX)
  • Loguru (Logging avanzado)
  • Pytest (Testing)
  • Docker (Containerización)

✅ Estado del Proyecto

✔️ Versión estable funcional ✔️ Generación de materiales educativos validada ✔️ Integración completa entre RAG, LLM y el Bot de Telegram ✔️ Soporte para Docker


🚧 Próximas Mejoras

  • Implementación de control de usuarios por roles
  • Almacenamiento persistente de historial de materiales generados
  • Dashboard web para administración
  • Soporte para más formatos de exportación (PDF, HTML)
  • Mejoras en la gestión de memoria y recursos
  • Optimización del pipeline RAG

📝 Notas Adicionales

Gestión de Memoria

El sistema está optimizado para funcionar con recursos limitados, pero se recomienda:

  • Mínimo 2GB de RAM para el contenedor Docker
  • 1GB de espacio en disco para la base de datos vectorial
  • Conexión estable a Internet para las APIs

Mantenimiento

  • Los logs se almacenan en logs/
  • La base de datos vectorial se mantiene en database/edullm_store/
  • Los documentos procesados se almacenan en docs/

Solución de Problemas

Si encuentras algún error:

  1. Revisa los logs en logs/
  2. Verifica las variables de entorno en config/.env
  3. Asegúrate de que los servicios externos (Telegram, LLM API) estén disponibles
  4. Comprueba que los volúmenes Docker estén correctamente montados