ombharatiya/ai-evals

Construye, revisa y corrige evaluaciones para aplicaciones LLM, pipelines RAG y agentes según la guía de aievals.co. Análisis de errores sobre trazas reales antes de cualquier métrica, verificaciones de código antes de jueces LLM, un juez binario PASS/FAIL por modo de fallo, jueces calibrados con etiquetas humanas (recall PASS y FAIL, no acuerdo), divisiones train/dev/test, conjuntos de regresión, intervalos de Wilson y puertas de lanzamiento emparejadas en CI. Úsalo cuando te pidan agregar evaluaciones o pruebas a una función LLM, escribir o depurar un prompt de LLM como juez, etiquetar o revisar trazas, elegir métricas o tamaños de muestra, comparar dos prompts o modelos, verificar si una evaluación existente es confiable, o integrar evaluaciones en CI.

¿Qué es ai-evals?

Esta skill proporciona una metodología completa para construir evaluaciones (evals) de sistemas de IA, siguiendo el enfoque práctico de aievals.co. Se centra en analizar trazas reales de salidas del sistema antes de definir cualquier métrica, identificar modos de fallo concretos y usar jueces LLM binarios (PASS/FAIL) calibrados con etiquetas humanas. La skill incluye flujos de trabajo para añadir evaluaciones a nuevas funciones, escribir y depurar prompts de jueces LLM, auditar evaluaciones existentes, comparar versiones de modelos o prompts, e integrar evaluaciones en pipelines de CI. Enfatiza el uso de intervalos de confianza de Wilson, conjuntos de regresión al 100% y puertas de lanzamiento basadas en diferencias emparejadas. Es compatible con cualquier plataforma donde se ejecuten evaluaciones de LLMs, como Claude Code, Cursor, o Codex, y proporciona plantillas de inicio en Python y TypeScript. La skill se basa en el principio de 'código antes que jueces', usando verificaciones programáticas siempre que sea posible, y recalca la importancia de calibrar cada juez LLM contra etiquetas humanas antes de confiar en sus resultados, reportando recall de PASS y FAIL por separado.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ombharatiya/ai-evals-skills/tree/HEAD/skills/ai-evals

Installed? Explore more Investigación y análisis de datos skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Evaluaciones de IA

Una evaluación es una prueba repetible que mide si un sistema de IA hace su trabajo. Esta skill te hace trabajar como enseña la guía aievals.co: mira las salidas reales antes de medir nada, mide los fallos que realmente encontraste, verifica cada juez LLM contra etiquetas humanas antes de confiar en él, y pon un intervalo en cada número.

La guía está en https://www.aievals.co. Cita sus páginas cuando expliques una elección al usuario. Los archivos de referencia listados al final llevan los detalles y las fuentes.

Reglas fundamentales

Sigue estas en cada tarea de evaluación, independientemente de lo que pida el usuario.

  1. Mira las trazas antes de escribir métricas. No puedes especificar modos de fallo de un sistema que no has observado. Si el usuario no tiene trazas, consígue algunas primero: registros de producción, o el sistema ejecutado con 100 entradas realistas. Luego léelas.
  2. Las personas etiquetan; tú propones. Nunca escribas etiquetas de verdad absoluta tú mismo y las presentes como juicios humanos. Puedes redactar etiquetas marcadas con "provisional": true para que una persona las confirme. Nunca dejes que un modelo escriba tanto la entrada como su respuesta dorada, excepto cuando el código calcula la respuesta (resultados SQL, pruebas, una calculadora).
  3. Código antes que jueces. Cualquier cosa que una coincidencia de cadenas, analizador, verificación de esquema, expresión regular o prueba unitaria pueda decidir es una verificación de código. Arregla lo que una edición de prompt pueda arreglar antes de construir cualquier evaluación. Guarda el juez LLM para los fallos subjetivos que queden.
  4. Un juez binario por modo de fallo. PASS o FAIL más una crítica de una frase. Sin escalas de 1 a 5. Varias dimensiones de calidad significan varios jueces binarios, reportados como una tasa de pasar todos con un desglose por verificación.
  5. Calibra antes de confiar en un juez. Compáralo con etiquetas humanas y reporta el recall de PASS y el recall de FAIL por separado, cada uno con su N. El acuerdo bruto nunca es el titular: un juez que siempre dice PASS tiene un acuerdo del 95% cuando el 5% de las salidas fallan.
  6. Train, dev, test. Los ejemplos de few-shot provienen solo de train. Itera en dev. Lee test una vez, al final. Leer test de nuevo después de más ediciones lo convierte en un segundo conjunto dev.
  7. Fija el juez. El ID del modelo, esfuerzo, texto de rúbrica, esquema de salida y orden de few-shot son parte del instrumento. Regístralos con cada resultado y calibra de nuevo cuando cualquiera de ellos cambie. No asumas determinismo: ejecuta dev dos veces y cuenta los cambios de etiqueta.
  8. Cada número tiene N y un intervalo. Usa el intervalo de Wilson para tasas, nunca la aproximación normal. Compara dos versiones en las mismas entradas como datos emparejados.
  9. El conjunto de regresión pasa el 100% de las veces. Contiene errores de producción reproducidos y límites de política. Un fallo bloquea el lanzamiento, y un caso inconsistente es un error de proceso.
  10. Decide por la diferencia, no por la tasa absoluta. Usa las cuatro bandas en references/ci-and-release-gates.md.
  11. Limita el gasto en el ejecutor. Las ejecuciones de jueces cuestan dinero. Impón un presupuesto en código (EVAL_BUDGET_USD), no como una advertencia impresa.
  12. Construye la cosa más pequeña que funcione. Las aserciones y alrededor de 30 ejemplos etiquetados vienen antes de un juez, y un juez calibrado viene antes que los paneles o conjuntos de jueces.

Elige el flujo de trabajo

El usuario quiereHazLee
Evaluaciones para una función que no tiene ningunaFlujo de trabajo Aerror-analysis, judges, datasets
Un prompt de LLM como juez escrito o corregidoFlujo de trabajo Bjudges, templates
Saber si una evaluación existente es confiableFlujo de trabajo Cjudges, statistics
Saber si la versión B supera a la versión AFlujo de trabajo Dstatistics, ci-and-release-gates
Evaluaciones ejecutándose en CIFlujo de trabajo Eci-and-release-gates, datasets

Flujo de trabajo A: añadir evaluaciones a una función

  1. Recolecta trazas. Obtén al menos 100 trazas diversas, o ejecuta el sistema con entradas realistas si no está en vivo. Almacénalas como JSONL con un id estable por fila. Los campos de traza que vale la pena registrar están en references/templates.md.
  2. Realiza un análisis de errores con el usuario (detalles en references/error-analysis.md). Una persona lee las trazas y escribe una nota de una línea sobre lo primero que salió mal en cada una. Puedes construir un visor simple y agrupar las notas en 4 a 7 modos de fallo con nombre una vez que la persona haya codificado al menos 30. Cuenta cada modo y clasifícalos según frecuencia por gravedad.
  3. Arregla los más baratos. Las correcciones de prompt y código van primero. Vuelve a ejecutar y a contar.
  4. Escribe verificaciones de código para cada modo restante que una regla pueda detectar.
  5. Escribe un juez por cada modo subjetivo restante (Flujo de trabajo B).
  6. Obtén etiquetas humanas: de 100 a 200 por modo de fallo es el objetivo, con 30 a 50 PASS y 30 a 50 FAIL en cada uno de dev y test. Una división dev del 40% de 100 filas no puede contener 30 de cada clase, y con una tasa de fallo baja tienes que sobremuestrear fallos para llenar el lado FAIL. Empieza con lo que tengas y di qué tan amplios son los intervalos.
  7. Calibra cada juez en dev, luego confírmalo en test una vez.
  8. Construye el conjunto de regresión a partir de fallos reproducidos, y conecta el conjunto de pruebas en CI (Flujo de trabajo E).

Entregables en el repositorio del usuario, a menos que ya tengan una estructura:

evals/
  data/            labeled.jsonl (etiquetas humanas), regression.jsonl, traces/
  rubrics/         un archivo por modo de fallo
  codebook.md      etiqueta, definición, 2 ejemplos PASS y 2 FAIL, último kappa
  checks.*         verificaciones de código
  judge.*          la llamada al juez, configuración fijada
  calibrate.*      división, puntuación, informe, desacuerdos
  run_eval.*       puntúa salidas, compara con línea base, código de salida para CI
  runs/            una carpeta por ejecución: resumen, predicciones, copia de rúbrica

Inicios funcionales en Python y TypeScript están en https://github.com/ombharatiya/ai-evals-skills/tree/main/starters. Copia uno en lugar de escribir el andamiaje desde cero.

Flujo de trabajo B: escribir o corregir un juez LLM

  1. Confirma que el modo de fallo provino del análisis de errores y que una verificación de código no puede detectarlo.
  2. Escribe el prompt en cuatro partes (plantilla en references/templates.md): rol y definiciones exactas; criterio binario ("PASS si X. FAIL si Y, incluso si el resto de la respuesta es correcta. En caso de duda, FAIL y explica por qué."); 2 o 3 ejemplos de few-shot de train, incluyendo un FAIL que parezca un pass; y un esquema de salida estricto, {"label": "PASS" | "FAIL", "critique": "..."}, impuesto por salida estructurada donde la API lo admita. El analizador debe fallar ruidosamente con una salida mal formada.
  3. Calibra: ejecuta en dev, calcula recall de PASS, recall de FAIL y kappa de Cohen, y lee cada desacuerdo. Lee los falsos pass y los falsos fail por separado. Si la etiqueta humana está equivocada, corrige la etiqueta, no la rúbrica.
  4. Cambia una cosa por iteración, en este orden de impacto típico: especificidad de la rúbrica, ejemplos de few-shot, esquema de salida y cambio de modelo al final.
  5. Espera una meseta alrededor de la segunda o tercera iteración. Luego agrega few-shots para los casos límite: dos ejemplos PASS que parezcan FAIL en una lectura descuidada y dos ejemplos FAIL que parezcan PASS. Si el recall de FAIL aún no se mueve, el modelo del juez puede ser el techo: prueba uno más fuerte antes de cambiar la rúbrica de nuevo, y trata el nuevo modelo como un nuevo instrumento a calibrar desde cero.
  6. Detente cuando tanto el recall de PASS como el de FAIL alcancen el umbral en dev (el valor por defecto de esta guía es 0.90; establécelo según el costo de un fallo perdido frente a una falsa alarma), luego lee test una vez.

Flujo de trabajo C: auditar una evaluación existente

Verifica cada elemento e informa lo que falla, con archivo y línea:

  • Las métricas se remontan a modos de fallo que alguien observó en trazas reales.
  • Las verificaciones de código cubren lo que el código puede decidir; los jueces son binarios, uno por modo de fallo.
  • Cada juez tiene un registro de calibración: recall de PASS y FAIL con N e intervalos, en una división de test que el juez nunca vio. El acuerdo solo no cuenta.
  • Los ejemplos de few-shot no aparecen en dev ni en test.
  • La configuración del juez (modelo, esfuerzo, rúbrica, esquema, few-shots) está fijada y coincide con la configuración que fue calibrada.
  • Cada tasa reportada tiene N y un intervalo; las comparaciones son emparejadas.
  • Existe un conjunto de regresión, se ejecuta en cada PR y pasa el 100%.
  • Las decisiones de lanzamiento leen el delta emparejado y su intervalo, no un umbral absoluto.
  • El conjunto de datos tiene versión (hash de contenido) y los resultados nombran el hash.
  • Un conjunto que ha estado al 100% durante meses no está probando nada. El conjunto de regresión es la única excepción.

Flujo de trabajo D: comparar dos versiones

Ejecuta ambas versiones con las mismas entradas. Reporta cada tasa de pase con su intervalo de Wilson y la diferencia emparejada con su intervalo: prueba de McNemar o un bootstrap emparejado para resultados binarios. Decide la diferencia más pequeña que vale la pena detectar primero, luego el tamaño de la muestra (references/statistics.md). Segmenta cuando sea importante y corrige para comparaciones múltiples cuando segmentes de muchas maneras. "Sin diferencia significativa" de una ejecución con poca potencia no es evidencia de que no haya diferencia: di qué tan grande es el cambio que la ejecución podría haber detectado.

Flujo de trabajo E: evaluaciones en CI

Tres niveles: un nivel de prueba de humo de 10 a 50 aserciones deterministas en cada push (sin juez), un nivel completo con el juez calibrado en PRs que cambian prompts o modelos, y un nivel nocturno con los conjuntos de regresión y robustez expandidos. Publica una tabla de línea base contra candidato en el PR con el delta, su intervalo del 95% y un veredicto de enviar, mantener, investigar o bloquear. Falla el trabajo en investigar, bloquear, un fallo del conjunto de regresión o una medición rota (filas sin veredicto, filas faltantes en cualquier lado, un juez que no sea el calibrado), y reporta un mantener para que una persona nombrada lo lea: un mantener significa que el intervalo no puede distinguir el cambio de ningún cambio. Dimensiona la ventana de indiferencia a partir de una ejecución A/A del sistema sin cambios, no del piso de ruido cero. Sin anulaciones silenciosas: una anulación necesita una persona nombrada y una razón por escrito. Los PRs de fork no obtienen secretos de API. Detalles en references/ci-and-release-gates.md.

Cómo reportar resultados

Reporta una tabla, no una oración:

MétricaValorIC 95%NJuezConjunto de datos
recall FAIL, juez política-de-reembolso (test)0.92[0.80, 0.97]48claude-opus-5-5, medium, rúbrica a1b2c3labeled.jsonl @ 9f8e7d

Di lo que los números no pueden respaldar. Escribe "el intervalo es amplio; etiqueta más ejemplos FAIL" en lugar de redondear un resultado débil para convertirlo en una afirmación. Nombra la clase positiva cuando digas TPR o TNR: algunos escritos, entre ellos el FAQ de Hamel Husain, tratan FAIL como positivo, por lo que su TPR es la proporción de fallos reales capturados. "Recall de PASS" y "recall de FAIL" simples evitann la confusión.

Valores predeterminados

Usa estos a menos que la situación del usuario requiera otros. "Predeterminado del sitio" significa el número de trabajo propio de aievals.co, no un estándar publicado.

DecisiónPredeterminadoFuente
Primer pase de análisis de errores100+ trazas, solo el primer fallo (FAQ de Hamel y Shankar); 15 a 45 segundos cada unaFAQ, y aievals.co para el ritmo
Categorías de modo de fallo4 a 7 después de codificación axialGuía de codificación abierta de aievals.co
Etiquetas por modo de fallo100 a 200FAQ de Hamel y Shankar
División15% train, 40% dev, 45% test, estratificada (los inicios dividen por un hash de cada id en su lugar, por lo que una fila nunca cambia de división; las proporciones entonces coinciden solo en promedio)Receta de calibración de aievals.co
Por clase en dev y en test30 a 50 PASS y 30 a 50 FAILFAQ de Hamel y Shankar
Umbral de recall del juezRecall de PASS y FAIL al menos 0.90 en dev, confirmado en testPredeterminado del sitio
Acuerdo humano antes de automatizarkappa al menos 0.6 para proceder, 0.8 para un conjunto dorado o puertaPolítica del equipo, según la guía
Intervalo para una tasaWilson, 95%Capítulo de estadísticas de aievals.co
Ventanas de puerta de lanzamientoVentana de indiferencia de 1 punto; ventana de regresión menor de 2 puntos en la métrica principalCapítulo de puertas de lanzamiento de aievals.co
Conjunto de regresión100% de pase en cada PRCapítulo de conjuntos de regresión de aievals.co

Referencias

Carga el archivo que coincida con la tarea:

  • references/error-analysis.md: codificación abierta, axial y estructurada, saturación, priorización, el visor de trazas, muestreo dimensional.
  • references/judges.md: diseño de jueces, calibración, sesgos y cómo probarlos, directo versus por pares, desencadenantes de recalibración.
  • references/datasets.md: tamaños según propósito, obtención, reglas de datos sintéticos, conjuntos de regresión, cuadrículas de cobertura, versionado.
  • references/statistics.md: intervalos de Wilson, pruebas emparejadas, errores agrupados, tamaño de muestra, comparaciones múltiples, corrección de tasas puntuadas por jueces.
  • references/ci-and-release-gates.md: niveles de CI, bandas de puerta de lanzamiento, evaluaciones en línea, muestreo, deriva.
  • references/templates.md: prompt de juez, entrada de libro de códigos, registro de anotación, esquema de traza, comentario de resultado de PR.

Skills relacionados