Secuencia de Prompts Mejorada para el Proyecto Final

Instrucción Base (Para que el estudiante la use al inicio de cada sesión con la IA)

“Actúa como un Ingeniero de Datos Senior y Tutor Experto en Estadística, Python y Streamlit. Todo el código que generes debe cumplir con PEP-8, incluir type hints, docstrings detallados (estilo Google o NumPy), y estar estrictamente modularizado. Prioriza el uso de st.session_state para evitar recálculos innecesarios y @st.cache_data para el manejo de datos. Responde siempre en español.”


Fase 1: Arquitectura, Entorno y Navegación Moderna

Prompt 1. Comprensión general y arquitectura moderna > “Soy estudiante de Ingeniería Agrícola. Debo desarrollar una app web profesional en Streamlit para analizar diseños experimentales (DCA, DBCA, DCL, DPD, Factoriales, RSM). Antes de programar, propón un plan de desarrollo por etapas. Además, explícame cómo estructurar la app usando la API moderna de navegación de Streamlit (st.navigation y st.Page) en lugar de la carpeta pages/ tradicional, para tener un control total del menú lateral. Incluye en el plan un módulo transversal de ‘Bitácora de IA y Verificación Manual’.”

Prompt 2. Diseño de la estructura del proyecto > “Propón una estructura profesional de carpetas y archivos para la app app_diseno_experimental. Debe incluir: app.py (navegación principal), carpeta modules/ (para las páginas de cada diseño), carpeta utils/ (funciones reutilizables), data/, assets/, tests/ (para pytest), requirements.txt, README.md, .gitignore y pyproject.toml o setup.py. Explica la función de cada elemento y dame los comandos de terminal para crear el entorno virtual en Windows PowerShell e instalar las dependencias.”

Prompt 3. Creación del requirements.txt y dependencias > “Genera el requirements.txt para esta app. Debe incluir: streamlit, pandas, numpy, scipy, statsmodels, matplotlib, plotly, kaleido, openpyxl, pingouin, pytest y scikit-learn (para métricas en RSM). Indícame la versión recomendada de cada una, para qué sirve y qué problemas comunes surgen al instalar kaleido en sistemas operativos modernos y cómo solucionarlos.”


Fase 2: Módulo Base, UX y Ética

Prompt 4. Página principal y Navegación Moderna > “Crea el código de app.py usando st.navigation y st.Page para importar los módulos desde la carpeta modules/. La página de inicio (home.py) debe incluir: Título, propósito, advertencia académica sobre la interpretación de resultados, y una sección especial llamada ‘Reserva Cognitiva y Ética’ que explique por qué la app no reemplaza el cálculo manual ni el criterio del ingeniero. El código debe usar st.set_page_config, incluir un tema visual personalizado (colores institucionales o neutros profesionales) y estar perfectamente documentado.”


Fase 3: Diseños de Un Factor y Bloques (DCA, DBCA, DCL)

Prompt 5. Módulo DCA con gestión de estado y puente R-Python > “Desarrolla modules/01_dca.py. Debe permitir cargar CSV/Excel, seleccionar tratamiento y respuesta. Ajusta el ANOVA con statsmodels. Muestra tabla ANOVA, medias, gráficas de cajas y prueba de Tukey. Requisitos profesionales: 1) Usa st.session_state para guardar el dataframe y el modelo ajustado, evitando que se recalcule al mover un slider. 2) Incluye un st.toggle('Ver código equivalente en R') que muestre en un st.code el script de R usando el paquete agricolae para obtener el mismo resultado. 3) Incluye un dataset de ejemplo de Ingeniería Agrícola (ej. rendimiento de maíz por variedad).”

Prompt 6. Refactorización hacia utils/ y Pruebas Unitarias > “Refactoriza la lógica del DCA. Crea utils/anova_utils.py con funciones tipadas y documentadas para: cargar datos, validar columnas, ajustar ANOVA, generar tabla, calcular medias y hacer Tukey. Luego, crea tests/test_anova_utils.py usando pytest para probar al menos 3 funciones con datos simulados. Explica cómo ejecutar las pruebas y por qué esto es vital en una app profesional.”

Prompt 7. Módulo DBCA > “Desarrolla modules/02_dbca.py. Permite seleccionar bloque, tratamiento y respuesta. Modelo: respuesta ~ C(tratamiento) + C(bloque). Muestra ANOVA, medias, gráficas y Tukey. Incluye un dataset de interés en Ingeniería Agrícola (ej. gradientes de suelo). Usa las funciones de utils/anova_utils.py adaptándolas si es necesario para incluir el efecto de bloque. Añade un cálculo de la Eficiencia Relativa del Bloqueo respecto a un DCA.”

Prompt 8. Módulo DCL > “Desarrolla modules/03_dcl.py. Permite seleccionar fila, columna, tratamiento y respuesta. Valida que el diseño sea un cuadro latino (mismo número de niveles en filas, columnas y tratamientos). Modelo: respuesta ~ C(fila) + C(columna) + C(tratamiento). Explica pedagógicamente qué controla cada factor. Incluye un ejemplo aplicado a mecanización agrícola (ej. velocidad, profundidad, tipo de suelo).”


Fase 4: Diseños Complejos y Factoriales

Prompt 9. Módulo DPD (Parcelas Divididas) > “Desarrolla modules/04_dpd.py. El experimento tiene factor principal (parcelas), factor secundario (subparcelas) y bloques. Permite seleccionar estas variables. Ajusta el modelo diferenciando el Error de parcela principal y Error de subparcela (explica cómo hacerlo en statsmodels usando Error() o términos anidados). Muestra ANOVA, medias, interacción y gráficas. Ejemplo: Riego (principal) y Dosis de Nitrógeno (secundario) en maíz. Advierte sobre las limitaciones de statsmodels para errores anidados y muestra la alternativa en R.”

Prompt 10. Módulo de Diseños Factoriales > “Desarrolla modules/05_factoriales.py. Permite analizar factoriales de dos o más factores. Construye la fórmula dinámicamente (ej. Y ~ A * B * C). Muestra ANOVA con efectos principales e interacciones. Grafica interacciones usando plotly. Ejemplo aplicado a Ingeniería Agroindustrial: Temperatura, Tiempo y Concentración de un conservante sobre la vida útil de un producto. Incluye el código R equivalente usando aov().”


Fase 5: Metodología de Superficie de Respuesta (RSM)

Prompt 11. Módulo RSM: Modelos y Punto Estacionario > “Desarrolla modules/06_rsm.py. Estructura en st.tabs: 1) Primer Orden, 2) Máximo Ascenso, 3) Segundo Orden, 4) Punto Estacionario. Permite cargar datos con variables codificadas. Ajusta modelos lineales y cuadráticos. Calcula el punto estacionario usando la matriz B y el vector b. Clasifica el punto (máximo, mínimo, punto de silla) usando los eigenvalores. Usa @st.cache_resource para los cálculos matriciales pesados.”

Prompt 12. Módulo RSM: Visualización y Exportación > “Continúa con modules/06_rsm.py. Añade las pestañas: 5) Superficie 3D, 6) Curvas de Nivel, 7) Exportación. Genera mallas de predicción. Muestra la superficie 3D y contornos usando plotly.graph_objects. Permite exportar las figuras a PNG y PDF usando kaleido (fig.write_image). Asegúrate de que las gráficas sean interactivas y tengan ejes etiquetados con las variables reales (no solo codificadas).”

Prompt 13. Refactorización profunda de RSM > “Refactoriza la lógica de RSM en módulos dentro de utils/: rsm_coding.py, rsm_models.py, rsm_stationary.py, rsm_mesh.py, rsm_plots.py. Asegúrate de que cada función tenga docstrings que expliquen la fórmula matemática que implementa. Reescribe modules/06_rsm.py para que solo contenga la lógica de la interfaz de Streamlit (UI), delegando todo el cálculo a utils/.”


Fase 6: Transversalidad, Diagnóstico y UX

Prompt 14. Diagnóstico de Supuestos Transversal > “Crea utils/diagnostics_utils.py con funciones para: residuos vs ajustados, QQ-plot, Shapiro-Wilk y Levene. Luego, crea un componente reutilizable components/diagnostico.py que pueda ser importado e insertado en los módulos DCA, DBCA, DCL y Factoriales mediante st.expander('Diagnóstico de Supuestos'). Incluye una interpretación automática y pedagógica de los p-valores para los estudiantes.”

Prompt 15. Módulo de Bitácora de IA y Verificación (Alineado al Syllabus) > “Crea modules/07_bitacora.py. Esta página permitirá al estudiante registrar: 1) El problema experimental. 2) Sus cálculos manuales o hipótesis previas (reserva cognitiva). 3) El prompt que usó con la IA para resolver el código. 4) La validación humana que hizo. Guarda esta bitácora en un archivo JSON o CSV descargable. Esto cumple con el requisito de trazabilidad y ética en el uso de IA de mi plan de estudios.”

Prompt 16. Exportación de Reportes Completos > “Crea utils/export_utils.py. Permite descargar: Tabla ANOVA, Medias, Tukey, y un reporte en Markdown que resuma el análisis (incluyendo el diagnóstico de supuestos y la interpretación). Usa BytesIO y st.download_button. Asegúrate de que los archivos Excel tengan formato condicional básico (ej. resaltar en rojo los p-valores < 0.05).”


Fase 7: Despliegue, Documentación y Sustentación

Prompt 17. README Académico y Técnico > “Escribe un README.md profesional para GitHub. Debe incluir: Título, badges de licencia y versión, descripción, objetivo académico, capturas de pantalla (placeholders), instalación local, ejecución, estructura del proyecto, tecnologías, y una sección especial sobre ‘Ética, Reserva Cognitiva y Uso de IA en el desarrollo’. Tono académico y claro.”

Prompt 18. Preparación para GitHub y Streamlit Cloud > “Dame el .gitignore exacto para Python, Streamlit y entornos virtuales. Proporciona los comandos de Git para inicializar, hacer commit y push. Luego, explica paso a paso cómo desplegar en Streamlit Community Cloud, cómo solucionar errores comunes de dependencias (ej. kaleido o scipy en Linux) y cómo configurar el Secrets de Streamlit si fuera necesario.”

Prompt 19. Guion para Sustentación Final > “Organiza un guion para una sustentación de 15 minutos. Estructura: 1) Problema agrícola resuelto. 2) Arquitectura técnica (mostrar el diagrama de carpetas). 3) Demostración en vivo de un DBCA y un RSM. 4) Explicación de cómo la app fomenta la reserva cognitiva y no reemplaza al ingeniero. 5) Limitaciones y trabajo futuro. Divide el guion entre los integrantes del grupo.”


Fase 8: Prompts de Emergencia (Depuración)

Prompt 20. Error de Importación y Estructura > “Me aparece ModuleNotFoundError: No module named 'utils...'. Esta es mi estructura de carpetas: [pegar estructura]. Este es mi app.py: [pegar código]. Diagnostica el problema. Explícame si necesito archivos __init__.py, si debo modificar el sys.path, o si la forma en que Streamlit maneja el directorio de trabajo está causando el error. Dame la solución exacta.”

Prompt 21. Error Estadístico o de Dimensiones en RSM > “Al calcular el punto estacionario en RSM, me da un error de dimensiones en las matrices o el modelo no converge. Este es mi dataframe: [pegar]. Este es el código de rsm_stationary.py: [pegar]. Revisa la matemática detrás de la matriz B y el vector b. Corrige el código en Python y explícame el error estadístico.”


Recomendaciones Adicionales para el Docente

  1. Evaluación por Hitos: Dado que la app es extensa, le sugiero evaluar a los estudiantes por hitos (Fase 1-2, Fase 3-4, Fase 5, etc.) para evitar que se abrumen al final del semestre.
  2. Énfasis en st.session_state: Insista a sus estudiantes en que no suban la app a la nube sin implementar la gestión de estado. Una app de Streamlit que recalcula el ANOVA cada vez que el usuario cambia de pestaña es considerada de “baja calidad” en el entorno profesional.
  3. Validación Cruzada R-Python: El “toggle” de R-Python sugerido en los prompts es una herramienta pedagógica poderosa. Permite que el estudiante verifique que la librería de Python (statsmodels) y la de R (agricolae) arrojan los mismos resultados, reforzando la confianza en la herramienta computacional.