Inteligencia Artificial · Serie LLMs y n8n
Cómo detectar y manejar alucinaciones en modelos de lenguaje
Las alucinaciones son respuestas convincentes pero incorrectas o no sustentadas. No basta con “modelos mejores”: necesitas detección, métricas y un plan de contención.
En el post anterior construimos guardrails de salida. Hoy diseñamos una línea anti-alucinación que detecta y mitiga errores factuales en asistentes con o sin RAG.
Taxonomía rápida de alucinaciones
- Fabricación: inventa hechos, citas o APIs.
- Desfase temporal: afirma como vigente algo obsoleto.
- Desajuste numérico: cifras/fechas que no cuadran con la evidencia.
- Misatribución: cita la fuente errónea o mezcla autor/obra.
- Razonamiento roto: pasos lógicos incorrectos o conclusiones no implicadas.
Cómo detectarlas (señales y pruebas)
- Grounding check (RAG): cada afirmación clave debe estar respaldada por un fragmento del contexto. Si no, marca “no sustentada”.
- Consistencia interna: verifica que números, entidades y fechas se usen de forma coherente a lo largo de la respuesta.
- Desacuerdo con evidencia: ejecuta una verificación breve por criterio (¿la frase está soportada, contradice o es insuficiente?).
- Autocomprobación: pide al modelo una revisión breve contra reglas (“no inventes, cita, abstente si falta evidencia”) y compara versiones (self-consistency).
- Verificación externa (cuando procede): consulta una fuente confiable (API/DB corporativa) para campos sensibles (precios, existencias, políticas).
- Señales de forma: ausencia de citas cuando son obligatorias, JSON inválido, lenguaje excesivamente especulativo sin disclaimers.
Métricas que importan
- Groundedness: % de frases respaldadas por evidencia citada.
- Tasa de abstención sana: % de “no sé” cuando falta evidencia.
- Hallucination rate: % de respuestas con al menos una afirmación no sustentada.
- Correcciones: % de respuestas arregladas por el revisor/guardrail.
- Coste/latencia del pipeline con y sin verificaciones.
Estrategias de mitigación
- Abstención explícita: “No lo sé con la evidencia actual.” cuando el recall es bajo o no hay citas.
- RAG disciplinado: buen chunking, filtros por metadatos, Top-K prudente, y prompts que exijan citas.
- Contratos de salida (JSON/tabla) para validar estructura y detectar extravíos.
- Revisor breve (LLM “juez” con rúbrica) para marcar no sustentadas y sugerir correcciones mínimas.
- Campos críticos por reglas: fechas, importes, IDs → valida con regex/formatos o APIs de verdad.
- Plantillas de “modo seguro”: si la verificación falla, devuelve una versión neutra y pedirá más datos.
Plantillas útiles
1) Respuesta con citas obligatorias
Reglas:
- Usa solo el CONTEXTO proporcionado; si falta, abstente.
- Cita fuente y URL/título por cada hecho clave.
Salida:
{"answer":"...","citations":[{"title":"...","url":"..."}]}
2) Verificador factual (rúbrica breve)
Rol: Verificador.
Para cada afirmación clave, etiqueta: "soportada", "contradice", "insuficiente".
Devuelve:
{"claims":[{"text":"...","status":"supported|refuted|insufficient","evidence":["..."]}],
"is_safe": true|false}
3) Safe answer (fallback)
{"answer":"No tengo evidencia suficiente para confirmar ese dato. ¿Puedes compartir la fuente o más contexto?","citations":[]}
Micro-workflow en n8n: “Centinela de alucinaciones”
- Webhook → recibe
{query, contextDocs[]}. - LLM (respuesta) → responde con citas obligatorias.
- LLM (verificador) → evalúa afirmaciones contra
contextDocs(supported/refuted/insufficient). - IF → si is_safe=false o hay “insufficient/refuted” → activar safe answer o pedir aclaración.
- Database → registra groundedness, tasa de abstención, costo y p95.
- Notifier → alerta si el hallucination rate supera umbral.
Tips para Laravel/PHP
- Valida estructura con
json_validate()(PHP ≥8.3) y reglas deValidatorpara campos críticos. - Guarda trazas por
request_id: contexto usado, citas, veredicto del verificador, decisión final. - Endpoint de verificación:
POST /verifyque reciba{answer, context[]}y devuelva veredicto y reason codes. - Métrica
hallucination_ratediaria por tenant/modelo; umbral → activar “modo seguro” por defecto.
Errores comunes (y cómo evitarlos)
- Responder sin contexto suficiente → exige abstención.
- RAG sin filtros → ruido en Top-K; usa metadatos y colecciones permitidas.
- Sin verificador → alucinaciones sutiles pasan a producción.
- Medir solo “gusto” → usa groundedness, tasa de abstención y veredicto factual.
Conclusión
Las alucinaciones no se “eliminan”, se gestionan: detección automática, abstención honesta, verificación de hechos y un fallback seguro. Con eso, tu asistente será confiable incluso cuando el modelo falle.
← Anterior: Guardrails de salida: filtra y valida respuestas antes de usarlas