Los tests unitarios asumen salida determinística. La salida de un LLM varía por diseño, incluso con temperature 0, porque cada versión de modelo cambia la distribución. Los evals de LLM en CI/CD cierran esa brecha con cuatro piezas: dataset golden, chequeos determinísticos, juez automatizado y gate de regresión en el pipeline.

El dataset golden viene primero

Curaduría manual de 50 a 200 pares entrada/salida esperada, recogidos de queries reales de usuarios y de incidentes de producción. Cada incidente entra con dos o tres casos nuevos. Sin golden set, la discusión sobre calidad se convierte en pelea de opiniones.

Versiona como fixture junto del código (evals/golden.yaml). Un dataset fuera del repo muere olvidado en un sprint.

Chequeos determinísticos antes de jueces

Corre primero lo que cuesta cero tokens de inferencia:

  • Validez de JSON y conformidad de schema con zod o pydantic
  • Lista de frases prohibidas (nombre de competidor, promesa legal)
  • Techo de longitud y formato obligatorio de salida

Ese filtro atrapa cerca de 60% de las regresiones gratis. El juez entra después, en lo que quedó.

LLM-as-judge con rúbrica escrita

Un modelo fuerte puntúa cada salida contra una rúbrica documentada: corrección factual, tono, adherencia de formato, nota de 1 a 5 por criterio. Cuesta 10x menos que revisión humana. Todo juez tiene sesgo; audita 5% de las notas a mano para mantener honestidad.

Gate de regresión en el CI

La suite corre en cada bump de prompt o de modelo (GitHub Actions, GitLab CI, da igual). Una caída de 2-3 puntos en el score compuesto bloquea merge; en la práctica ese umbral denuncia regresión real. Con promptfoo, promptfoo eval --config promptfooconfig.yaml se vuelve un step del workflow, con diff de outputs en el PR.

Drift de calidad en producción

El eval en el PR protege el presente; el drift aparece después. Los proveedores cambian pesos sin aviso. Muestrea 1-2% del tráfico vivo cada noche, puntúa contra baseline y activa al on-call tras tres días consecutivos de caída. La suite de evals es el fusible.

Herramientas por tamaño de equipo

promptfoo cubre pipeline open-source con config YAML y comparación de outputs en el pull request. Braintrust y LangSmith entregan plataforma administrada con tracing y datasets online. Un equipo pequeño llega lejos con fixtures de pytest y disciplina de revisión.

Empieza con 30 casos golden, tres chequeos determinísticos y un gate de 2 puntos en el merge. Una tarde de setup compra protección permanente contra el próximo cambio de modelo que rompe todo.