Skip to main content

Sistema automatizado para generar preguntas de examen desafiantes basadas en materiales didácticos existentes

Project description

EvolutIA: Generador de preguntas de examen

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.

Características Principales

  • Multi-Modo:
    • Variación: Incrementa la complejidad de ejercicios existentes.
    • Creación: Genera ejercicios nuevos desde cero basados en temas y tags.
  • RAG (Retrieval-Augmented Generation): Usa tus propios apuntes y ejercicios previos como contexto para generar contenido más alineado al curso.
  • Multi-Proveedor: Soporte nativo para OpenAI (GPT-4), Anthropic (Claude 3), Google (Gemini 1.5) y Modelos Locales (via Ollama/LM Studio).
  • Análisis de Complejidad: Valida automáticamente que las nuevas preguntas sean matemáticamente más exigentes.
  • Formato MyST: Salida compatible con Curvenote y Jupyter Book.

Instalación

Requisitos Previos

  • Python 3.8 o superior
  • API Key de tu proveedor preferido (OpenAI, Anthropic, Google) o un servidor local (Ollama).

Opción 1: Instalación desde PyPI (Recomendada)

Para uso general, instala directamente el paquete:

# Crear entorno virtual (Recomendado)
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Instalar
pip install evolutia

Opción 2: Instalación desde Fuente (Desarrollo)

Si deseas modificar el código o contribuir:

git clone https://github.com/glacy/evolutIA.git
cd evolutia
pip install -e .

Configuración Inicial

Crea un archivo .env en la raíz de tu proyecto con tus credenciales:

OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...

Guía de Uso Rápido

El comando principal es evolutia. Aquí tienes los casos de uso más comunes:

1. Generar Variaciones (Modo Clásico)

Toma ejercicios existentes de un tema y crea versiones más complejas.

# Generar 3 variaciones del tema 'analisis_vectorial'
evolutia --tema analisis_vectorial --num_ejercicios 3 --output examenes/parcial1

O variar ejercicios específicos por su etiqueta (Label):

evolutia --tema analisis_vectorial --label ex1-s1 ex2-s1 --output examenes/recuperacion

2. Crear Nuevos Ejercicios (Modo Creación)

Genera ejercicios desde cero sin necesitar un "ejercicio semilla".

# Crear 3 ejercicios nuevos sobre 'numeros_complejos'
evolutia --mode creation --tema numeros_complejos --num_ejercicios 3 --output examenes/quiz1

3. Usar RAG (Contexto del Curso)

Enriquece la generación indexando tus lecturas y prácticas.

# La primera vez, usa --reindex para leer tus materiales
evolutia --tema matrices --num_ejercicios 3 --use_rag --reindex --output examenes/final

# Consultas posteriores (usa el índice ya creado)
evolutia --tema matrices --num_ejercicios 3 --use_rag --output examenes/final

4. Consultar tu Base de Conocimiento

Pregúntale al sistema qué sabe sobre un concepto (útil para verificar RAG):

evolutia --query "Teorema de Stokes"

Configuración Avanzada

EvolutIA es altamente configurable a través del archivo evolutia_config.yaml o argumentos CLI.

Archivo de Configuración

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:

# Analiza tu estructura de carpetas y genera/actualiza la config
evolutia --analyze
# O explícitamente usando el script auxiliar
python evolutia/config_manager.py

Argumentos CLI Disponibles

Argumento Descripción Default
--tema Identificador del tema (carpeta) Requerido
--output Carpeta de salida Requerido
--num_ejercicios Cantidad a generar 1
--complejidad Nivel objetivo (media, alta, muy_alta) alta
--api Proveedor (openai, anthropic, gemini, local) openai
--type Tipo de pregunta (problem, multiple_choice) problem
--no_generar_soluciones Omite la creación de archivos de solución False

Uso con Modelos Locales (Offline)

Para usar modelos como Llama 3 o Mistral sin costo de API:

  1. Ejecuta tu servidor (ej. ollama serve).
  2. Configura evolutia_config.yaml (opcional, si usas defaults de Ollama no es necesario):
    local:
      base_url: "http://localhost:11434/v1"
      model: "llama3"
    
  3. Ejecuta con el flag local:
    evolutia --tema basicos --api local --output prueba_local
    

Gestión de Materiales (Cómo "ve" los ejercicios EvolutIA)

Para que el sistema encuentre tus ejercicios y lecturas, utiliza una estrategia de descubrimiento basada en carpetas y metadatos.

  1. Escaneo de Carpetas: Busca archivos .md dentro de la carpeta del tema (ej: ./analisis_vectorial/).
  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:
---
title: Tarea 1
tags: 
  - analisis_vectorial  # <--- Este tag permite que evolutia encuentre el archivo
  - stokes
---

Trazabilidad

Los ejercicios generados heredan los tags de sus "padres". El archivo final del examen (examenX.md) resume todos los temas cubiertos.


Estructura del Proyecto

Se recomienda la siguiente estructura para tus cursos:

MiCurso/
├── evolutia_config.yaml      # Configuración específica del curso
├── analisis_vectorial/       # Materiales del tema 1
│   ├── lectura.md
│   └── practica.md
├── matrices/                 # Materiales del tema 2
├── examenes/                 # Salida generada por EvolutIA
└── .env                      # API Keys (no subir a git)

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.

Contribuciones y Desarrollo

El código fuente está organizado modularmente en evolutia/:

  • evolutia_engine.py: Orquestador principal.
  • variation_generator.py: Lógica de prompts y llamadas a LLMs.
  • rag/: Subsistema de indexación y recuperación.

Para reportar bugs o mejoras, por favor visita el repositorio en GitHub.

Licencia

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evolutia-0.1.1.tar.gz (55.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evolutia-0.1.1-py3-none-any.whl (58.5 kB view details)

Uploaded Python 3

File details

Details for the file evolutia-0.1.1.tar.gz.

File metadata

  • Download URL: evolutia-0.1.1.tar.gz
  • Upload date:
  • Size: 55.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for evolutia-0.1.1.tar.gz
Algorithm Hash digest
SHA256 56c11e5e3333e245f778b223d155d55beacc378b9338802d9d95befe3daa9612
MD5 736134606886468a85e47970f0f33e48
BLAKE2b-256 90581191fbc498538b4ee995948d4e42d7dd8d10532ed4bbddd6b313c1410b78

See more details on using hashes here.

File details

Details for the file evolutia-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: evolutia-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 58.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for evolutia-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 08bf9e3b551a451e88916f593e7f729a577f458aad9bbe587f025316cfbf98e0
MD5 55bf27f6f0461b3485430006fe546ed6
BLAKE2b-256 2c9ad60d4cceadfacd1d7707add0e4317f8d1a0a74a08a474c9051daefd25570

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page