evolutia 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {evolutia-0.1.0 → evolutia-0.1.1}/LICENSE +1 -1
  2. evolutia-0.1.1/PKG-INFO +221 -0
  3. evolutia-0.1.1/README.md +190 -0
  4. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/__init__.py +1 -1
  5. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/config_manager.py +11 -5
  6. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/llm_providers.py +2 -0
  7. evolutia-0.1.1/evolutia/variation_generator.py +287 -0
  8. evolutia-0.1.1/evolutia.egg-info/PKG-INFO +221 -0
  9. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia.egg-info/SOURCES.txt +1 -0
  10. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia_cli.py +10 -0
  11. {evolutia-0.1.0 → evolutia-0.1.1}/setup.py +2 -2
  12. evolutia-0.1.1/tests/test_config_discovery.py +85 -0
  13. evolutia-0.1.0/PKG-INFO +0 -723
  14. evolutia-0.1.0/README.md +0 -692
  15. evolutia-0.1.0/evolutia/variation_generator.py +0 -97
  16. evolutia-0.1.0/evolutia.egg-info/PKG-INFO +0 -723
  17. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/complexity_validator.py +0 -0
  18. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/evolutia_engine.py +0 -0
  19. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/exam_generator.py +0 -0
  20. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/exercise_analyzer.py +0 -0
  21. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/material_extractor.py +0 -0
  22. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/rag/__init__.py +0 -0
  23. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/rag/consistency_validator.py +0 -0
  24. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/rag/context_enricher.py +0 -0
  25. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/rag/enhanced_variation_generator.py +0 -0
  26. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/rag/rag_indexer.py +0 -0
  27. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/rag/rag_manager.py +0 -0
  28. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/rag/rag_retriever.py +0 -0
  29. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/utils/__init__.py +0 -0
  30. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/utils/json_parser.py +0 -0
  31. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/utils/markdown_parser.py +0 -0
  32. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia/utils/math_extractor.py +0 -0
  33. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia.egg-info/dependency_links.txt +0 -0
  34. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia.egg-info/entry_points.txt +0 -0
  35. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia.egg-info/requires.txt +0 -0
  36. {evolutia-0.1.0 → evolutia-0.1.1}/evolutia.egg-info/top_level.txt +0 -0
  37. {evolutia-0.1.0 → evolutia-0.1.1}/setup.cfg +0 -0
  38. {evolutia-0.1.0 → evolutia-0.1.1}/tests/test_complexity_validator.py +0 -0
  39. {evolutia-0.1.0 → evolutia-0.1.1}/tests/test_exercise_analyzer.py +0 -0
  40. {evolutia-0.1.0 → evolutia-0.1.1}/tests/test_json_robustness.py +0 -0
  41. {evolutia-0.1.0 → evolutia-0.1.1}/tests/test_math_extractor.py +0 -0
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2024-2025 glacy (glacy@tec.ac.cr)
189
+ Copyright 2026 glacy (gerardolacymora@gmail.com)
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -0,0 +1,221 @@
1
+ Metadata-Version: 2.4
2
+ Name: evolutia
3
+ Version: 0.1.1
4
+ Summary: Sistema automatizado para generar preguntas de examen desafiantes basadas en materiales didácticos existentes
5
+ Home-page: https://github.com/glacy/evolutIA
6
+ Author: Gerardo Lacy-Mora
7
+ Author-email: gerardolacymora@gmail.com
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: Apache Software License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: PyYAML
15
+ Requires-Dist: requests
16
+ Requires-Dist: python-dotenv
17
+ Requires-Dist: openai
18
+ Requires-Dist: anthropic
19
+ Requires-Dist: google-generativeai
20
+ Requires-Dist: tqdm
21
+ Dynamic: author
22
+ Dynamic: author-email
23
+ Dynamic: classifier
24
+ Dynamic: description
25
+ Dynamic: description-content-type
26
+ Dynamic: home-page
27
+ Dynamic: license-file
28
+ Dynamic: requires-dist
29
+ Dynamic: requires-python
30
+ Dynamic: summary
31
+
32
+ # EvolutIA: Generador de preguntas de examen
33
+
34
+ Sistema automatizado para generar preguntas de examen desafiantes basadas en materiales didácticos existentes (lecturas, prácticas, tareas). El sistema aumenta la complejidad matemática de los ejercicios mientras mantiene el formato y estructura familiar.
35
+
36
+ ## Características Principales
37
+
38
+ - **Multi-Modo**:
39
+ - **Variación**: Incrementa la complejidad de ejercicios existentes.
40
+ - **Creación**: Genera ejercicios nuevos desde cero basados en temas y tags.
41
+ - **RAG (Retrieval-Augmented Generation)**: Usa tus propios apuntes y ejercicios previos como contexto para generar contenido más alineado al curso.
42
+ - **Multi-Proveedor**: Soporte nativo para OpenAI (GPT-4), Anthropic (Claude 3), Google (Gemini 1.5) y Modelos Locales (via Ollama/LM Studio).
43
+ - **Análisis de Complejidad**: Valida automáticamente que las nuevas preguntas sean matemáticamente más exigentes.
44
+ - **Formato MyST**: Salida compatible con Curvenote y Jupyter Book.
45
+
46
+ ---
47
+
48
+ ## Instalación
49
+
50
+ ### Requisitos Previos
51
+ - Python 3.8 o superior
52
+ - API Key de tu proveedor preferido (OpenAI, Anthropic, Google) o un servidor local (Ollama).
53
+
54
+ ### Opción 1: Instalación desde PyPI (Recomendada)
55
+ Para uso general, instala directamente el paquete:
56
+
57
+ ```bash
58
+ # Crear entorno virtual (Recomendado)
59
+ python -m venv venv
60
+ source venv/bin/activate # Windows: venv\Scripts\activate
61
+
62
+ # Instalar
63
+ pip install evolutia
64
+ ```
65
+
66
+ ### Opción 2: Instalación desde Fuente (Desarrollo)
67
+ Si deseas modificar el código o contribuir:
68
+
69
+ ```bash
70
+ git clone https://github.com/glacy/evolutIA.git
71
+ cd evolutia
72
+ pip install -e .
73
+ ```
74
+
75
+ ### Configuración Inicial
76
+ Crea un archivo `.env` en la raíz de tu proyecto con tus credenciales:
77
+
78
+ ```bash
79
+ OPENAI_API_KEY=sk-...
80
+ ANTHROPIC_API_KEY=sk-ant-...
81
+ GOOGLE_API_KEY=...
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Guía de Uso Rápido
87
+
88
+ El comando principal es `evolutia`. Aquí tienes los casos de uso más comunes:
89
+
90
+ ### 1. Generar Variaciones (Modo Clásico)
91
+ Toma ejercicios existentes de un tema y crea versiones más complejas.
92
+
93
+ ```bash
94
+ # Generar 3 variaciones del tema 'analisis_vectorial'
95
+ evolutia --tema analisis_vectorial --num_ejercicios 3 --output examenes/parcial1
96
+ ```
97
+
98
+ O variar ejercicios específicos por su etiqueta (Label):
99
+ ```bash
100
+ evolutia --tema analisis_vectorial --label ex1-s1 ex2-s1 --output examenes/recuperacion
101
+ ```
102
+
103
+ ### 2. Crear Nuevos Ejercicios (Modo Creación)
104
+ Genera ejercicios desde cero sin necesitar un "ejercicio semilla".
105
+
106
+ ```bash
107
+ # Crear 3 ejercicios nuevos sobre 'numeros_complejos'
108
+ evolutia --mode creation --tema numeros_complejos --num_ejercicios 3 --output examenes/quiz1
109
+ ```
110
+
111
+ ### 3. Usar RAG (Contexto del Curso)
112
+ Enriquece la generación indexando tus lecturas y prácticas.
113
+
114
+ ```bash
115
+ # La primera vez, usa --reindex para leer tus materiales
116
+ evolutia --tema matrices --num_ejercicios 3 --use_rag --reindex --output examenes/final
117
+
118
+ # Consultas posteriores (usa el índice ya creado)
119
+ evolutia --tema matrices --num_ejercicios 3 --use_rag --output examenes/final
120
+ ```
121
+
122
+ ### 4. Consultar tu Base de Conocimiento
123
+ Pregúntale al sistema qué sabe sobre un concepto (útil para verificar RAG):
124
+ ```bash
125
+ evolutia --query "Teorema de Stokes"
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Configuración Avanzada
131
+
132
+ EvolutIA es altamente configurable a través del archivo `evolutia_config.yaml` o argumentos CLI.
133
+
134
+ ### Archivo de Configuración
135
+ Puedes colocar un `evolutia_config.yaml` en la raíz de tu carpeta de curso. Si no existe, puedes generarlo o ver el estado actual con:
136
+
137
+ ```bash
138
+ # Analiza tu estructura de carpetas y genera/actualiza la config
139
+ evolutia --analyze
140
+ # O explícitamente usando el script auxiliar
141
+ python evolutia/config_manager.py
142
+ ```
143
+
144
+ ### Argumentos CLI Disponibles
145
+
146
+ | Argumento | Descripción | Default |
147
+ |-----------|-------------|---------|
148
+ | `--tema` | Identificador del tema (carpeta) | **Requerido** |
149
+ | `--output` | Carpeta de salida | **Requerido** |
150
+ | `--num_ejercicios` | Cantidad a generar | 1 |
151
+ | `--complejidad` | Nivel objetivo (`media`, `alta`, `muy_alta`) | `alta` |
152
+ | `--api` | Proveedor (`openai`, `anthropic`, `gemini`, `local`) | `openai` |
153
+ | `--type` | Tipo de pregunta (`problem`, `multiple_choice`) | `problem` |
154
+ | `--no_generar_soluciones` | Omite la creación de archivos de solución | False |
155
+
156
+ ### Uso con Modelos Locales (Offline)
157
+ Para usar modelos como Llama 3 o Mistral sin costo de API:
158
+
159
+ 1. Ejecuta tu servidor (ej. `ollama serve`).
160
+ 2. Configura `evolutia_config.yaml` (opcional, si usas defaults de Ollama no es necesario):
161
+ ```yaml
162
+ local:
163
+ base_url: "http://localhost:11434/v1"
164
+ model: "llama3"
165
+ ```
166
+ 3. Ejecuta con el flag local:
167
+ ```bash
168
+ evolutia --tema basicos --api local --output prueba_local
169
+ ```
170
+
171
+ ---
172
+
173
+ ## Gestión de Materiales (Cómo "ve" los ejercicios EvolutIA)
174
+
175
+ Para que el sistema encuentre tus ejercicios y lecturas, utiliza una estrategia de descubrimiento basada en carpetas y metadatos.
176
+
177
+ 1. **Escaneo de Carpetas**: Busca archivos `.md` dentro de la carpeta del tema (ej: `./analisis_vectorial/`).
178
+ 2. **Tags y Metadatos**: Para archivos fuera de esa carpeta (ej. en `tareas/`), el sistema lee el *frontmatter* YAML. Incluye el tag del tema para hacerlo visible:
179
+
180
+ ```yaml
181
+ ---
182
+ title: Tarea 1
183
+ tags:
184
+ - analisis_vectorial # <--- Este tag permite que evolutia encuentre el archivo
185
+ - stokes
186
+ ---
187
+ ```
188
+
189
+ ### Trazabilidad
190
+ Los ejercicios generados heredan los tags de sus "padres". El archivo final del examen (`examenX.md`) resume todos los temas cubiertos.
191
+
192
+ ---
193
+
194
+ ## Estructura del Proyecto
195
+
196
+ Se recomienda la siguiente estructura para tus cursos:
197
+
198
+ ```
199
+ MiCurso/
200
+ ├── evolutia_config.yaml # Configuración específica del curso
201
+ ├── analisis_vectorial/ # Materiales del tema 1
202
+ │ ├── lectura.md
203
+ │ └── practica.md
204
+ ├── matrices/ # Materiales del tema 2
205
+ ├── examenes/ # Salida generada por EvolutIA
206
+ └── .env # API Keys (no subir a git)
207
+ ```
208
+
209
+ > **Nota para usuarios antiguos**: Anteriormente se recomendaba usar Git Submodules. Ese método ha sido archivado. Si lo necesitas, consulta [docs/legacy/GUIDE_SUBMODULES.md](docs/legacy/GUIDE_SUBMODULES.md).
210
+
211
+ ## Contribuciones y Desarrollo
212
+
213
+ El código fuente está organizado modularmente en `evolutia/`:
214
+ - `evolutia_engine.py`: Orquestador principal.
215
+ - `variation_generator.py`: Lógica de prompts y llamadas a LLMs.
216
+ - `rag/`: Subsistema de indexación y recuperación.
217
+
218
+ Para reportar bugs o mejoras, por favor visita el repositorio en GitHub.
219
+
220
+ ## Licencia
221
+ Apache 2.0
@@ -0,0 +1,190 @@
1
+ # EvolutIA: Generador de preguntas de examen
2
+
3
+ Sistema automatizado para generar preguntas de examen desafiantes basadas en materiales didácticos existentes (lecturas, prácticas, tareas). El sistema aumenta la complejidad matemática de los ejercicios mientras mantiene el formato y estructura familiar.
4
+
5
+ ## Características Principales
6
+
7
+ - **Multi-Modo**:
8
+ - **Variación**: Incrementa la complejidad de ejercicios existentes.
9
+ - **Creación**: Genera ejercicios nuevos desde cero basados en temas y tags.
10
+ - **RAG (Retrieval-Augmented Generation)**: Usa tus propios apuntes y ejercicios previos como contexto para generar contenido más alineado al curso.
11
+ - **Multi-Proveedor**: Soporte nativo para OpenAI (GPT-4), Anthropic (Claude 3), Google (Gemini 1.5) y Modelos Locales (via Ollama/LM Studio).
12
+ - **Análisis de Complejidad**: Valida automáticamente que las nuevas preguntas sean matemáticamente más exigentes.
13
+ - **Formato MyST**: Salida compatible con Curvenote y Jupyter Book.
14
+
15
+ ---
16
+
17
+ ## Instalación
18
+
19
+ ### Requisitos Previos
20
+ - Python 3.8 o superior
21
+ - API Key de tu proveedor preferido (OpenAI, Anthropic, Google) o un servidor local (Ollama).
22
+
23
+ ### Opción 1: Instalación desde PyPI (Recomendada)
24
+ Para uso general, instala directamente el paquete:
25
+
26
+ ```bash
27
+ # Crear entorno virtual (Recomendado)
28
+ python -m venv venv
29
+ source venv/bin/activate # Windows: venv\Scripts\activate
30
+
31
+ # Instalar
32
+ pip install evolutia
33
+ ```
34
+
35
+ ### Opción 2: Instalación desde Fuente (Desarrollo)
36
+ Si deseas modificar el código o contribuir:
37
+
38
+ ```bash
39
+ git clone https://github.com/glacy/evolutIA.git
40
+ cd evolutia
41
+ pip install -e .
42
+ ```
43
+
44
+ ### Configuración Inicial
45
+ Crea un archivo `.env` en la raíz de tu proyecto con tus credenciales:
46
+
47
+ ```bash
48
+ OPENAI_API_KEY=sk-...
49
+ ANTHROPIC_API_KEY=sk-ant-...
50
+ GOOGLE_API_KEY=...
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Guía de Uso Rápido
56
+
57
+ El comando principal es `evolutia`. Aquí tienes los casos de uso más comunes:
58
+
59
+ ### 1. Generar Variaciones (Modo Clásico)
60
+ Toma ejercicios existentes de un tema y crea versiones más complejas.
61
+
62
+ ```bash
63
+ # Generar 3 variaciones del tema 'analisis_vectorial'
64
+ evolutia --tema analisis_vectorial --num_ejercicios 3 --output examenes/parcial1
65
+ ```
66
+
67
+ O variar ejercicios específicos por su etiqueta (Label):
68
+ ```bash
69
+ evolutia --tema analisis_vectorial --label ex1-s1 ex2-s1 --output examenes/recuperacion
70
+ ```
71
+
72
+ ### 2. Crear Nuevos Ejercicios (Modo Creación)
73
+ Genera ejercicios desde cero sin necesitar un "ejercicio semilla".
74
+
75
+ ```bash
76
+ # Crear 3 ejercicios nuevos sobre 'numeros_complejos'
77
+ evolutia --mode creation --tema numeros_complejos --num_ejercicios 3 --output examenes/quiz1
78
+ ```
79
+
80
+ ### 3. Usar RAG (Contexto del Curso)
81
+ Enriquece la generación indexando tus lecturas y prácticas.
82
+
83
+ ```bash
84
+ # La primera vez, usa --reindex para leer tus materiales
85
+ evolutia --tema matrices --num_ejercicios 3 --use_rag --reindex --output examenes/final
86
+
87
+ # Consultas posteriores (usa el índice ya creado)
88
+ evolutia --tema matrices --num_ejercicios 3 --use_rag --output examenes/final
89
+ ```
90
+
91
+ ### 4. Consultar tu Base de Conocimiento
92
+ Pregúntale al sistema qué sabe sobre un concepto (útil para verificar RAG):
93
+ ```bash
94
+ evolutia --query "Teorema de Stokes"
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Configuración Avanzada
100
+
101
+ EvolutIA es altamente configurable a través del archivo `evolutia_config.yaml` o argumentos CLI.
102
+
103
+ ### Archivo de Configuración
104
+ Puedes colocar un `evolutia_config.yaml` en la raíz de tu carpeta de curso. Si no existe, puedes generarlo o ver el estado actual con:
105
+
106
+ ```bash
107
+ # Analiza tu estructura de carpetas y genera/actualiza la config
108
+ evolutia --analyze
109
+ # O explícitamente usando el script auxiliar
110
+ python evolutia/config_manager.py
111
+ ```
112
+
113
+ ### Argumentos CLI Disponibles
114
+
115
+ | Argumento | Descripción | Default |
116
+ |-----------|-------------|---------|
117
+ | `--tema` | Identificador del tema (carpeta) | **Requerido** |
118
+ | `--output` | Carpeta de salida | **Requerido** |
119
+ | `--num_ejercicios` | Cantidad a generar | 1 |
120
+ | `--complejidad` | Nivel objetivo (`media`, `alta`, `muy_alta`) | `alta` |
121
+ | `--api` | Proveedor (`openai`, `anthropic`, `gemini`, `local`) | `openai` |
122
+ | `--type` | Tipo de pregunta (`problem`, `multiple_choice`) | `problem` |
123
+ | `--no_generar_soluciones` | Omite la creación de archivos de solución | False |
124
+
125
+ ### Uso con Modelos Locales (Offline)
126
+ Para usar modelos como Llama 3 o Mistral sin costo de API:
127
+
128
+ 1. Ejecuta tu servidor (ej. `ollama serve`).
129
+ 2. Configura `evolutia_config.yaml` (opcional, si usas defaults de Ollama no es necesario):
130
+ ```yaml
131
+ local:
132
+ base_url: "http://localhost:11434/v1"
133
+ model: "llama3"
134
+ ```
135
+ 3. Ejecuta con el flag local:
136
+ ```bash
137
+ evolutia --tema basicos --api local --output prueba_local
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Gestión de Materiales (Cómo "ve" los ejercicios EvolutIA)
143
+
144
+ Para que el sistema encuentre tus ejercicios y lecturas, utiliza una estrategia de descubrimiento basada en carpetas y metadatos.
145
+
146
+ 1. **Escaneo de Carpetas**: Busca archivos `.md` dentro de la carpeta del tema (ej: `./analisis_vectorial/`).
147
+ 2. **Tags y Metadatos**: Para archivos fuera de esa carpeta (ej. en `tareas/`), el sistema lee el *frontmatter* YAML. Incluye el tag del tema para hacerlo visible:
148
+
149
+ ```yaml
150
+ ---
151
+ title: Tarea 1
152
+ tags:
153
+ - analisis_vectorial # <--- Este tag permite que evolutia encuentre el archivo
154
+ - stokes
155
+ ---
156
+ ```
157
+
158
+ ### Trazabilidad
159
+ Los ejercicios generados heredan los tags de sus "padres". El archivo final del examen (`examenX.md`) resume todos los temas cubiertos.
160
+
161
+ ---
162
+
163
+ ## Estructura del Proyecto
164
+
165
+ Se recomienda la siguiente estructura para tus cursos:
166
+
167
+ ```
168
+ MiCurso/
169
+ ├── evolutia_config.yaml # Configuración específica del curso
170
+ ├── analisis_vectorial/ # Materiales del tema 1
171
+ │ ├── lectura.md
172
+ │ └── practica.md
173
+ ├── matrices/ # Materiales del tema 2
174
+ ├── examenes/ # Salida generada por EvolutIA
175
+ └── .env # API Keys (no subir a git)
176
+ ```
177
+
178
+ > **Nota para usuarios antiguos**: Anteriormente se recomendaba usar Git Submodules. Ese método ha sido archivado. Si lo necesitas, consulta [docs/legacy/GUIDE_SUBMODULES.md](docs/legacy/GUIDE_SUBMODULES.md).
179
+
180
+ ## Contribuciones y Desarrollo
181
+
182
+ El código fuente está organizado modularmente en `evolutia/`:
183
+ - `evolutia_engine.py`: Orquestador principal.
184
+ - `variation_generator.py`: Lógica de prompts y llamadas a LLMs.
185
+ - `rag/`: Subsistema de indexación y recuperación.
186
+
187
+ Para reportar bugs o mejoras, por favor visita el repositorio en GitHub.
188
+
189
+ ## Licencia
190
+ Apache 2.0
@@ -2,4 +2,4 @@ from .evolutia_engine import EvolutiaEngine
2
2
  from .variation_generator import VariationGenerator
3
3
  from .llm_providers import LLMProvider, get_provider
4
4
 
5
- __version__ = "0.1.0"
5
+ __version__ = "0.1.1"
@@ -51,12 +51,14 @@ class ConfigManager:
51
51
  if root_config.exists():
52
52
  self.config_path = root_config
53
53
  else:
54
- # Default interno: evolutia/config/config.yaml
55
- # self.base_path suele ser root
56
- # Si base_path es root, la config está en root/evolutia/config/config.yaml
57
- self.config_path = self.base_path / 'evolutia' / 'config' / 'config.yaml'
54
+ # Default interno: ubicado en el paquete instalado
55
+ # Obtenemos la ruta de este archivo (config_manager.py) -> parent (evolutia/) -> config -> config.yaml
56
+ self.config_path = Path(__file__).parent / 'config' / 'config.yaml'
58
57
 
59
- logger.info(f"Usando archivo de configuración: {self.config_path}")
58
+ if self.config_path.exists():
59
+ logger.info(f"Usando archivo de configuración: {self.config_path}")
60
+ else:
61
+ logger.info(f"Archivo de configuración no encontrado en {self.config_path}. Usando configuración por defecto.")
60
62
 
61
63
  def validate_config(self, config_data: Dict[str, Any]) -> bool:
62
64
  """Valida la configuración contra el esquema JSON."""
@@ -187,6 +189,10 @@ class ConfigManager:
187
189
 
188
190
  logger.info(f"Configuración actualizada en {self.config_path}")
189
191
 
192
+ def update_config_from_structure(self):
193
+ """Alias para update_config, usado por compatibilidad."""
194
+ return self.update_config()
195
+
190
196
  def main():
191
197
  import argparse
192
198
  parser = argparse.ArgumentParser(description='Gestor de configuración automática de Evolutia')
@@ -13,6 +13,8 @@ class LLMProvider(ABC):
13
13
 
14
14
  def __init__(self, model_name: Optional[str] = None):
15
15
  self.model_name = model_name
16
+ self.client = None
17
+ self.genai = None # For Gemini
16
18
  self.api_key = self._get_api_key()
17
19
  if self.api_key:
18
20
  self._setup_client()