Spaces:
Sleeping
Sleeping
Jose Salazar commited on
Commit ·
b819476
1
Parent(s): 9869459
Prevent model reasoning output and add reasoning detection/cleanup
Browse files
js/ia.js
CHANGED
|
@@ -78,8 +78,13 @@ function construirPrompt(obtenerDatosPaciente, obtenerValoresFormulario, getUlti
|
|
| 78 |
cierre = `Proporciona una interpretación clínica breve (8-10 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
|
| 79 |
}
|
| 80 |
|
| 81 |
-
return `
|
| 82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
Eres un médico veterinario especialista en patología clínica. Sólo responderás consultas asociadas a ésta área de conocimiento y basado en la evidencia proporcionada.
|
| 84 |
Analiza los resultados y proporciona una interpretación clínica concisa.
|
| 85 |
|
|
@@ -88,7 +93,7 @@ function construirPrompt(obtenerDatosPaciente, obtenerValoresFormulario, getUlti
|
|
| 88 |
Resultados de laboratorio:
|
| 89 |
${lineasValores}
|
| 90 |
|
| 91 |
-
${signosText ? `
|
| 92 |
${cierre}`;
|
| 93 |
}
|
| 94 |
|
|
@@ -112,6 +117,33 @@ function limpiarRespuesta(text) {
|
|
| 112 |
// Quitar prefijos de rol que el modelo a veces antepone
|
| 113 |
text = text.replace(/^\d+\s+(medical assistant|assistant|model)\s*/i, '');
|
| 114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
// Quitar LaTeX
|
| 116 |
text = text.replace(/\$\\boxed\{[^}]*\}\$/g, '');
|
| 117 |
text = text.replace(/\\begin\{[^}]+\}[\s\S]*?\\end\{[^}]+\}/g, '');
|
|
|
|
| 78 |
cierre = `Proporciona una interpretación clínica breve (8-10 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
|
| 79 |
}
|
| 80 |
|
| 81 |
+
return `INSTRUCCIONES ESTRICTAS:
|
| 82 |
+
1. Responde ÚNICAMENTE en español. NUNCA escribas en inglés.
|
| 83 |
+
2. NO incluyas tu proceso de razonamiento, análisis paso a paso, ni pensamiento interno.
|
| 84 |
+
3. NO uses palabras como "thought", "thinking", "here's a thinking process", ni números de pasos.
|
| 85 |
+
4. Responde DIRECTAMENTE con la interpretación clínica final.
|
| 86 |
+
|
| 87 |
+
${notaImagenes ? `${notaImagenes}\n` : ''}
|
| 88 |
Eres un médico veterinario especialista en patología clínica. Sólo responderás consultas asociadas a ésta área de conocimiento y basado en la evidencia proporcionada.
|
| 89 |
Analiza los resultados y proporciona una interpretación clínica concisa.
|
| 90 |
|
|
|
|
| 93 |
Resultados de laboratorio:
|
| 94 |
${lineasValores}
|
| 95 |
|
| 96 |
+
${signosText ? `Signos clínicos: ${signosText}` : ''}
|
| 97 |
${cierre}`;
|
| 98 |
}
|
| 99 |
|
|
|
|
| 117 |
// Quitar prefijos de rol que el modelo a veces antepone
|
| 118 |
text = text.replace(/^\d+\s+(medical assistant|assistant|model)\s*/i, '');
|
| 119 |
|
| 120 |
+
// Quitar bloques de razonamiento / thinking process
|
| 121 |
+
text = text.replace(/^thought\s*\n?/i, '');
|
| 122 |
+
|
| 123 |
+
// Detectar si el modelo solo generó razonamiento en inglés sin respuesta clínica
|
| 124 |
+
const tieneRazonamiento = /Here'?s a thinking process|Understand the Role|Analyze the Request|Review the Lab Results|Synthesize Findings|Formulate Clinical Interpretation/i.test(text);
|
| 125 |
+
const tieneEspanol = /[áéíóúñÁÉÍÓÚÑ]{2,}/.test(text) || /\b(paciente|hallazgos|interpretación|recomendaciones|análisis|resultados|clínica|diagnóstico|evaluación|hepatopatía|nefropatía|anemia|leucocitosis|neutrofilia|linfopenia|hiperglucemia|hipoglucemia|pancreatitis|hepatitis|cirrosis|insuficiencia)\b/i.test(text);
|
| 126 |
+
if (tieneRazonamiento && !tieneEspanol) {
|
| 127 |
+
return 'El modelo generó un proceso de razonamiento interno en lugar de una interpretación clínica. Esto suele deberse a que el modelo está configurado en modo "pensamiento". Intenta nuevamente o contacta al administrador del espacio para desactivar el modo de razonamiento.';
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
// Si hay razonamiento mezclado con español, intentar extraer solo la respuesta
|
| 131 |
+
if (tieneRazonamiento) {
|
| 132 |
+
// Buscar la primera línea que parezca español clínico
|
| 133 |
+
const lineas = text.split('\n');
|
| 134 |
+
let inicioRespuesta = -1;
|
| 135 |
+
for (let i = 0; i < lineas.length; i++) {
|
| 136 |
+
const linea = lineas[i].trim();
|
| 137 |
+
if (linea.length > 20 && /[áéíóúñÁÉÍÓÚÑ]/.test(linea) && !/\*\*[^*]+\*\*/.test(linea) && !/^\d+\./.test(linea) && !/Here'?s a thinking process/i.test(linea)) {
|
| 138 |
+
inicioRespuesta = i;
|
| 139 |
+
break;
|
| 140 |
+
}
|
| 141 |
+
}
|
| 142 |
+
if (inicioRespuesta > 0) {
|
| 143 |
+
text = lineas.slice(inicioRespuesta).join('\n');
|
| 144 |
+
}
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
// Quitar LaTeX
|
| 148 |
text = text.replace(/\$\\boxed\{[^}]*\}\$/g, '');
|
| 149 |
text = text.replace(/\\begin\{[^}]+\}[\s\S]*?\\end\{[^}]+\}/g, '');
|