# Evals


Las evaluaciones (evals) te ayudan a realizar un seguimiento de cómo cambia el comportamiento de tu
agente a lo largo del tiempo. Cuando guardas una conversación como una evaluación, puedes reproducirla
más tarde para ver si el agente responde de manera diferente. Las evaluaciones miden la
consistencia, no la corrección: te indican si el comportamiento cambió, no si es correcto o
incorrecto.

## ¿Qué son las evaluaciones?

Una evaluación (eval) es una conversación guardada que puedes reproducir. Al ejecutar evaluaciones,
Docker Agent reproduce los mensajes del usuario y compara las nuevas respuestas con la
conversación guardada original. Puntuaciones altas significan que el agente se comportó de manera
similar; puntuaciones bajas indican que el comportamiento cambió.

Lo que hagas con esa información dependerá de por qué guardaste la conversación. Puedes guardar
conversaciones exitosas para detectar regresiones, o guardar casos de falla para documentar
problemas conocidos y realizar un seguimiento de su mejora.

## Flujos de trabajo comunes

La forma en que utilizas las evaluaciones depende de lo que intentes lograr:

**Pruebas de regresión**: Guarda conversaciones en las que tu agente funcione bien. Cuando realices
cambios más adelante (actualizar modelos, actualizar prompts, refactorizar código), ejecuta las
evaluaciones. Las puntuaciones altas significan que el comportamiento se mantuvo consistente, lo
cual suele ser lo que deseas. Las puntuaciones bajas significan que algo cambió; examina el nuevo
comportamiento para ver si sigue siendo correcto.

**Seguimiento de mejoras**: Guarda conversaciones donde tu agente tenga dificultades o falle.
A medida que realices mejoras, ejecuta estas evaluaciones para ver cómo evoluciona el comportamiento.
Las puntuaciones bajas indican que el agente ahora se comporta de manera diferente, lo que podría
significar que has solucionado el problema. Deberás verificar manualmente si el nuevo comportamiento
es realmente mejor.

**Documentar casos límite (edge cases)**: Guarda conversaciones interesantes o inusuales independientemente
de su calidad. Utilízalas para comprender cómo maneja tu agente los casos límite y si ese
comportamiento cambia con el tiempo.

Las evaluaciones miden si el comportamiento cambió. Tú determinas si ese cambio es bueno o malo.

## Crear una evaluación

Guarda una conversación de una sesión interactiva:

```console
$ docker agent run ./agent.yaml
```

Mantén una conversación con tu agente y luego guárdala como una evaluación:

```console
> /eval nombre-caso-prueba
Eval saved to evals/nombre-caso-prueba.json
```

La conversación se guarda en el directorio `evals/` de tu directorio de trabajo actual. Puedes
organizar los archivos de evaluación en subdirectorios si es necesario.

## Ejecutar evaluaciones

Ejecuta todas las evaluaciones en el directorio por defecto:

```console
$ docker agent eval ./agent.yaml
```

Usa un directorio de evaluación personalizado:

```console
$ docker agent eval ./agent.yaml ./mis-evals
```

Ejecuta evaluaciones contra un agente de un registro:

```console
$ docker agent eval agentcatalog/myagent
```

Ejemplo de salida:

```console
$ docker agent eval ./agent.yaml
--- 0
First message: tell me something interesting about kil
Eval file: c7e556c5-dae5-4898-a38c-73cc8e0e6abe
Tool trajectory score: 1.000000
Rouge-1 score: 0.447368
Cost: 0.00
Output tokens: 177
```

## Comprender los resultados

Para cada evaluación, Docker Agent muestra:

- **First message** (Primer mensaje): El mensaje inicial del usuario de la conversación guardada.
- **Eval file** (Archivo de evaluación): El UUID del archivo de evaluación que se está ejecutando.
- **Tool trajectory score** (Puntuación de trayectoria de herramientas): Qué tan similar fue el uso de
  herramientas por parte del agente (escala 0-1, cuanto mayor sea, mejor).
- **[ROUGE-1](/ai/docker-agent/<https:/en.wikipedia.org/wiki/ROUGE_(metric)>) score** (Puntuación ROUGE-1): Similitud de
  texto entre las respuestas (escala 0-1, cuanto mayor sea, mejor).
- **Cost** (Costo): El costo de la ejecución de esta evaluación.
- **Output tokens** (Tokens de salida): Número de tokens generados.

Las puntuaciones más altas significan que el agente se comportó de manera más similar a la conversación
original grabada. Una puntuación de 1.0 significa un comportamiento idéntico.

### Qué significan las puntuaciones

La **puntuación de trayectoria de herramientas** (Tool trajectory score) mide si el agente llamó
a las mismas herramientas en el mismo orden que en la conversación original. Las puntuaciones más
bajas pueden indicar que el agente encontró un enfoque diferente para resolver el problema, lo cual
no es necesariamente incorrecto pero vale la pena investigar.

La **puntuación ROUGE-1** mide qué tan similar es el texto de respuesta al original. Esta es una
medida heurística: una redacción diferente aún puede ser correcta, por lo que debes usar esto como
una señal más que como una verdad absoluta.

### Interpretar tus resultados

Las puntuaciones cercanas a 1.0 significan que tus cambios mantuvieron un comportamiento consistente:
el agente está utilizando el mismo enfoque y produciendo respuestas similares. Esto generalmente es
bueno; tus cambios no rompieron la funcionalidad existente.

Las puntuaciones más bajas significan que el comportamiento cambió en comparación con la conversación
guardada. Esto podría ser una regresión donde el agente ahora funciona peor, o podría ser una mejora
donde el agente encontró un enfoque mejor.

Cuando las puntuaciones bajen, examina el comportamiento real para determinar si es mejor o peor. Los
archivos de evaluación se almacenan como JSON en tu directorio de evaluaciones: abre el archivo para
ver la conversación original. Luego, prueba tu agente modificado con la misma entrada para comparar las
respuestas. Si la nueva respuesta es mejor, guarda una nueva conversación para reemplazar la
evaluación. Si es peor, habrás encontrado una regresión.

Las puntuaciones te guían hacia lo que cambió. Tu criterio determina si el cambio es bueno o malo.

## Cuándo usar las evaluaciones

Las evaluaciones te ayudan a rastrear los cambios de comportamiento a lo largo del tiempo. Son útiles
para detectar regresiones al actualizar modelos o dependencias, documentar casos de falla conocidos
que deseas solucionar y comprender cómo evolucionan los casos límite a medida que iteras.

Las evaluaciones no son adecuadas para determinar qué configuración de agente funciona mejor; miden la
similitud con una conversación guardada, no la corrección. Utiliza pruebas manuales para evaluar
diferentes configuraciones y decidir cuál funciona mejor.

Guarda las conversaciones que valga la pena rastrear. Crea una colección de flujos de trabajo
importantes, casos límite interesantes y problemas conocidos. Ejecuta tus evaluaciones al realizar
cambios para ver qué ha variado.

## ¿Qué sigue?

- Consulta la [referencia de CLI](/ai/docker-agent/evals/reference/cli/#eval) para conocer todas las opciones de `docker agent eval`
- Aprende las [mejores prácticas](/ai/docker-agent/evals/best-practices/) para crear agentes eficaces
- Revisa las [configuraciones de ejemplo](https://github.com/docker/docker-agent/tree/main/examples) para diferentes tipos de agentes

