Evolución de Prompts en Lugar de RL: Detrás del Framework GEPA
Ajustar instrucciones del sistema y agentes generalmente se convierte en un ajuste manual interminable de texto. Corriges una formulación — mejoras la lógica, pero rompes el formato de salida. Usar aprendizaje por refuerzo como GRPO para este ajuste es demasiado costoso: los algoritmos requieren decenas de miles de ejecuciones, y todo el feedback se reduce a una única puntuación.
Hace poco exploré el repositorio GEPA (Genetic-Pareto). El proyecto es desarrollado por investigadores de Berkeley y Stanford, ofreciendo un enfoque fundamentalmente diferente para optimizar cualquier parámetro de texto.
La Idea Central del Proyecto
Los optimizadores clásicos tratan el sistema como una caja negra: obtienen una puntuación numérica en la salida e intentan adivinar hacia dónde moverse a continuación. GEPA funciona de manera diferente. El framework alimenta a la red neuronal el log completo de ejecución — errores, salida del profiler, stack traces y razonamiento intermedio.
El modelo analiza estos datos de la misma manera que lo hace un desarrollador durante la depuración. Ve la causa específica de un fallo y sugiere correcciones específicas. Luego entra en acción un algoritmo genético con consideraciones del frente de Pareto: el sistema preserva las variantes de texto que mejor funcionan en diferentes subconjuntos de tareas.
Qué Puede Hacer el Framework
Este enfoque permite el ajuste automático de varios elementos:
- Prompts para modelos individuales o cadenas en DSPy y LangChain
- Arquitectura de agentes y sus conjuntos de habilidades
- Reglas de planificación de tareas y archivos de configuración
- Descripciones de herramientas para el protocolo MCP
En las pruebas de los autores, el modelo GPT-4.1 Mini mejoró la precisión en el benchmark de matemáticas AIME del 46.6% al 56.6% después de cien iteraciones. Los ingenieros de Databricks usaron GEPA para reducir los costos de operación de sus agentes en 90x sin perder calidad.
Cómo Funciona el Proceso de Optimización
El framework opera en un bucle de cinco pasos secuenciales:
- Selección de candidatos desde el frente de Pareto. El sistema elige una variante que mostró el máximo resultado en un grupo de pruebas específico.
- Ejecución en un dataset pequeño. Durante esta, se recopilan todos los logs de ejecución y errores.
- Reflexión. El modelo reflector lee los logs textuales de fallos y formula diagnósticos.
- Mutación. Se crea una nueva versión del prompt o código, teniendo en cuenta errores pasados de todos los ancestros.
- Toma de decisiones. El nuevo candidato se añade al pool compartido si demostró una mejora real.
Todos los diagnósticos se denominan Actionable Side Information en la terminología de los autores. En la optimización de texto, esto sirve como el equivalente del gradiente del aprendizaje automático tradicional.

Cómo Escribir Código
Puedes instalar la librería desde PyPI:
pip install gepa
El proyecto tiene una API simple llamada optimize_anything. Te permite ajustar no solo prompts, sino cualquier artefacto de texto:
import gepa.optimize_anything as oa
from gepa.optimize_anything import GEPAConfig, EngineConfig, optimize_anything
def evaluate(candidate: str) -> float:
result = run_my_system(candidate)
oa.log(f"Output: {result.output}")
oa.log(f"Error: {result.error}")
return result.score
result = optimize_anything(
seed_candidate="Начальный текст инструкции или кода",
evaluator=evaluate,
objective="Уменьшить количество ошибок форматирования вывода",
config=GEPAConfig(engine=EngineConfig(max_metric_calls=100)),
)
Los logs enviados a través de oa.log() son exactamente lo que van al modelo reflector para la detección de errores. Si ya usas DSPy, la herramienta está disponible de fábrica como dspy.GEPA.
Cuando el Ajuste a Través de GEPA Realmente Vale la Pena
El método funciona mejor en los siguientes escenarios:
- Ejecutar agentes con muchas herramientas externas
- Datasets de entrenamiento pequeños con solo 5–10 ejemplos
- Modelos cerrados sin acceso a pesos a través de API
- Llamadas costosas o lentas, incluyendo compilación de código y simulaciones
Donde RL requiere 5,000–25,000 ejecuciones para converger, este algoritmo generalmente solo necesita 100–500 evaluaciones.
En Conclusión
El framework aborda el tema doloroso del ajuste manual de instrucciones de texto. Es bueno que la herramienta ya se haya integrado en MLflow, Pydantic AI y Google ADK, así que no necesitarás arrastrar un montón de código extra a tu proyecto. Comienza con el breve tutorial en la documentación o ejecuta optimize_anything en un par de tus prompts más problemáticos.
Proyectos relacionados