Daily Scrum — 10 de febrero de 2026

🎯 Objetivo hoy

Inicio de Semana 3: Implementar módulo de evaluación de dificultad.


✅ ¿Qué hice ayer?

  • Comparación K-Means vs FCM completada.
  • FAQs generadas a partir de centroides de clusters.
  • Documentación de métricas ARI, NMI, Silhouette.
  • Análisis de documentos “trampa” y su clasificación.

🚀 ¿Qué haré hoy?

  1. Diseño del Clasificador de Dificultad (HU #17):
    • Definir niveles: básico, intermedio, avanzado.
    • Diseñar criterios de clasificación basados en embeddings.
    • Crear estructura de módulo chatbot/difficulty.py.
  2. Implementación del Clasificador:
    • Usar clustering de embeddings de preguntas.
    • Implementar distancia a centroides de dificultad.
    • Entrenar clasificador con preguntas etiquetadas.
  3. Integración con el Agente:
    • Modificar flujo del agente para evaluar dificultad.
    • Pasar nivel de dificultad al prompt de respuesta.

🚧 Obstáculos potenciales

  • Definir heurísticas claras para niveles de dificultad.
  • Obtener preguntas etiquetadas para entrenamiento.

✅ Criterios de aceptación

  • Módulo difficulty.py creado.
  • Clasificador de dificultad funcional.
  • Niveles básico/intermedio/avanzado definidos.
  • Integración inicial con flujo del agente.

📝 Notas de implementación

Archivos creados/modificados

Archivo Descripción
chatbot/logic/difficulty.py Módulo principal con DifficultyClassifier, DifficultyLevel, clasificación heurística y por embeddings
chatbot/logic/graph.py Integración en think() node, nuevo campo query_difficulty en SubjectState
chatbot/config.py Settings para difficulty_centroids_path, difficulty_embedding_dim
chatbot/tests/test_difficulty.py Tests unitarios para el clasificador
scripts/train_difficulty_centroids.py Script para entrenar centroides desde preguntas etiquetadas
docs/notas/difficulty-classifier-plan.md Plan de implementación detallado

Enfoque de clasificación

  1. Heurístico (rápido): Patrones regex + keywords para clasificación instantánea
  2. Embeddings (preciso): Distancia a centroides pre-entrenados usando softmax para confianza

Próximos pasos

  • Generar dataset de preguntas etiquetadas (388 preguntas, 3 temas)
  • Entrenar centroides con Ollama embeddings
  • Validar accuracy del clasificador
  • Ajustar prompts según nivel de dificultad detectado

📊 Resultados de Validación

Accuracy del Clasificador

Método Accuracy Notas
Solo Embeddings 53.3% Confunde intermediate→advanced
Híbrido (H+E) 93.3% ✅ Recomendado

Desglose por Nivel (Método Híbrido)

Nivel Accuracy Método Dominante
Basic 100% Heurístico
Intermediate 80% Heurístico (1 fallback a embedding)
Advanced 100% Heurístico

Dataset de Entrenamiento

  • Total: 388 preguntas etiquetadas
  • Temas: Docker, Kubernetes, Git/CI-CD
  • Distribución: Basic (20.6%), Intermediate (51.5%), Advanced (27.8%)
  • Generado con: Mistral LLM

Centroides Entrenados

  • Archivo: chatbot/data/difficulty_centroids.json
  • Dimensión: 768 (nomic-embed-text)
  • Modelo: Ollama en localhost:11435

📝 Notas técnicas

Criterios de Dificultad

  • Básico: Preguntas cortas, vocabulario simple, conceptos fundamentales.
  • Intermedio: Preguntas con terminología técnica, relaciones entre conceptos.
  • Avanzado: Preguntas complejas, múltiples conceptos, aplicaciones prácticas.