Jose Salazar commited on
Commit
42cdd91
·
1 Parent(s): c943c9a

Refactor AI prompt from negative constraints to positive example-based format

Browse files

Replaces prohibitive instructions (Prohibido, INCUMPLIR) with a
positive prompt engineering approach using:
- Clear role definition
- Simple positive rules
- Concrete example of expected output format

This reduces the likelihood of the model outputting reasoning
processes in English, as negative constraints often trigger the
opposite behavior in instruction-tuned models.

Files changed (2) hide show
  1. .gitattributes +5 -4
  2. js/ia.js +22 -13
.gitattributes CHANGED
@@ -32,7 +32,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
32
  *.xz filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text*.ttf filter=xet
36
- *.otf filter=xet
37
- *.woff filter=xet
38
- *.woff2 filter=xet
 
 
32
  *.xz filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.ttf filter=lfs diff=lfs merge=lfs -text
37
+ *.otf filter=lfs diff=lfs merge=lfs -text
38
+ *.woff filter=lfs diff=lfs merge=lfs -text
39
+ *.woff2 filter=lfs diff=lfs merge=lfs -text
js/ia.js CHANGED
@@ -69,23 +69,32 @@ function construirPrompt(obtenerDatosPaciente, obtenerValoresFormulario, getUlti
69
  cierre = `Proporciona una interpretación clínica breve (8-10 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
70
  }
71
 
72
- return `INSTRUCCIONES OBLIGATORIAS — INCUMPLIR CUALQUIERA INVALIDA LA RESPUESTA:
73
- 1. Responde ÚNICAMENTE en español. Prohibido el inglés.
74
- 2. Prohibido mostrar razonamiento, pasos, numeración, listas de análisis o proceso interno.
75
- 3. Prohibido usar: thought, thinking, here's a, process, step, analyze, review, step-by-step.
76
- 4. La respuesta DEBE comenzar INMEDIATAMENTE con la interpretación clínica. Sin preámbulos.
77
- 5. Máximo 10 oraciones. Sé directo y conciso.
78
 
79
- ${notaImagenes ? `${notaImagenes}\n` : ''}
80
- Eres médico veterinario especialista en patología clínica.
81
 
82
- Paciente: ${paciente.especie || 'desconocido'}, raza: ${paciente.raza || 'NE'}, edad: ${edadTexto}, sexo: ${paciente.sexo || 'NE'}
 
 
 
 
 
83
 
84
- Hallazgos de laboratorio:
85
- ${lineasValores}
86
 
87
- ${signosText ? `Signos clínicos: ${signosText}` : ''}
88
- ${cierre}`;
 
 
 
 
 
 
 
 
89
  }
90
 
91
  function limpiarRespuesta(text) {
 
69
  cierre = `Proporciona una interpretación clínica breve (8-10 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
70
  }
71
 
72
+ const ejemploRespuesta = hayImagenes
73
+ ? 'Las imágenes muestran neutrófilos con toxicidad moderada y presencia de cuerpos de Döhle, indicativos de respuesta inflamatoria sistémica. Los resultados de laboratorio confirman leucocitosis con desviación izquierda. Se sugiere descartar proceso infeccioso severo mediante hemocultivo y paneles diagnósticos dirigidos.'
74
+ : 'El paciente presenta leucocitosis con neutrofilia y linfopenia, sugestiva de respuesta inflamatoria aguda con posible compromiso inmune. Los valores de creatinina elevados indican disfunción renal que requiere evaluación adicional. Se recomienda completar el estudio con urocultivo y ecografía abdominal.';
 
 
 
75
 
76
+ return `Eres médico veterinario especialista en patología clínica. Interpreta los siguientes resultados de laboratorio y proporciona un análisis clínico conciso.
 
77
 
78
+ REGLAS DE RESPUESTA:
79
+ - Responde ÚNICAMENTE en español
80
+ - Máximo 10 oraciones
81
+ - Comienza DIRECTAMENTE con la interpretación clínica, sin introducciones
82
+ - No uses listas numeradas ni expliques tu proceso de análisis
83
+ - Sé directo, profesional y clínico
84
 
85
+ Ejemplo de formato esperado:
86
+ "${ejemploRespuesta}"
87
 
88
+ PACIENTE:
89
+ ${paciente.especie || 'desconocido'}, raza: ${paciente.raza || 'NE'}, edad: ${edadTexto}, sexo: ${paciente.sexo || 'NE'}
90
+
91
+ RESULTADOS DE LABORATORIO:
92
+ ${lineasValores}
93
+
94
+ ${signosText ? `SIGNOS CLÍNICOS: ${signosText}` : ''}
95
+
96
+ ${notaImagenes ? notaImagenes + '\n' : ''}
97
+ ${cierre}`;
98
  }
99
 
100
  function limpiarRespuesta(text) {