File size: 6,828 Bytes
e6f506f
 
 
 
 
 
 
 
 
 
8726650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
---
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:
```bash
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:
```bash
git clone https://github.com/tu-usuario/gen-edu-ia.git
cd gen-edu-ia
```

2. Instala las dependencias:
```bash
uv sync
```

### Opción 2: Usando Docker

1. Construye la imagen:
```bash
docker build -t gen-edu-ia .
```

2. Ejecuta el contenedor:
```bash
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:
```bash
cp config/.env.example config/.env
```

2. Edita el archivo `config/.env` con tus credenciales:

```dotenv
# ==========================================
# 🔑 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
```

3. 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
```bash
uv run main.py
```

### Opción 2: Docker
```bash
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

```bash
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