Reflexion: Agentes de lenguaje que aprenden de los errores sin reentrenamiento
He estado pensando en lo que se necesitaría para construir un agente de libro mayor de Beancount que mejore con el tiempo sin ser reentrenado cada vez que comete un error. El artículo de Shinn et al. "Reflexion: Language Agents with Verbal Reinforcement Learning" (NeurIPS 2023) aborda directamente esa cuestión, y la respuesta es tanto prometedora como más limitada de lo que sugieren las cifras de los titulares.
El artículo
Reflexion (Shinn, Cassano, Berman, Gopinath, Narasimhan, Yao; NeurIPS 2023) propone que, en lugar de ajustar los pesos del modelo mediante un costoso aprendizaje por refuerzo, se puede mejorar un agente haciendo que escriba su propio análisis de fallos en lenguaje natural. Después de cada intento, un modelo de Autoreflexión lee la trayectoria y la señal de recompensa, produce un análisis post-mortem verbal y lo añade a un búfer de memoria episódica. En el siguiente intento, el Actor lee las reflexiones acumuladas antes de actuar. No se computa ningún gradiente. No se ajusta ningún modelo. El "aprendizaje" vive enteramente en la ventana de contexto.
La arquitectura de tres componentes —Actor, Evaluador, Autoreflexión— es lo suficientemente modular para adaptarse a diferentes tipos de tareas. El Evaluador puede ser un resultado binario de una prueba unitaria, un juez LLM o una heurística específica de la tarea. Esta flexibilidad es lo que hace que el artículo sea interesante más allá de los bancos de pruebas de programación.
Ideas clave
- En el pass@1 de HumanEval Python, Reflexion + GPT-4 alcanza el 91%, frente al 80% del GPT-4 base — una brecha real y considerable. En Leetcode Hard el salto es de 7,5% → 15%, lo cual es un progreso pero también un recordatorio de lo difíciles que siguen siendo esos problemas.
- En AlfWorld (planificación doméstica basada en texto), Reflexion resuelve 130/134 tareas tras 12 intentos frente a 108/134 del modelo base ReAct — el resultado de toma de decisiones más convincente del artículo.
- En HotpotQA (preguntas y respuestas de múltiples saltos), CoT + Reflexion pasa del 61% al 75% de coincidencia exacta en 100 preguntas de muestra.
- En MBPP (un segundo banco de pruebas de Python), Reflexion perjudica ligeramente el rendimiento: 80,1% → 77,1%. El artículo oculta este dato.
- En WebShop, Reflexion no logra ayudar. Los autores lo atribuyen a que la tarea requiere "una diversidad y exploración significativas" — el agente escribe reflexiones poco útiles que no se generalizan en las búsquedas de productos.
- La memoria está limitada a 1–3 experiencias almacenadas. Esto es pragmático dada la longitud del contexto, pero significa que el agente no puede acumular aprendizaje durante un despliegue prolongado.
Qué se sostiene — y qué no
La afirmación central es sólida: la reflexión verbal mejora el rendimiento en tareas con retroalimentación clara y verificable. Si sabes si el código pasó sus pruebas unitarias, el módulo de reflexión tiene algo concreto sobre lo cual razonar. Los resultados de AlfWorld y HumanEval son reales y significativos.
Pero el fallo en WebShop es instructivo y el artículo lo minimiza un poco. La reflexión funciona cuando el evaluador puede producir una señal clara y accionable. Cuando el modo de fallo es "el agente exploró la parte equivocada de un gran espacio de búsqueda", decirle que "pruebe diferentes términos de búsqueda la próxima vez" no converge. Esta es una limitación estructural: el refuerzo verbal no es un sustituto de las estrategias de exploración.
Los experimentos de programación también tienen una circularidad que los autores reconocen en su publicación del blog: el agente genera sus propias pruebas unitarias para evaluar su propio código. Una suite de pruebas defectuosa produce falsos positivos. La cifra del 91% en HumanEval se mantiene porque HumanEval proporciona pruebas de verdad fundamental, pero el bucle de autoevaluación del agente es menos confiable en problemas nuevos donde no existe un oráculo externo.
La reproducibilidad es una preocupación real. Todos los resultados principales utilizan GPT-4, y los experimentos con starchat-beta muestran ninguna mejora respecto al modelo base, lo que significa que la técnica depende de la capacidad del modelo. Los equipos que utilicen modelos más pequeños o de pesos abiertos no deberían esperar las mismas ganancias.
Por qué esto importa para la IA financiera
El caso de uso de Beancount tiene exactamente la propiedad que hace que Reflexion funcione bien: un evaluador claro. Si un agente categoriza incorrectamente una transacción, la verificación del saldo del libro mayor o un paso de conciliación pueden producir una señal binaria — los libros cuadran o no cuadran. Esa es una superficie de retroalimentación mucho mejor que la ambigua recompensa de búsqueda de productos de WebShop.
Concretamente, puedo imaginar un agente de escritura de Beancount que, tras un intento fallido de registro (cuenta inválida, moneda incorrecta, fallo de aserción), genere una reflexión verbal: "Usé Expenses:Meals pero esta cuenta requiere una subcategoría. La próxima vez revisaré la jerarquía de cuentas antes de registrar". Esta reflexión se almacena y se recupera en la siguiente transacción similar. El agente acumula efectivamente una política específica de la sesión a partir de sus propios errores.
El límite de memoria es el principal desafío arquitectónico. Un búfer de 1–3 experiencias está bien para una sola sesión, pero un agente de contabilidad desplegado necesita aprender a través de miles de transacciones y semanas de operación. Extender Reflexion a una memoria de largo horizonte — quizás resumiendo o indexando reflexiones — es un problema abierto. El artículo no lo resuelve.
Qué leer a continuación
- Language Agent Tree Search (LATS) (Zhou et al., arXiv:2310.04406; ICML 2024) — extiende Reflexion envolviendo la búsqueda de árbol de Monte Carlo alrededor del bucle de reflexión-reintento, permitiendo que los agentes exploren múltiples ramas de razonamiento en lugar de comprometerse con una sola trayectoria. Logra un 92,7% en HumanEval con GPT-4.
- Retroformer (Yao et al., arXiv:2308.02151; ICLR 2024) — en lugar de confiar en el mismo LLM para autoreflexionar, Retroformer entrena un modelo retrospectivo ligero y separado mediante gradiente de política, haciendo que el proceso de reflexión sea aprendible a través de tareas. Es más fundamentado, pero requiere ajuste fino (fine-tuning).
- Self-Reflection in LLM Agents: Effects on Problem-Solving Performance (arXiv:2405.06682, 2024) — un estudio empírico que indaga específicamente cuándo y por qué ayuda la reflexión, con ablaciones en distintos tipos de tareas. Útil para calibrar cuándo aplicar Reflexion frente a otras estrategias de corrección.
