Saltar al contenido
Explorar conocimiento

patrón · intermedio · 4 min de lectura

Reflection

Reflection es un patrón donde el modelo evalúa y mejora su propia salida mediante ciclos de autocrítica, permitiendo alcanzar resultados más precisos en tareas complejas.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • reflection as a pattern where the model evaluates its own output and iteratively improves it
  • self-critique, verification loops, and structured feedback
  • practical boundaries: when reflection helps vs when it adds latency without benefit

No cubre

  • reinforcement learning from human feedback (RLHF)
  • multi-agent debate or consensus architectures
  • prompt engineering fundamentals

Supone

  • The reader understands basic LLM prompts, API calls, and tool use.

Resumen

Reflection es un patrón de diseño para sistemas con LLM donde el modelo no solo genera una respuesta, sino que luego la evalúa, identifica problemas y produce una versión mejorada. En lugar de asumir que la primera salida es correcta, el modelo tiene la oportunidad de revisar su propio trabajo.

Importa porque los LLMs tienden a producir respuestas plausibles pero incorrectas. Un ciclo de reflection permite detectar errores, llenar vacíos y refinar el tono o la estructura, especialmente en tareas donde la calidad de la primera pasada es insuficiente.

Alcance y supuestos

Este paquete cubre reflection como patrón de aplicación: autocrítica, verificación estructurada, ciclos de mejora iterativa, y cuándo usarlos. Cubre también los costos y límites prácticos.

No cubre reinforcement learning from human feedback (RLHF), arquitecturas multi-agente para debate, ni fundamentos de prompt engineering. Asume que entiendes llamadas API a LLMs y tool use básico.

Modelo mental

Piensa en reflection como un revisor editorial. El modelo primero escribe un borrador. Luego cambia de rol a revisor, señalando problemas, omisiones o errores. Finalmente, produce una versión corregida que incorpora esa retroalimentación.

El proceso no es magia. El modelo sigue siendo el mismo — no adquiere nuevas capacidades al reflexionar. Pero al dedicar más tokens al problema y estructurar la revisión, aumenta la probabilidad de detectar errores que una sola pasada pasaría por alto.

Uso práctico

Usa reflection cuando la calidad de la primera respuesta es crítica:

  • ✅ Generación de código: el modelo escribe, revisa y corrige.
  • ✅ Respuestas que requieren citar fuentes: verifica que cada afirmación tenga respaldo.
  • ✅ Traducciones o resúmenes donde la precisión importa.
  • ❌ Preguntas simples con respuesta conocida: reflection agrega latencia sin beneficio.
  • ❌ Tareas en tiempo real donde 100ms de más rompen la experiencia.

Ejemplo trabajado: generación de código con autocrítica

Supón que pides al modelo una función para validar un RUT chileno. La primera respuesta puede tener errores. Reflection permite detectarlos:

async function generateWithReflection(prompt: string) {
  // Paso 1: generar respuesta inicial
  const draft = await llm.complete({
    prompt: `Escribe código TypeScript para validar un RUT chileno:\n${prompt}`,
  });

  // Paso 2: autocrítica
  const critique = await llm.complete({
    prompt: `Revisa el siguiente código. Señala errores, problemas de seguridad, edge cases no cubiertos y mejoras de estilo:\n\n${draft}`,
  });

  // Paso 3: generar versión mejorada
  const final = await llm.complete({
    prompt: `Código original:\n${draft}\n\nRetroalimentación:\n${critique}\n\nGenera una versión corregida del código incorporando la retroalimentación.`,
  });

  return final;
}

El costo es 3 llamadas API en vez de 1. El beneficio es un resultado más robusto. Para código crítico (validación de datos, seguridad, lógica financiera), el costo extra se justifica. Para un prototipo, la primera pasada es suficiente.

La reflexión no debe ser un loop infinito. Define un máximo de iteraciones (2-3) y un criterio de satisfacción claro.

Evidencia

Fuentes citadas