Validación, Retry y Feedback Loops

Por: Artiko
claudecertificacionvalidacionretryfeedback-loop

Validación, Retry y Feedback Loops

Anterior: Structured Output · Índice · Siguiente: Batch Processing


Retry con feedback de errores

El patrón más efectivo de retry no es simplemente reintentar — es append los errores de validación específicos al prompt antes de reintentar.

Patrón básico

  1. Claude produce output (via tool_use)
  2. Validación detecta errores específicos
  3. Se crea un follow-up request con: documento original + output fallido + errores de validación
  4. Claude corrige basándose en el feedback concreto

Qué incluir en el feedback

Efectivo: Errores específicos con contexto

Validation failed:
- total (1,250.00) does not equal sum of line_items (1,150.00)
- date "2024-13-01" is not a valid date
- vendor_name is empty but document header shows "Acme Corp"

Inefectivo: Mensajes genéricos

Validation failed. Please try again.

El feedback específico le dice a Claude exactamente qué corregir y dónde buscar la información correcta.


Cuándo los retries funcionarán vs cuándo no

Esta es una distinción crítica para el examen:

Retries efectivos (format mismatch)

Retries inefectivos (información ausente)

Para el examen: Si un escenario describe retries fallidos repetidamente para un campo, la respuesta correcta suele ser “la información no está en el source” — no “agregar más retries” ni “usar un modelo más grande”.

Límites de retry

Establecer un máximo de 2-3 retries. Si después de 3 intentos el error persiste:


Validación semántica

La validación semántica verifica relaciones lógicas que JSON schemas no pueden expresar:

Cross-field validation

Self-correction con campos de validación

Un patrón poderoso es incluir campos de auto-verificación en el schema:

{
  "calculated_total": { "type": "number" },
  "stated_total": { "type": ["number", "null"] },
  "totals_match": { "type": "boolean" },
  "conflict_note": { "type": ["string", "null"] }
}

Claude calcula la suma de line items (calculated_total), extrae el total declarado (stated_total), y reporta si coinciden. Esto hace que Claude verifique su propia extracción como parte del proceso.

Validación vs errores de sintaxis

TipoEliminado por schemaRequiere validación
JSON mal formado
Campo faltante
Tipo incorrecto
Valor en campo equivocadoNo
Suma inconsistenteNo
Dato inventadoNo

Feedback loops para mejora continua

detected_pattern field

Agregar un campo en el output de revisión para que Claude reporte patrones de dismissal:

{
  "finding": "...",
  "category": "comment_accuracy",
  "detected_pattern": "stale_comment_non_contradicting"
}

Cuando developers dismissan findings, el campo detected_pattern permite analizar qué tipo de findings se rechazan consistentemente. Si el 80% de dismissals en una categoría tienen el mismo pattern, ese pattern debería convertirse en una regla de exclusión.

Loop de refinamiento

  1. Producción: Claude genera findings con detected_pattern
  2. Análisis: Agregar dismissal data por pattern
  3. Refinamiento: Convertir patterns de alto dismissal en reglas de exclusión
  4. Deploy: Actualizar criterios en el prompt
  5. Monitorear: Verificar que el recall no bajó (no se perdieron bugs reales)

Follow-up requests estructurados

Para retries efectivos, el follow-up request debe contener:

  1. Documento original (completo, no resumido)
  2. Output fallido (para que Claude vea qué hizo mal)
  3. Errores de validación (específicos y accionables)
  4. Instrucción de corrección: “Correct only the flagged fields, keep valid extractions unchanged”

La instrucción de corrección parcial es importante — sin ella, Claude podría re-extraer todo y potencialmente romper campos que estaban correctos.


Patrones de validación por pipeline stage

Pre-extraction

Post-extraction (single document)

Post-batch (múltiples documentos)


Resumen


Anterior: Structured Output · Índice · Siguiente: Batch Processing