Prompt genérico: escribir preguntas con qbank con ayuda de una IA
Instrucciones para un agente de IA («tú», en lo que sigue) que ayuda a
escribir o revisar preguntas de opción múltiple en un proyecto creado con
qbank-init. Valen para cualquier asignatura. Este documento no explica
el motor: remite a la documentación de qbank, que es la fuente de verdad
y se mantiene al día con el código. Lo que hay aquí es qué leer, el proceso
de trabajo y lo que se exige antes de dar una pregunta por buena.
1. Qué leer antes de escribir nada
- El
README.orgde este proyecto: qué hay en la carpeta, el flujo conmakey cómo leer el PDF de la vista profe. - La Guía de diseño (HTML, PDF;
GuiaDiseno.orgsi tienes el repositorio deqbank): la mecánica de listas y mundos, el patrón de tres huecos más la opción por defecto,setup, redacción de cuestiones y deexp, trampas de LaTeX/Moodle y el checklist. Léela entera. Su Vocabulario fija las palabras que usa todo lo demás (hipótesis, mundo, variante, hueco, parte, opción por defecto, vista profe): úsalas tú también al hablar con quien dirige el banco. prompts/PROMPT-proyecto.org: las decisiones de este banco (fuentes, nombres, notación, objetivo pedagógico, checklist propio y registro de decisiones). Cuando difiera de este documento, manda el del proyecto.- El Manual (HTML, PDF) solo como referencia: formato JSON, API,
linty preguntas frecuentes. No inventes parámetros ni funciones: si algo no está en su «Referencia rápida de la API», no existe.
2. Proceso de trabajo
- Lee el material de origen completo e identifica los resultados que merezca la pena evaluar. Cuenta cuántos son: ese es el número de preguntas. No te fijes una cuota; forzar preguntas produce redundancia y referencias artificiosas.
- Diseña antes de escribir y muéstralo: para cada pregunta, el estilo
elegido (mundos,
setupo cuestiones independientes, según la Guía), quéSupuesto, qué huecos con qué alternativas, quésemanticayprecond, y si hace faltasetup. Si en el banco ya hay una pregunta sobre un concepto que esta generaliza, tómala como plantilla de estilo. - Escribe la pregunta por uno de los dos caminos del
README.org: en Python (copia denueva_pregunta.py, que imprime la vista profe y el lint y guarda el JSON con--guardar) o directamente en JSON, copiando una pregunta existente. Nombre de fichero y camponombresegúnPROMPT-proyecto.org. - Valida en el entorno real, nunca de memoria:
make lint(opython -m qbank.lint preguntas/<pregunta>.json --tabla) y, al final,make patrones(patrones memorizables; ver el Manual). UnERRORes una pregunta rota: corrígela. UnAVISOhay que leerlo y decidir; si lo dejas, explica por qué. UnINFOes información. - Recorre todas las variantes, no la primera:
make amc(o, sin LaTeX,por_partes_profe()desde Python, abajo). Comprueba los enunciados, el número de opciones, las marcas en cada mundo y, consetup, varias semillas. Repasa cadaexp. - Pasa los dos checklists casilla por casilla: el de la Guía («Proceso
de trabajo → Checklist») y el de
PROMPT-proyecto.org. Si una falla, corrige y vuelve al paso 4; no lo dejes para después. - Informa: qué has comprobado, qué dijo
lint, qué decisiones has tomado y qué dudas quedan. No digas que una pregunta está validada si no has ejecutado los pasos 4 y 5. - Registra en
PROMPT-proyecto.orgtoda decisión nueva que afecte a más de una pregunta (notación, estilo, criterio), con la fecha.
3. Reglas sin excepción
- Ninguna pregunta se da por buena sin
lintlimpio deERRORy sin haber revisado su vista profe. Si no puedes ejecutar nada, dilo y entrega la pregunta como no validada. - Cada pregunta es un
ProblemaTipoen su propio fichero depreguntas/; no usesProblemaVFni las clases marcadas como deprecadas en el Manual. - No toques
scripts/,Makefileniconfig.pysalvo que te lo pidan. - Si crees que un aviso de
lintes un falso positivo, explícalo; no lo silencies cambiando la pregunta hasta que calle. - Al revisar una pregunta existente, no cambies lo que afirma ni su dificultad sin decirlo expresamente.
- Lo que no se puede deducir del enunciado no se evalúa: ninguna cuestión
depende de qué alternativa salió en otro hueco, ningún
expmenciona mundos, etiquetas dev('…')ni «la opción anterior».
4. Inspeccionar una pregunta desde Python
Con el intérprete que tenga qbank (el entorno activado o la ruta del
PYTHON del Makefile):
from qbank import load_problema, lint, tabla_mundos
p = load_problema("preguntas/L-01-Nombre.json")
print(tabla_mundos(p)) # valor de cada cuestión en cada mundo
for a in lint(p): # los mismos avisos que `make lint`
print(a)
for etiqueta, partes in p.por_partes_profe(): # una entrada por mundo
for enunciado, cuestiones in partes: # (con las rechazadas)
print(etiqueta, enunciado)
for c in cuestiones:
print(" ", c)
por_partes(instances=N, base_seed=S) recorre las variantes tal como las
verá el alumno. El resto de la API está en la «Referencia rápida» del
Manual.