morphos / USO_DE_IA.md
josesalazar2025
Add Spanish explanatory comments across JS modules and PHP proxy
d90e9a6
|
Raw
History Blame Contribute Delete
4.2 kB

Uso de inteligencia artificial en el desarrollo de Morphos

Proyecto final — Curso de Desarrollo Web 2026


Modelo utilizado

Se utilizó Claude Code (Sonnet 4.6) de Anthropic como asistente de desarrollo a lo largo de todo el proyecto y para el despliegue, docker y debug del comportamiento del modelo de IA se utilizó Kimi 2.6 con Open Code CLI.


Enfoque: Spec Driven Development

El uso de IA no consistió en generar código y aceptarlo sin más. Se aplicó un enfoque de desarrollo guiado por especificaciones: en cada paso se definió primero el comportamiento esperado, funciones base, las restricciones de diseño y los criterios de aceptación, y el modelo generó propuestas dentro de ese marco. La arquitectura, la separación de módulos, las decisiones de estructura y el flujo de datos fueron definidos y controlados por mi parte en todo momento gracias a los criterios y conocimientos adquiridos durante el curso.

El modelo actuó como ejecutor de decisiones ya tomadas, no como tomador de decisiones.


Literatura de referencia en patología clínica veterinaria

Para el motor de detección de patrones (analisis.js) y los datos de referencia (valores_referencia.json, alteraciones.json), se proporcionó al modelo literatura especializada en patología clínica veterinaria como contexto de generación.

Los rangos de referencia por especie, los ajustes por edad, raza y sexo, las descripciones clínicas de cada alteración, y la lógica de clasificación de gravedad fueron validados gracias a mi formación y experiencia profesional en Medicina Veterinaria, antes de ser incorporados al código. El modelo fue un medio para estructurar y codificar ese conocimiento, no la fuente del mismo. Se han realizado múltiples pruebas con resultados de laboratorio reales y citologías de pacientes facilitados por otros veterinarios ejercientes.

Textos de referencia utilizados:

  • Thrall, Veterinary Hematology and Clinical Chemistry, 3.ª ed. 2022
  • Weiss, — Schalm's Veterinary Hematology, 7.ª ed. 2022

Afinamiento del prompt y control de salidas del modelo de IA

Morphos utiliza medGemma como modelo de interpretación clínica. Durante el desarrollo se detectó que el modelo producía salidas con problemas recurrentes:

  • Respuestas en inglés a pesar de instrucciones en español
  • Tokens de control expuestos en la salida (<start_of_turn>, <unused94>, <unused95>)
  • Bloques de LaTeX embebidos en la respuesta
  • Párrafos repetidos en bucle al acercarse al límite de tokens
  • Prefijos de rol visibles al inicio del texto

Se iteró sobre el prompt y se implementó una función de limpieza de salida (limpiarRespuesta en ia.js) que elimina estos artefactos antes de mostrar el resultado al usuario. El prompt final incluye restricciones explícitas de idioma, alcance clínico y formato de respuesta.


Caché y optimización de rendimiento

Durante las auditorías de rendimiento con Lighthouse se identificó que la carga de fuentes tipográficas locales y librerías (PDF.js) afectaba negativamente las métricas. Se implementaron las siguientes mejoras, asistidas por el modelo:

  • Directivas preload y preconnect en el <head> para recursos críticos
  • Caché de larga duración para fuentes, CSS y JS en .htaccess
  • Caché en disco de 30 minutos para las respuestas de la API de PubMed, evitando llamadas repetidas a la misma consulta
  • Compresión gzip habilitada por tipo de contenido

Auditoría final de código

Al concluir el desarrollo se realizó una auditoría asistida por IA con los siguientes objetivos:

Código muerto

  • Identificación y eliminación de exportaciones sin consumidores y código que ya no era necesario o era experimental

Seguridad

  • Protección de archivos sensibles (.env, setup.php) mediante .htaccess
  • Sanitización de datos externos de APIs con textContent en lugar de innerHTML, eliminando el riesgo de XSS
  • Validación de URLs externas antes de usarlas como atributos href
  • Separación del nombre de usuario del SVG estático al actualizar el botón de sesión, evitando inyección de HTML desde la base de datos