Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Mon nouvel agent IA est-il meilleur ?

Après cette leçon: Je peux dire si un agent est meilleur qu’un autre quand chaque essai diffère.

Leçon de 70 min6 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Mieux de 13 points, ou par chance ?

La significativité statistique demande si l’écart entre deux agents dépasse ce que le hasard donnerait. C’est utile, car un agent diffère à chaque essai : un seul taux par version peut indiquer la mauvaise direction.

La nouvelle version de l’agent de la boutique a 13 points de plus. La mettez-vous en service ?

À la fin de cette leçon

Remarque

Je peux dire si un agent est meilleur qu’un autre quand chaque essai diffère.

Mots-clés

MotCe que ça veut dire
Réussite sur kun cas réussi dans au moins un des k essais
Réussite à chaque foisun cas réussi dans tous les k essais
Intervallela plage où un taux peut vraiment se trouver
Test des signesun test sur le nombre de cas meilleurs ou pires
Valeur pla chance d’un écart aussi grand par hasard seul

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Lancer chaque cas plusieurs fois

Passez chaque cas k fois pour chaque version, ici cinq. Deux nombres décrivent un cas. La réussite sur k dit qu’il a réussi au moins une fois : l’agent en est capable. La réussite à chaque fois dit qu’il a réussi dans les k essais : on peut s’y fier.

Un agent de support qui doit réussir à chaque fois n’a pas la même barre qu’un agent qui doit réussir parfois.

Exemple travaillé : huit cas, cinq essais chacun

VersionTauxRéussite sur 5Réussite à chaque fois
Ancienne60 pour cent7 sur 82 sur 8
Nouvelle73 pour cent8 sur 83 sur 8

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Demander quelle part de l’écart vient du hasard

Un taux tiré de 40 essais est une estimation. Tracez un intervalle d’environ deux erreurs types de chaque côté. Si l’intervalle de l’ancienne et celui de la nouvelle se recouvrent beaucoup, l’écart peut être dû au hasard.

Plus d’essais et plus de cas resserrent l’intervalle. C’est la seule façon honnête de rendre net un petit écart.

Compter les cas qui ont bougé

Le test des signes ignore l’ampleur de chaque changement. Il compte les cas meilleurs et les cas pires. Les égalités ne comptent pas.

La valeur p est la chance d’un partage aussi déséquilibré si les versions étaient vraiment égales. Fixez la limite d’abord. Ici, c’est 0,05 : une valeur p plus basse permet de dire mieux ou pire.

Écrire les essais enregistrés

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Cinq essais enregistrés de chaque cas : 1 réussi, 0 raté.' 'const ancienne = [\"11111\", \"11101\", \"10100\", \"11011\", \"00000\", \"01101\", \"11111\", \"00010\"];' 'const nouvelle = [\"11111\", \"11111\", \"10101\", \"11110\", \"00100\", \"11011\", \"11111\", \"01010\"];' 'module.exports = { ancienne, nouvelle };' > essais.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire la comparaison, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ancienne, nouvelle } = require(\"./essais\");' 'function reussites(texte) {' '  return texte.split(\"\").filter(function (c) { return c === \"1\"; }).length;' '}' > stats.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire la comparaison, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function resume(nom, version) {' '  const comptes = version.map(reussites);' '  const total = comptes.reduce(function (a, b) { return a + b; }, 0);' '  const essais = version.length * version[0].length;' '  const p = total / essais;' '  const deux = 2 * Math.sqrt(p * (1 - p) / essais);' '  const auMoins = comptes.filter(function (n) { return n > 0; }).length;' '  const toujours = comptes.filter(function (n) { return n === version[0].length; }).length;' '  console.log(nom + \" : taux \" + Math.round(p * 100) + \" pour cent, intervalle \" + Math.round((p - deux) * 100) + \" à \" + Math.round((p + deux) * 100));' '  console.log(nom + \" : réussite sur 5 \" + auMoins + \" cas sur \" + version.length + \", réussite à chaque fois \" + toujours + \" cas sur \" + version.length);' '}' 'resume(\"Ancienne\", ancienne);' 'resume(\"Nouvelle\", nouvelle);' >> stats.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire la comparaison, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function pSignes(mieux, pire) {' '  const n = mieux + pire;' '  if (n === 0) return 1;' '  const bas = Math.min(mieux, pire);' '  let total = 0;' '  let facons = 1;' '  for (let i = 0; i <= bas; i = i + 1) {' '    total = total + facons;' '    facons = facons * (n - i) / (i + 1);' '  }' '  return Math.min(1, 2 * total / Math.pow(2, n));' '}' >> stats.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire la comparaison, partie 4

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'let mieux = 0;' 'let pire = 0;' 'ancienne.forEach(function (texte, rang) {' '  const a = reussites(texte);' '  const b = reussites(nouvelle[rang]);' '  if (b > a) mieux = mieux + 1;' '  if (b < a) pire = pire + 1;' '});' 'const p = pSignes(mieux, pire);' 'console.log(\"Cas meilleurs : \" + mieux + \", pires : \" + pire + \", égaux : \" + (ancienne.length - mieux - pire));' 'console.log(\"p du test des signes : \" + p.toFixed(4));' 'console.log(\"Verdict : \" + (p < 0.05 ? (mieux > pire ? \"meilleure\" : \"pire\") : \"incertain\"));' >> stats.js"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Comparer les deux versions

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

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce que la comparaison affiche

LigneCe qu’elle montre
Taux de l’ancienne60 pour cent, intervalle de 45 à 75
Taux de la nouvelle73 pour cent, intervalle de 58 à 87
Casmeilleurs 5, pires 0, égaux 3
p du test des signes0.0625
Verdictincertain

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À vous

Astuce

Dans essais.js, changez le quatrième cas de nouvelle de "11110" en "11111", puis comparez de nouveau. Six cas sont maintenant meilleurs et aucun pire : p passe sous 0,05.

Une erreur fréquente

Attention

Beaucoup relancent la comparaison jusqu’à ce que la valeur p passe sous 0,05, puis s’arrêtent. Chaque relance est une nouvelle chance d’avoir de la chance. Fixez d’abord le nombre de cas et d’essais, lancez une fois et rapportez ce qui sort.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.