¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

¿Es mejor mi nuevo agente de IA?

Después de esta lección: Puedo decir si un agente es mejor que otro cuando cada ejecución difiere.

Lección de 70 min6 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Mejor por 13 puntos o por suerte?

La significancia estadística pregunta si la diferencia entre dos agentes supera lo que daría el azar. Sirve porque un agente difiere en cada ejecución, y una sola tasa por versión puede apuntar en la dirección equivocada.

La nueva versión del agente de la tienda puntúa 13 puntos más. ¿La publicas?

Al final de esta lección

Nota

Puedo decir si un agente es mejor que otro cuando cada ejecución difiere.

Palabras clave

PalabraQué significa
Pasa en kun caso que pasó en al menos una de k ejecuciones
Pasa siempreun caso que pasó en las k ejecuciones
Intervaloel rango donde puede estar de verdad una tasa
Prueba de signosuna prueba sobre cuántos casos mejoran o empeoran
Valor pla probabilidad de una diferencia así solo por azar

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Ejecuta cada caso varias veces

Ejecuta cada caso k veces con cada versión, aquí cinco. Dos números describen un caso. Pasa en k dice que pasó al menos una vez, así que el agente puede hacerlo. Pasa siempre dice que pasó en las k ejecuciones, así que puedes fiarte.

Un agente de soporte que debe pasar siempre exige más que uno que debe pasar a veces.

Ejemplo resuelto: ocho casos, cinco ejecuciones cada uno

VersiónTasaPasa en 5Pasa siempre
Antigua60 por ciento7 de 82 de 8
Nueva73 por ciento8 de 83 de 8

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pregunta cuánto de la diferencia es azar

Una tasa de 40 ejecuciones es una estimación. Dibuja un intervalo de unos dos errores estándar a cada lado. Si el intervalo de la versión antigua y el de la nueva se solapan mucho, la diferencia puede ser suerte.

Más ejecuciones y más casos estrechan el intervalo. Es la única forma honesta de aclarar una diferencia pequeña.

Cuenta los casos que se movieron

La prueba de signos ignora lo grande que es cada cambio. Cuenta los casos que mejoraron y los que empeoraron. Los empates no cuentan.

El valor p es la probabilidad de un reparto tan desigual si las versiones fueran iguales. Elige el límite antes. Aquí es 0,05, y un valor p por debajo permite decir mejor o peor.

Escribe las ejecuciones grabadas

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Cinco ejecuciones grabadas de cada caso: 1 pasó, 0 falló.' 'const oldVersion = [\"11111\", \"11101\", \"10100\", \"11011\", \"00000\", \"01101\", \"11111\", \"00010\"];' 'const newVersion = [\"11111\", \"11111\", \"10101\", \"11110\", \"00100\", \"11011\", \"11111\", \"01010\"];' 'module.exports = { oldVersion, newVersion };' > runs.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la comparación, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { oldVersion, newVersion } = require(\"./runs\");' 'function passes(text) {' '  return text.split(\"\").filter(function (c) { return c === \"1\"; }).length;' '}' > stats.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la comparación, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function summary(name, version) {' '  const counts = version.map(passes);' '  const total = counts.reduce(function (a, b) { return a + b; }, 0);' '  const runs = version.length * version[0].length;' '  const p = total / runs;' '  const two = 2 * Math.sqrt(p * (1 - p) / runs);' '  const atLeast = counts.filter(function (n) { return n > 0; }).length;' '  const every = counts.filter(function (n) { return n === version[0].length; }).length;' '  console.log(name + \": tasa \" + Math.round(p * 100) + \" por ciento, intervalo \" + Math.round((p - two) * 100) + \" a \" + Math.round((p + two) * 100));' '  console.log(name + \": pasa en 5 \" + atLeast + \" de \" + version.length + \", pasa siempre \" + every + \" de \" + version.length);' '}' 'summary(\"Antigua\", oldVersion);' 'summary(\"Nueva\", newVersion);' >> stats.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la comparación, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function signP(better, worse) {' '  const n = better + worse;' '  if (n === 0) return 1;' '  const low = Math.min(better, worse);' '  let total = 0;' '  let ways = 1;' '  for (let i = 0; i <= low; i = i + 1) {' '    total = total + ways;' '    ways = ways * (n - i) / (i + 1);' '  }' '  return Math.min(1, 2 * total / Math.pow(2, n));' '}' >> stats.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la comparación, parte 4

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'let better = 0;' 'let worse = 0;' 'oldVersion.forEach(function (text, at) {' '  const a = passes(text);' '  const b = passes(newVersion[at]);' '  if (b > a) better = better + 1;' '  if (b < a) worse = worse + 1;' '});' 'const p = signP(better, worse);' 'console.log(\"Casos mejores: \" + better + \", peores: \" + worse + \", iguales: \" + (oldVersion.length - better - worse));' 'console.log(\"p de la prueba de signos: \" + p.toFixed(4));' 'console.log(\"Veredicto: \" + (p < 0.05 ? (better > worse ? \"mejor\" : \"peor\") : \"incierto\"));' >> stats.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Compara las dos versiones

Comando
docker exec -w /home/node/project agent node stats.js

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Lo que imprime la comparación

LíneaLo que muestra
Tasa antigua60 por ciento, intervalo de 45 a 75
Tasa nueva73 por ciento, intervalo de 58 a 87
Casosmejores 5, peores 0, iguales 3
p de la prueba de signos0.0625
Veredictoincierto

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo

Consejo

En runs.js cambia el cuarto caso de newVersion de "11110" a "11111" y compara otra vez. Ahora seis casos son mejores y ninguno peor, y p baja de 0,05.

Un error frecuente

Advertencia

Mucha gente repite la comparación hasta que el valor p baja de 0,05 y entonces para. Cada repetición es otra oportunidad de tener suerte. Fija antes el número de casos y ejecuciones, lanza una vez y comunica lo que salga.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.