MÓDULO 6 · OBSERVABILIDAD · LECCIÓN 06 · 30 MIN

Datasets y experimentos

Un score te dice cómo fue lo que ya pasó. Un dataset te deja preguntar "¿qué pasaría si…?" antes de que le pase a un usuario. La clave es que el dataset está fijo: las mismas entradas, el mismo criterio, y lo único que cambia entre una medición y otra es tu sistema.
01 — Las dos evaluaciones
Ninguna sustituye a la otra
Score en producciónExperimento sobre dataset
CuándoDespués, sobre tráfico realAntes de desplegar
Sobre quéLo que preguntaron los usuariosEjemplos que elegiste tú
ReferenciaNo hay respuesta esperadaSí: cada ejemplo trae la suya
Qué comparasHoy contra ayerVariante A contra variante B
Qué detectaDegradación en el mundo realRegresión antes de que exista

La primera te avisa de que algo va mal; la segunda te deja cambiar cosas sin cruzar los dedos.

02 — El bucle
Cuatro pasos, tres orquestados
datasetse crea una vez→ ejecutar cadenasobre cada ejemplo→ evaluadorreal vs referencia→ tabla agregadacomparable

Lo que hace que esto valga la pena no es el evaluador, es el dataset: se crea una vez y se reutiliza en cada cambio. La segunda evaluación ya es gratis en esfuerzo, y la vigésima también.

03 — Qué hace comparable un experimento
Tres condiciones
Una variable por experimento
Si cambias modelo y prompt en la misma corrida y el resultado mejora, no sabes cuál de las dos lo hizo. Comparar dos modelos con dos estilos de prompt son cuatro corridas, no dos.
temperature=0 en el sistema evaluado
No porque sea la mejor configuración para producción, sino porque sin ella dos corridas idénticas dan resultados distintos y no puedes atribuir la diferencia a tu cambio.
Metadata en cada corrida
Versión, modelo, prompt. Es lo que te deja volver dentro de tres semanas y saber qué era exactamente "la corrida del martes".
04 — El dataset se gasta
Sobreajuste, también aquí

Si ajustas el prompt contra los mismos diez ejemplos hasta que los diez pasen, no has mejorado el sistema: lo has ajustado a diez ejemplos. Dos defensas baratas: un conjunto aparte que no toques mientras iteras, y crecer el dataset con los fallos reales, de modo que cada respuesta mala de producción entre como ejemplo nuevo.

El criterio que ordena todo
Un dataset donde apruebas todo no te está diciendo que vas bien. Te está diciendo que ya no discrimina.
// el examen se endurece con el tiempo, o deja de ser un examen.
Auditoría

El 100 % anunciado. La validación de la lección de datasets dice literalmente: "Deberías ver que GPT-3.5 acertó todas (Score: 1/1 en Correctness)". El dataset son tres preguntas: capital de Francia, de Australia y de Brasil. Tres ejemplos de cultura general no cubren casos borde ni tu dominio, y anunciar el 100 % como resultado esperado enseña el reflejo contrario al del módulo: un evaluador que aprueba todo no ha demostrado que tu sistema sea bueno, ha demostrado que no discrimina. Ese resultado se audita, no se celebra.

La API de evaluación. La guía usa from langchain.smith import RunEvalConfig, run_on_dataset. ¿Sigue existiendo ese import en las versiones que instales hoy, o la vía vigente es evaluate() del paquete langsmith? Compruébalo antes de escribir el ejercicio encima: si está retirado, el fallo llega en el import y no en la lógica.

El A/B test de la última lección. Enruta tres preguntas al azar 50/50 entre dos variantes y declara un "ganador por eficiencia" comparando la media de len(texto)/4 como estimación de tokens. Con tres tiradas una variante puede llevarse las tres — la propia guía lo admite en su troubleshooting — y los tokens reales ya están registrados en las trazas, así que se estima a ojo un dato que la herramienta tiene medido. Eso no es un A/B test: es una anécdota con formato de tabla.

05 — Ahora tú
Comprueba que tu evaluador sabe suspender

Monta un dataset mínimo con tus propios ejemplos y córrelo. Anota la nota agregada. Ahora añade tres ejemplos que estés bastante seguro de que tu sistema falla — los casos raros que te preocupan — y vuelve a correr sin cambiar nada del sistema.

Si la nota agregada no baja, el problema no está en tu cadena: está en tu evaluador, que no mira lo que crees que mira. Arregla eso antes de usar el dataset para decidir nada.