
Prompt Lab: la primera versión, medida antes de darla por buena
Esta entrada nace de dos sitios distintos a la vez. Por un lado, de la unidad didáctica de 10 sesiones sobre ingeniería de prompts que llevaba tiempo esbozada para 2º de Bachillerato del IES Monterroso: qué es un prompt, hipótesis y experimentación, contexto, restricciones, formato, iteración, debugging de prompts, evaluación, comparación de modelos. Una unidad que necesitaba una herramienta real detrás, no solo una pizarra. Por otro lado, de algo muy concreto: había que comprobar si esa herramienta podía construirse ya, con lo que hay disponible en el centro, antes de dar por sentado nada sobre plazos ni sobre rendimiento.
Juntando las dos cosas nace Prompt Lab: un proyecto independiente de PINSAPIA, aunque reutiliza el mismo modelo local de ROCKY, con un objetivo pedagógico muy concreto —que un alumno escriba un objetivo, pruebe 3 prompts distintos para conseguirlo, vea las 3 respuestas una al lado de la otra, y descubra por sí mismo qué hace que un prompt funcione mejor— y no una plantilla de prompt ya masticada.
El primer paso: comprobar que lo más básico funciona
Antes de diseñar ninguna interfaz se comprobó lo único de lo que depende todo lo demás: si el modelo local de ROCKY (LM Studio, el mismo que usa PINSAPIA) responde de verdad a una llamada sencilla, sin RAG ni personalidad, tal como necesita Prompt Lab. Un script mínimo, un único prompt en crudo —”Hazme un programa en Python que calcule la media de tres números”— y a esperar.
✅ Respuesta recibida en 40.4 s
Sin GPU, ese es el punto de partida real de ROCKY, no una cifra supuesta.
Medir el paralelismo, no suponerlo
El diseño de Prompt Lab contempla lanzar los 3 prompts del alumno a la vez y mostrar las 3 respuestas juntas. En un modelo servido por CPU, sin GPU, esa decisión no se podía dar por buena sin comprobarla: podía no haber ninguna ganancia, o incluso salir peor si las peticiones simplemente se ponen en cola una detrás de otra.
Se midió con un script que lanza 3 prompts distintos a la vez y compara el tiempo total contra la suma de los tres por separado:
Prompt 1: 76.6 s (1914 caracteres)
Prompt 2: 12.9 s (60 caracteres)
Prompt 3: 47.5 s (918 caracteres)
Tiempo total del conjunto (los 3 a la vez): 76.6 s
Suma de las 3 duraciones individuales: 137.0 s
Paralelismo real, no aparente: 76,6 s frente a los 137 s que habría costado en serie. Con ese dato, y no antes, se decidió que el MVP lanza los 3 prompts a la vez, delegando la orquestación en el propio navegador (tres fetch() simultáneos), sin necesidad de un endpoint intermedio que combine las respuestas.
Ese primer resultado, sin embargo, no fue la última palabra. Con un objetivo de pregunta abierta en vez de una petición de código (“qué es un lince ibérico y sus variaciones”), las tres respuestas saltaron por timeout casi a la vez, en torno a los 120 segundos. Parecía un fallo de la aplicación. No lo era: el límite de 120 s lo había puesto un valor arbitrario, calculado sobre prompts más cortos que los reales. Al subirlo a 300 s como valor de diagnóstico, las tres respuestas llegaron sin problema. El paralelismo seguía siendo real; lo que estaba mal calibrado era la paciencia del propio código, no el modelo.
Cómo se usa
Prompt Lab es una aplicación FastAPI con un único endpoint (/generar) que recibe un prompt en crudo y devuelve la respuesta del modelo, y una página estática servida por la misma aplicación. Se lanza así, desde la carpeta del proyecto:
pip install -r requirements.txt
uvicorn main:app --reload --port 8001
Con LM Studio ya con el servidor local activo, http://127.0.0.1:8001 muestra el objetivo, las 3 cajas de prompt, un botón “Ejecutar los 3 prompts” y, debajo de cada respuesta, una tabla con los 5 criterios de evaluación del proyecto: cumple el objetivo, respeta las restricciones, es claro, funciona, no está sobrecomplicado. Nada se guarda en servidor: la evaluación vive en memoria del navegador mientras dura la sesión, tal como pide el diseño del MVP.
Qué hace y qué no (límites honestos)
- El tiempo de espera es real y puede ser largo: en el i3 sin GPU de ROCKY, la más lenta de tres respuestas simultáneas tardó 150 segundos. Es la cifra que hay hoy, no la que tendrá la aplicación cuando se instale en la máquina del instituto, que sí lleva GPU.
- El paralelismo ayuda, pero no está garantizado en todas las condiciones: se ha confirmado con prompts cortos y con uno de pregunta abierta, pero no se ha medido todavía bajo carga sostenida ni con los 3 prompts pidiendo respuestas largas a la vez.
- No hay autenticación ni límite de peticiones, a propósito: es una herramienta para una sesión de clase controlada, no para estar expuesta en abierto. Si Prompt Lab sale de ese contexto, esto habrá que revisarlo, igual que tuvo que hacerlo PINSAPIA al pasar a la red del centro.
- No hay todavía batería de pruebas automatizadas, solo los scripts de comprobación manual (
probar_modelo.py,probar_concurrencia.py) usados durante esta sesión.
Siguiente paso
Que José Luis lleve Prompt Lab a la máquina del instituto, con GPU, y repita las mismas mediciones —una respuesta sola, tres a la vez— para ver cuánto cambia el panorama real de rendimiento antes de tocar el límite de espera o cualquier otra cifra basada en ROCKY. Después, pulir la interfaz pensando ya en el alumnado, y solo cuando el MVP esté maduro, abordar lo que el proyecto deja deliberadamente para más adelante: guardar los resultados de una sesión, diseñar experimentos con hipótesis, y comparar con otros modelos, avisando siempre del coste antes de tocar una sola línea de código.




