Incidenteactivecreado Fri Jun 05#biblioteca#gemma-4#ai-studio#help-widget#oraculo#synthesis#reliability#defensa-software
Resumen
A partir de 2026-06-04 (reportado por Edu, s109):
- Help Widget: pregunta
¿cómo se pueden añadir nuevos dispositivos wifi?→ respuesta con muro de texto repetido (“…la continuación de un proceso de automatización automático o la de…” ×40), ~2837 caracteres de ruido. - Oráculo: frecuentes HTTP 500 (
AI Studio timeout). El modelo no respondía a tiempo, causando abortes sistemáticos.
Ambos síntomas tenían raíz común: Gemma 4 26B-A4B en AI Studio degenera ocasionalmente en bucles periódicos cuando el grounding es flojo o tangencial.
Causa raíz
Gemma 4 entra en un estado estocástico donde genera un segmento de N palabras repetidamente hasta agotar maxOutputTokens (2048 fijo en ese momento). La degeneración ocurre dentro del string answer del responseSchema (constrained decoding no lo evita).
Síntomas observados:
- Latencia extrema: 40+ segundos para completar token-loop → supera timeout del Oráculo (40s) → HTTP 500.
- Output inútil: muro de texto periódico que no contiene información útil.
- Estocástico: con el mismo input, a veces responde bien, a veces degenera.
Impacto
- Help Widget (user-facing): usuarios ven respuestas degeneradas en vez de ayuda útil.
- Oráculo (interno): 500s frecuentes afectan a queries de staff y automatización.
- Tutor: heredaba el mismo problema (timeout ocasional).
Resolución
PR #94 implementa defensas de software sin tocar infraestructura:
clampRepetition()— función determinista que detecta patrones periódicos sostenidos (≥3 repeticiones) y trunca dejando una instancia +[…]. Valida contra el muro real: 2837→200 caracteres.maxOutputTokensdinámico — Help 768, Oracle/Tutor 1024 (antes 2048 fijo). Acota latencia máxima y daño por bucle.HELP_RELEVANCE_FLOOR0.4 — en Help Widget (user_facing), rechaza grounding < 0.4 con respuesta honesta (“No tengo información…”) en vez de intentar sintetizar sobre irrelevancia (donde Gemma 4 tiende a divagar).
Testing
clampRepetition()validado contra el caso real (2837→200 chars, output sano intacto).maxOutputTokensdinámico reduce ventana máxima de degeneración.- Floor de relevancia reduce triggers de síntesis sobre grounding marginal.
Estado post-fix
Después de PR #94:
- Help Widget responde correctamente a wifi y otras consultas tangenciales.
- Oráculo sin timeouts sistemáticos (latencia < 5s para queries normales).
- Tutor estable.
Véase también
- [[feature—biblioteca—anti-degeneracion-gemma-4]]
- [[entity—biblioteca—function—clamp-repetition]]
- [[concept—biblioteca—synthesis-safeguards]]
- [[entity—biblioteca—service—bib-ask]]
- [[entity—biblioteca—endpoint—oracle]]
Referenciado desde
- Decisión 2026-09-13 · El Oráculo sintetiza con Gemini 3.8 Flash (Gemma 4 26B degeneraba en bucles)
- Decisión 2026-09-30 · Todo el Workspace pasa a Gemini 3.8 Flash (chat del Correo, bib_ask, Help, Tutor y HyDE)
- Degeneración por carácter del Oráculo (s109)
- Feature: defensa integral contra degeneración Gemma 4
- Función: clampRepetition() — defensa contra bucles periódicos
- Incidente: bucle de Gemma por subcadena + JSON sin cerrar en el chat del Correo