Skip to content
Esta página fue generada y traducida con asistencia de IA. Si encuentra alguna imprecisión, no dude en ayudar a mejorarla. Editar en GitHub

Experimentos y evaluacion de aptitud

El sistema de auto-evolucion en PRX usa experimentos controlados y evaluacion de aptitud para medir si los cambios propuestos realmente mejoran el rendimiento del agente. Cada propuesta de evolucion por encima de L1 se prueba a traves de un experimento A/B antes de su adopcion permanente.

Vision general

El sistema de experimentos proporciona:

  • Pruebas A/B -- ejecutar variantes de control y tratamiento lado a lado
  • Puntuacion de aptitud -- cuantificar el rendimiento del agente con una puntuacion compuesta
  • Validacion estadistica -- asegurar que las mejoras son significativas, no ruido aleatorio
  • Convergencia automatica -- promover al ganador y retirar al perdedor cuando los resultados son concluyentes

Ciclo de vida del experimento

+----------+    +----------+    +----------+    +-----------+
|  Crear   |--->| Ejecutar |--->| Evaluar  |--->| Converger |
|          |    |          |    |          |    |           |
| Definir  |    | Dividir  |    | Comparar |    | Promover  |
| variantes|    | trafico  |    | aptitud  |    | o rechazar|
+----------+    +----------+    +----------+    +-----------+

1. Crear

Se crea un experimento cuando el pipeline de evolucion genera una propuesta:

  • Una variante de control que representa la configuracion actual
  • Una variante de tratamiento que representa el cambio propuesto
  • Parametros del experimento: duracion, tamano de muestra, division de trafico

2. Ejecutar

Durante el experimento, las sesiones se asignan a variantes:

  • Las sesiones se asignan aleatoriamente basandose en la proporcion de division de trafico
  • Cada sesion se ejecuta completamente bajo una variante (sin cambio a mitad de sesion)
  • Ambas variantes se monitorean para el mismo conjunto de metricas de aptitud

3. Evaluar

Despues de alcanzar la duracion minima o tamano de muestra:

  • Se calculan las puntuaciones de aptitud para ambas variantes
  • Se prueba la significancia estadistica (por defecto: 95% de confianza)
  • Se calcula el tamano del efecto para medir la significancia practica

4. Converger

Basandose en los resultados de evaluacion:

  • Gana el tratamiento -- el cambio propuesto se promueve a la configuracion por defecto
  • Gana el control -- el cambio propuesto se rechaza; el control se mantiene
  • Inconcluyente -- el experimento se extiende o el cambio se difiere

Configuracion

toml
[self_evolution.experiments]
enabled = true
default_duration_hours = 168       # 1 semana por defecto
min_sample_size = 100              # sesiones minimas por variante
traffic_split = 0.5                # division 50/50 entre control y tratamiento
confidence_level = 0.95            # 95% de confianza estadistica requerida
min_effect_size = 0.02             # minimo 2% de mejora para aceptar

[self_evolution.experiments.auto_converge]
enabled = true
check_interval_hours = 24          # evaluar resultados cada 24 horas
max_duration_hours = 720           # forzar convergencia despues de 30 dias

Referencia de configuracion

CampoTipoPor defectoDescripcion
enabledbooltrueHabilitar o deshabilitar el sistema de experimentos
default_duration_hoursu64168Duracion por defecto del experimento en horas (1 semana)
min_sample_sizeusize100Sesiones minimas por variante antes de evaluacion
traffic_splitf640.5Fraccion de sesiones asignadas a la variante de tratamiento (0.0--1.0)
confidence_levelf640.95Nivel de confianza estadistica requerido
min_effect_sizef640.02Mejora minima de aptitud (fraccion) para aceptar el tratamiento
auto_converge.enabledbooltruePromover/rechazar automaticamente cuando los resultados son concluyentes
auto_converge.check_interval_hoursu6424Frecuencia de verificacion de resultados del experimento
auto_converge.max_duration_hoursu64720Forzar convergencia despues de esta duracion (30 dias por defecto)

Estructura del registro de experimentos

Cada experimento se rastrea como un registro estructurado:

CampoTipoDescripcion
experiment_idStringIdentificador unico (UUIDv7)
decision_idStringEnlace a la decision originadora
layerLayerCapa de evolucion: L1, L2 o L3
statusStatusrunning, evaluating, converged, cancelled
created_atDateTime<Utc>Cuando se creo el experimento
converged_atOption<DateTime<Utc>>Cuando concluyo el experimento
controlVariantDescripcion de la variante de control
treatmentVariantDescripcion de la variante de tratamiento
control_sessionsusizeNumero de sesiones asignadas al control
treatment_sessionsusizeNumero de sesiones asignadas al tratamiento
control_fitnessFitnessScoreAptitud agregada para la variante de control
treatment_fitnessFitnessScoreAptitud agregada para la variante de tratamiento
p_valueOption<f64>Significancia estadistica (menor = mas significativo)
winnerOption<String>"control", "treatment" o null si es inconcluyente

Evaluacion de aptitud

La puntuacion de aptitud cuantifica el rendimiento del agente a traves de multiples dimensiones. La puntuacion compuesta de aptitud se usa para comparar variantes de experimentos y rastrear el progreso de evolucion en el tiempo.

Dimensiones de aptitud

DimensionPesoDescripcionComo se mide
response_relevance0.30Cuan relevantes son las respuestas del agente a las consultas del usuarioPuntuacion LLM-como-juez
task_completion0.25Fraccion de tareas completadas exitosamenteTasa de exito de llamadas a herramientas
response_latency0.15Tiempo desde el mensaje del usuario hasta el primer token de respuestaBasado en percentiles (p50, p95)
token_efficiency0.10Tokens consumidos por tarea exitosaMenor es mejor
memory_precision0.10Relevancia de los recuerdos recuperadosPuntuacion de relevancia de recuperacion
user_satisfaction0.10Senales explicitas de retroalimentacion del usuarioPulgar arriba/abajo, correcciones

Puntuacion compuesta

La puntuacion compuesta de aptitud es una suma ponderada:

fitness = sum(dimension_score * dimension_weight)

Cada dimension se normaliza a un rango 0.0--1.0 antes de la ponderacion. La puntuacion compuesta tambien esta en el rango 0.0--1.0, donde mayor es mejor.

Configuracion de aptitud

toml
[self_evolution.fitness]
evaluation_window_hours = 24       # agregar metricas sobre esta ventana
min_sessions_for_score = 10        # requerir al menos 10 sesiones para una puntuacion valida

[self_evolution.fitness.weights]
response_relevance = 0.30
task_completion = 0.25
response_latency = 0.15
token_efficiency = 0.10
memory_precision = 0.10
user_satisfaction = 0.10

[self_evolution.fitness.thresholds]
minimum_acceptable = 0.50          # aptitud por debajo de esto dispara una alerta
regression_delta = 0.05            # caida de aptitud > 5% dispara rollback

Referencia de configuracion de aptitud

CampoTipoPor defectoDescripcion
evaluation_window_hoursu6424Ventana de tiempo para agregar metricas de aptitud
min_sessions_for_scoreusize10Sesiones minimas necesarias para calcular una puntuacion valida
weights.*f64(ver tabla anterior)Peso para cada dimension de aptitud (deben sumar 1.0)
thresholds.minimum_acceptablef640.50Umbral de alerta para aptitud baja
thresholds.regression_deltaf640.05Caida maxima de aptitud antes de rollback automatico

Comandos CLI

bash
# Listar experimentos activos
prx evolution experiments --status running

# Ver un experimento especifico
prx evolution experiments --id <experiment_id>

# Ver resultados del experimento con desglose de aptitud
prx evolution experiments --id <experiment_id> --details

# Cancelar un experimento en ejecucion (revierte al control)
prx evolution experiments cancel <experiment_id>

# Ver puntuacion de aptitud actual
prx evolution fitness

# Ver historial de aptitud en el tiempo
prx evolution fitness --history --last 30d

# Ver desglose de aptitud por dimension
prx evolution fitness --breakdown

Ejemplo de salida de aptitud

Puntuacion de aptitud actual: 0.74

Dimension            Puntuacion  Peso    Contribucion
response_relevance   0.82        0.30    0.246
task_completion      0.78        0.25    0.195
response_latency     0.69        0.15    0.104
token_efficiency     0.65        0.10    0.065
memory_precision     0.71        0.10    0.071
user_satisfaction    0.60        0.10    0.060

Tendencia (ultimos 7 dias): +0.03 (mejorando)

Ejemplos de experimentos

Optimizacion de prompt L2

Un experimento L2 tipico prueba un cambio en el prompt del sistema:

  • Control: prompt del sistema actual (320 tokens)
  • Tratamiento: prompt del sistema refinado (272 tokens, 15% mas corto)
  • Hipotesis: un prompt mas corto libera ventana de contexto, mejorando la relevancia de respuestas
  • Duracion: 7 dias, 100 sesiones por variante
  • Resultado: aptitud del tratamiento 0.75 vs control 0.72 (p = 0.03), tratamiento promovido

Cambio de estrategia L3

Un experimento L3 prueba un cambio de politica de enrutamiento:

  • Control: enrutar todas las tareas de codificacion a Claude Opus
  • Tratamiento: enrutar tareas simples de codificacion a Claude Sonnet, complejas a Opus
  • Hipotesis: enrutamiento eficiente en costos sin perdida de calidad
  • Duracion: 14 dias, 200 sesiones por variante
  • Resultado: aptitud del tratamiento 0.73 vs control 0.74 (p = 0.42), inconcluyente -- experimento extendido

Metodos estadisticos

El sistema de experimentos utiliza los siguientes metodos estadisticos:

  • Prueba t de dos muestras para comparar puntuaciones medias de aptitud entre variantes
  • Prueba U de Mann-Whitney como alternativa no parametrica cuando las distribuciones de aptitud estan sesgadas
  • Correccion de Bonferroni cuando se comparan multiples dimensiones de aptitud simultaneamente
  • Analisis secuencial con gasto alfa para permitir detencion temprana cuando los resultados son claramente significativos

Limitaciones

  • Los experimentos requieren volumen suficiente de sesiones; despliegues de bajo trafico pueden tardar semanas en alcanzar significancia
  • Las senales de satisfaccion del usuario dependen de retroalimentacion explicita, que puede ser escasa
  • La puntuacion LLM-como-juez para relevancia de respuestas anade latencia y costo al pipeline de evaluacion
  • Solo un experimento puede ejecutarse por capa de evolucion a la vez para evitar factores de confusion
  • Las puntuaciones de aptitud son relativas al despliegue especifico; no son comparables entre diferentes instancias de PRX

Paginas relacionadas

Released under the Apache-2.0 License.