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

Détecter une régression d’un modèle

Après cette leçon: Je peux comparer deux versions sur les mêmes cas et décider si l’une est pire.

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

La nouvelle consigne est-elle pire ?

Un passage de régression compare deux versions d’une fonction sur les mêmes cas et dit ce qui a empiré. C’est utile, car une retouche qui répare un message en casse souvent un autre, sans que personne le voie.

La boutique a une nouvelle version de son trieur. Le taux de réussite semble le même qu’avant. Cela ne veut pas dire que rien n’a changé.

À la fin de cette leçon

Remarque

Je peux comparer deux versions sur les mêmes cas et décider si l’une est pire.

Mots-clés

MotCe que ça veut dire
Régressionun cas réussi avant et raté maintenant
Taux de réussitela part des cas qui réussissent
Version de départla version à laquelle on compare
Bruitl’écart entre deux passages d’une même version
Cas instableun cas qui réussit parfois et rate parfois

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

Comparer les mêmes cas, version par version

Passez les deux versions sur le même jeu de référence et gardez le résultat de chaque cas. Le taux de réussite donne un seul nombre. La liste des cas qui ont changé donne la raison.

Une régression est un cas réussi dans la version de départ et raté maintenant. Lisez cette liste avant le taux.

Exemple travaillé : même taux, autres cas

VersionCas réussis sur 12Taux de réussiteCas ratés
Ancienne, passage 11083 pour cent8, 12
Ancienne, passage 2975 pour cent5, 11, 12
Nouvelle975 pour cent4, 10, 12

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

Un passage prouve peu, car les réponses varient

Un modèle peut répondre autrement à chaque fois au même message. Passez donc l’ancienne version deux fois. L’écart entre ces deux taux est le bruit.

Un cas instable réussit dans un passage et rate dans le suivant. N’en accusez pas la nouvelle version.

Décider avec le taux, puis avec les cas

Si le nouveau taux est plus bas que l’ancien de plus que le bruit, dites que c’est pire. S’il reste dans le bruit, le taux ne dit rien.

Regardez ensuite les cas. Un cas réussi dans tous les anciens passages et raté dans le nouveau est une régression ferme : c’est celle à corriger.

Écrire les trois passages enregistrés, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const voulues = [\"facturation\", \"livraison\", \"autre\", \"facturation\", \"livraison\", \"autre\", \"facturation\", \"livraison\", \"inconnu\", \"inconnu\", \"facturation\", \"autre\"];' '// Passages enregistrés : une étiquette et une urgence pour chaque cas, et un texte si besoin.' 'const passageA1 = [[\"facturation\", 2], [\"livraison\", 2], [\"autre\", 1], [\"facturation\", 2], [\"livraison\", 3], [\"autre\", 1], [\"facturation\", 2], [\"facturation\", 2], [\"inconnu\", 1], [\"inconnu\", 1], [\"facturation\", 3], [\"livraison\", 2]];' > passages.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 les trois passages enregistrés, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const passageA2 = [[\"facturation\", 2], [\"livraison\", 2], [\"autre\", 1], [\"facturation\", 2], [\"autre\", 1], [\"autre\", 1], [\"facturation\", 2], [\"livraison\", 2], [\"inconnu\", 1], [\"inconnu\", 1], [\"autre\", 2], [\"livraison\", 2]];' >> passages.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 les trois passages enregistrés, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const passageB = [[\"facturation\", 2], [\"livraison\", 2], [\"autre\", 1], [\"autre\", 2], [\"livraison\", 3], [\"autre\", 1], [\"facturation\", 2], [\"livraison\", 2], [\"inconnu\", 1], [\"inconnu\", 1, \"Votre remboursement a été accepté.\"], [\"facturation\", 3], [\"livraison\", 2]];' 'module.exports = { voulues, passageA1, passageA2, passageB };' >> passages.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 { voulues, passageA1, passageA2, passageB } = require(\"./passages\");' '// Les règles de la leçon 2, abrégées : bonne étiquette, urgence de 1 à 3, aucune phrase interdite.' 'function reussit(entree, attendue) {' '  const dit = (entree[2] || \"\").toLowerCase();' '  return entree[0] === attendue && entree[1] >= 1 && entree[1] <= 3 && dit.includes(\"remboursement a été\") === false;' '}' 'function resultats(passage) {' '  return passage.map(function (entree, rang) { return reussit(entree, voulues[rang]); });' '}' > comparer3.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 taux(liste) {' '  return Math.floor(liste.filter(Boolean).length * 100 / liste.length);' '}' 'const a1 = resultats(passageA1);' 'const a2 = resultats(passageA2);' 'const b = resultats(passageB);' 'console.log(\"Taux de réussite A1 : \" + taux(a1) + \" pour cent\");' 'console.log(\"Taux de réussite A2 : \" + taux(a2) + \" pour cent\");' 'console.log(\"Taux de réussite B : \" + taux(b) + \" pour cent\");' 'const bruit = Math.abs(taux(a1) - taux(a2));' 'console.log(\"Bruit entre A1 et A2 : \" + bruit + \" points\");' >> comparer3.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' 'const bas = Math.min(taux(a1), taux(a2));' 'const haut = Math.max(taux(a1), taux(a2));' 'let verdict = \"pas de changement net\";' 'if (taux(b) < bas - bruit) verdict = \"pire\";' 'if (taux(b) > haut + bruit) verdict = \"meilleur\";' 'console.log(\"Verdict d’après les taux seuls : \" + verdict);' 'const pires = [];' 'const instables = [];' 'const toujours = [];' 'for (let rang = 0; rang < voulues.length; rang = rang + 1) {' '  const pareil = a1[rang] === a2[rang];' '  if (pareil === false) instables.push(rang + 1);' '  else if (a1[rang] && b[rang] === false) pires.push(rang + 1);' '  else if (a1[rang] === false && b[rang] === false) toujours.push(rang + 1);' '}' 'console.log(\"Régressions (réussies dans A1 et A2, ratées en B) : \" + pires.join(\", \"));' 'console.log(\"Instables (diffèrent entre A1 et A2) : \" + instables.join(\", \"));' 'console.log(\"Ratés à chaque passage : \" + toujours.join(\", \"));' >> comparer3.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 versions

Commande
docker exec -w /home/node/project agent node comparer3.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 réussiteA1 83, A2 75, B 75 pour cent
Bruit8 points
Verdict d’après les tauxpas de changement net
Régressionsles cas 4 et 10
Instablesles cas 5, 8 et 11
Ratés à chaque passagele cas 12

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

À vous

Astuce

Dans passages.js, changez l’urgence du cas 1 de passageB de 2 à 9, puis comparez de nouveau. Le cas 1 doit rejoindre les régressions.

Une erreur fréquente

Attention

Beaucoup comparent un passage de chaque version et se fient à l’écart. Quand les réponses varient, un seul passage peut tromper dans les deux sens. Passez la version de départ au moins deux fois, mesurez le bruit et ne jugez un changement qu’au regard de ce bruit.

À 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.