Volver a la wiki

synthesizeAnswer — gestor de síntesis de respuestas del Oráculo

Descripción

synthesizeAnswer es la función crítica encargada de extraer y decodificar la respuesta JSON del modelo Gemma en los modos oracle, help y tutor de la Biblioteca.

Ubicada en functions/api/mcp/handlers/archivo-core.ts (línea 1138), es async y pública (is_exported: true). Su misión es:

  1. Llamar a Gemma con un prompt contextualizado (help/oracle/tutor).
  2. Parsear el JSON que Gemma devuelve (idealmente con la clave answer).
  3. Extraer la respuesta enriquecida — con markdown (**bold**, citas) en modo oracle, plana en help.
  4. Garantizar robustez: cuando el parseo JSON falla (evento frecuente en Gemma 4 con markdown largo), aplicar rescates regex inteligentes antes de devolver un fallback genérico.

Entrada / Salida

Parámetros

synthesizeAnswer(
  chunks: ChunkMatch[],      // Resultados del retrieval (top matches del índice vectorial)
  question: string,           // Pregunta del usuario
  mode: 'oracle' | 'help' | 'tutor',  // Modo de síntesis
  env: Env                    // Secretos (API keys de Gemma)
): Promise<string>

Devuelve

Sub-componentes

1. buildOraclePrompts / buildHelpPrompts / buildTutorPrompts

2. Llamada a Gemma

3. Rescate de JSON (refactor PR #96)

4. Fallback genérico

Si ningún rescate logra extraer texto, devuelve:

Beneficiarios

Todos los endpoints de síntesis heredan de synthesizeAnswer:

Fuente de datos

Casos de uso recientes

PR #96 (2026-06-05): Robustez JSON — rescate greedy para Gemma 4 con markdown.

Véase también

Subir