Jose Salazar commited on
Commit
d8aaa23
·
1 Parent(s): 1441be7

Add <unused95> token to force skip reasoning phase + console debugging for desktop vs mobile comparison

Browse files
Files changed (1) hide show
  1. js/ia.js +28 -6
js/ia.js CHANGED
@@ -87,17 +87,18 @@ DATOS ADJUNTOS: ${totalImagenes} imagen${totalImagenes > 1 ? 'es' : ''} de citol
87
  ¿Qué observas en las imágenes? Describe la morfología celular, identifica lesiones, patrones anormales, hemoparásitos (Anaplasma, Babesia, Ehrlichia, Hepatozoon, Piroplasma, Mycoplasma) e inclusiones citoplasmáticas. Luego integra con los datos de laboratorio. Responde en español.`;
88
  }
89
 
 
 
 
 
90
  return `Responde en español.
91
 
92
  Eres médico veterinario especialista en patología clínica.
93
 
94
  Paciente: ${paciente.especie || 'desconocido'}, raza: ${paciente.raza || 'NE'}, edad: ${edadTexto}, sexo: ${paciente.sexo || 'NE'}
95
 
96
- Resultados de laboratorio:
97
- ${lineasValores}
98
-
99
- Patrones detectados:
100
- ${lineasPatrones}
101
  ${signosText ? `\nSignos clínicos: ${signosText}` : ''}
102
 
103
  Proporciona una interpretación clínica breve (6-8 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
@@ -241,11 +242,24 @@ async function _llamarOllama(salidaEl, obtenerDatosPaciente, obtenerValoresFormu
241
  // Morphos AI Space
242
 
243
  async function _llamarSpace(salidaEl, obtenerDatosPaciente, obtenerValoresFormulario, getUltimoAnalisis, getReferencias) {
244
- const prompt = construirPrompt(obtenerDatosPaciente, obtenerValoresFormulario, getUltimoAnalisis, getReferencias);
 
 
 
 
 
 
245
  const imagenes = [...imagenesDataUrl.filter(Boolean), ...capturasMicroscopio]
246
  .filter(img => typeof img === 'string' && /^data:image\/(jpeg|png|gif|webp);base64,/.test(img))
247
  .slice(0, 4);
248
 
 
 
 
 
 
 
 
249
  try {
250
  const res = await fetch('api/hf_proxy.php', {
251
  method: 'POST',
@@ -254,12 +268,20 @@ async function _llamarSpace(salidaEl, obtenerDatosPaciente, obtenerValoresFormul
254
  });
255
 
256
  const data = await res.json();
 
 
 
 
 
 
 
257
  if (!res.ok) {
258
  salidaEl.textContent = `Error: ${data?.error ?? `HTTP ${res.status}`}`;
259
  } else {
260
  salidaEl.textContent = limpiarRespuesta(data.text ?? 'Sin respuesta del modelo.');
261
  }
262
  } catch (e) {
 
263
  salidaEl.textContent = `Error de red: ${e.message}`;
264
  }
265
  }
 
87
  ¿Qué observas en las imágenes? Describe la morfología celular, identifica lesiones, patrones anormales, hemoparásitos (Anaplasma, Babesia, Ehrlichia, Hepatozoon, Piroplasma, Mycoplasma) e inclusiones citoplasmáticas. Luego integra con los datos de laboratorio. Responde en español.`;
88
  }
89
 
90
+ const lineasHallazgos = hallazgos.length > 0
91
+ ? hallazgos.map(h => ` ${h.nombre}: ${h.valor} ${h.unidad || ''} (${h.direccion} · ${h.gravedad})`).join('\n')
92
+ : ' Todos los valores dentro de rangos normales';
93
+
94
  return `Responde en español.
95
 
96
  Eres médico veterinario especialista en patología clínica.
97
 
98
  Paciente: ${paciente.especie || 'desconocido'}, raza: ${paciente.raza || 'NE'}, edad: ${edadTexto}, sexo: ${paciente.sexo || 'NE'}
99
 
100
+ Hallazgos de laboratorio:
101
+ ${lineasHallazgos}
 
 
 
102
  ${signosText ? `\nSignos clínicos: ${signosText}` : ''}
103
 
104
  Proporciona una interpretación clínica breve (6-8 oraciones) destacando los hallazgos más significativos y las recomendaciones diagnósticas inmediatas.`;
 
242
  // Morphos AI Space
243
 
244
  async function _llamarSpace(salidaEl, obtenerDatosPaciente, obtenerValoresFormulario, getUltimoAnalisis, getReferencias) {
245
+ let prompt = construirPrompt(obtenerDatosPaciente, obtenerValoresFormulario, getUltimoAnalisis, getReferencias);
246
+
247
+ // HACK: Prepend <unused95> to force medGemma to skip thinking phase and output response directly
248
+ if (!prompt.includes('<unused95>')) {
249
+ prompt = '<unused95>' + prompt;
250
+ }
251
+
252
  const imagenes = [...imagenesDataUrl.filter(Boolean), ...capturasMicroscopio]
253
  .filter(img => typeof img === 'string' && /^data:image\/(jpeg|png|gif|webp);base64,/.test(img))
254
  .slice(0, 4);
255
 
256
+ // DEBUG: Log exact payload for desktop vs mobile comparison
257
+ console.log('=== MORPHOS AI REQUEST ===');
258
+ console.log('Images count:', imagenes.length);
259
+ console.log('Prompt length:', prompt.length);
260
+ console.log('Prompt preview:', prompt.substring(0, 200) + '...');
261
+ console.log('==========================');
262
+
263
  try {
264
  const res = await fetch('api/hf_proxy.php', {
265
  method: 'POST',
 
268
  });
269
 
270
  const data = await res.json();
271
+
272
+ // DEBUG: Log raw response
273
+ console.log('=== MORPHOS AI RESPONSE ===');
274
+ console.log('Status:', res.status);
275
+ console.log('Raw text preview:', (data.text ?? 'NO TEXT').substring(0, 300));
276
+ console.log('===========================');
277
+
278
  if (!res.ok) {
279
  salidaEl.textContent = `Error: ${data?.error ?? `HTTP ${res.status}`}`;
280
  } else {
281
  salidaEl.textContent = limpiarRespuesta(data.text ?? 'Sin respuesta del modelo.');
282
  }
283
  } catch (e) {
284
+ console.error('Network error:', e);
285
  salidaEl.textContent = `Error de red: ${e.message}`;
286
  }
287
  }