Choisir un correctif grâce aux évaluations
Lire des résultats d’évaluation, c’est grouper les échecs par genre, puis changer la chose la moins chère qui en corrige le plus. Cela compte, car tout changement aide certains cas et peut en nuire à d’autres.
La première version de la médiathèque a réussi 5 cas sur 10. L’équipe a quatre idées. Une seule vaut d’être livrée en premier, et les scores disent laquelle.
À la fin de cette leçon
Remarque
Je peux lire des résultats d’évaluation et décider quoi changer d’abord.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Genre d’échec | la raison pour laquelle un cas a échoué | invente |
| Candidat | un changement que vous envisagez | |
| Régression | un cas qui réussissait avant et échoue maintenant | |
| Coût pour 1000 | ce que coûtent 1000 réponses | |
| Correctif le moins cher | le changement qui coûte le moins pour son gain |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Groupez les échecs par genre
Un score de 5 sur 10 dit combien est faux, pas pourquoi. Groupez les cinq échecs par genre et le travail devient clair.
Chaque genre a sa cause et son correctif peu coûteux. Un seul correctif pour un genre entier vaut mieux que cinq correctifs pour cinq cas.
Exemple : les cinq échecs
| Genre | Cas | Cause probable |
|---|---|---|
| Inventé | c3, c7 | Le prompt n’interdit pas de deviner |
| Vague | c5 | La question a reçu une réponse générale |
| Refus | c8 | Le prompt le rend trop prudent |
| Trop long | c9 | Rien ne limite la longueur |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Essayez d’abord le correctif le moins cher
Classez les candidats par coût. Une ligne dans le prompt ne coûte rien. Un prompt plus long coûte un peu sur chaque réponse. Un modèle plus gros coûte trois fois plus sur chaque réponse.
Lancez d’abord le moins cher et notez-le. Empilez le suivant seulement si le score le demande.
Exemple : quatre candidats
| Série | Changement | Réussis | Coût pour 1000 |
|---|---|---|---|
| v1 | La première version | 5 | 40 |
| v2 | N’utiliser que les chiffres de la fiche | 7 | 42 |
| v3 | v1, puis répondre en une phrase | 4 | 42 |
| v4 | v2, puis répondre quand la fiche a le fait | 9 | 44 |
| v5 | v1 sur un modèle plus gros | 7 | 130 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Aider un cas, nuire à deux
La série v3 corrige la réponse trop longue, c9. Elle casse aussi c2 et c10, qui réussissaient : la règle d’une phrase a coupé leurs chiffres. Le total est passé de 5 à 4.
Un total peut cacher cela. Comparez les deux séries cas par cas et listez ce qui est corrigé et ce qui est cassé.
Une erreur fréquente
Attention
Beaucoup pensent qu’un changement qui corrige quelque chose est un bon changement. Regardez ce qu’il a cassé. Ne livrez un changement que s’il ne casse rien de ce qui réussissait, ou si vous acceptez chaque casse volontairement.
Écrire le lecteur de résultats, partie 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' '// Cinq séries enregistrées sur les cas c1 à c10. v2 : n’utiliser que les chiffres de la fiche.' '// v3 : v1 plus répondre en une phrase. v4 : v2 plus répondre quand la fiche contient le fait.' '// v5 : le premier prompt sur un modèle plus gros. Le coût est pour 1000 réponses.' 'const SERIES = {' ' v1: { cout: 40, genres: \"ok ok invente ok vague ok invente refus trop_long ok\" },' ' v2: { cout: 42, genres: \"ok ok ok ok vague ok ok refus trop_long ok\" },' ' v3: { cout: 42, genres: \"ok vague invente ok vague ok invente refus ok vague\" },' ' v4: { cout: 44, genres: \"ok ok ok ok ok ok ok ok trop_long ok\" },' ' v5: { cout: 130, genres: \"ok ok ok ok vague ok ok refus trop_long ok\" },' '};' 'for (const nom in SERIES) SERIES[nom].genres = SERIES[nom].genres.split(\" \");' 'fs.writeFileSync(\"series.json\", JSON.stringify(SERIES, null, 1));' > analyse.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 le lecteur de résultats, partie 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function estOk(genre) { return genre === \"ok\"; }' 'function echecs(genres) {' ' const sortie = {};' ' genres.forEach(function (g) { if (estOk(g) === false) sortie[g] = (sortie[g] || 0) + 1; });' ' return sortie;' '}' 'const base = SERIES.v1.genres;' 'let meilleur = null;' >> analyse.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 le lecteur de résultats, partie 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'for (const nom in SERIES) {' ' const genres = SERIES[nom].genres;' ' const corriges = [];' ' const casses = [];' ' genres.forEach(function (g, i) {' ' if (estOk(base[i]) === false && estOk(g)) corriges.push(\"c\" + (i + 1));' ' if (estOk(base[i]) && estOk(g) === false) casses.push(\"c\" + (i + 1));' ' });' ' const reussis = genres.filter(estOk).length;' ' console.log(nom, reussis + \" réussis\", \"coût \" + SERIES[nom].cout, \"corrigés [\" + corriges + \"]\", \"cassés [\" + casses + \"]\", JSON.stringify(echecs(genres)));' ' if (nom === \"v1\" || casses.length > 0) continue;' ' const cout = SERIES[nom].cout;' ' if (meilleur === null || reussis > meilleur.reussis || (reussis === meilleur.reussis && cout < meilleur.cout)) meilleur = { nom, reussis, cout };' '}' 'console.log(\"Choix : \" + meilleur.nom + \" (\" + meilleur.reussis + \" réussis, coût \" + meilleur.cout + \")\");' >> analyse.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.
Lire les cinq séries
docker exec -w /home/node/project agent node analyse.jsAffiché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 le Run affiche
| Ligne | Ce qu’elle dit |
|---|---|
| v2 | 7 réussis, c3 et c7 corrigés, rien cassé |
| v3 | 4 réussis, c9 corrigé, c2 et c10 cassés |
| v4 | 9 réussis, quatre cas corrigés, rien cassé |
| v5 | 7 réussis, coût 130 |
| Dernière ligne | Choix : v4 (9 réussis, coût 44) |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.