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

Montrer l’incertitude d’une réponse d’IA

Après cette leçon: Je peux montrer à quel point une réponse est sûre sans fausse précision.

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

Sûr de soi, ou juste bruyant ?

Une fonction météo dit : « 73,4 % de chances de pluie ». Une autre dit : « il va probablement pleuvoir ». Laquelle est la plus honnête si la prévision n’est juste qu’à dix points près ?

La première a l’air exacte, mais elle ne l’est pas. Montrer à quel point une réponse est sûre, c’est choisir des mots et des nombres qui disent ce qu’on sait vraiment.

À la fin de cette leçon

Remarque

Je peux montrer à quel point une réponse est sûre sans fausse précision.

Mots clés

MotCe que ça veut direExemple
Scoreun nombre qui dit à quel point une réponse est sûre64
Étiquetteun mot choisi d’après un scoremoyenne
Seuille score où l’étiquette change
Fausse précisionun nombre avec plus de chiffres qu’on n’en connaît
Sourcele texte d’où vient une réponse

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

Un mot vaut mieux que 64

Un score comme 64 ne dit pas grand-chose à la plupart des gens. Un mot comme « moyenne » leur dit quoi faire : vérifier.

Choisissez les seuils une fois, écrivez-les et servez-vous-en partout. Ainsi « haute » veut dire la même chose sur chaque écran.

Pas de chiffres que vous n’avez pas

Un score de 64 tiré d’un contrôle approximatif n’est pas vraiment 64, ni 63. Montrez « environ 60 », ou seulement l’étiquette.

Montrez aussi d’où vient une réponse. Une source permet de vérifier. Quand le score est très bas, la conception honnête refuse et dit pourquoi.

Une erreur courante

Attention

Beaucoup pensent que la confiance affichée par le modèle est une vraie probabilité. Pas toujours. Prenez un score comme un guide approximatif. Comparez les étiquettes à des cas connus. Gardez des seuils stables : un score plus haut ne donne jamais une étiquette plus basse.

Écrire l’assistant du modèle, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const base = process.env.AI_URL || \"http://ai:4000\";' '// Les jetons d’une réponse, ou null si elle n’en donne pas.' 'function compter(donnees, nom) {' '  return donnees.usage && typeof donnees.usage[nom] === \"number\" ? donnees.usage[nom] : null;' '}' > model.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 l’assistant du modèle, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function demander(messages, echantillon, max) {' '  try {' '    const res = await fetch(base + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: messages, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"statut \" + res.status);' '    const d = await res.json();' '    return { texte: d.choices[0].message.content, entree: compter(d, \"prompt_tokens\"), sortie: compter(d, \"completion_tokens\"), enregistre: false };' '  } catch (erreur) {' '    console.log(\"Échantillon enregistré : aucun modèle n’a répondu (\" + erreur.message + \").\");' '    return { texte: echantillon, entree: null, sortie: null, enregistre: true };' '  }' '}' 'module.exports = { demander };' >> model.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 fabricant d’étiquettes, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const SEUILS = [[80, \"haute\"], [50, \"moyenne\"]];' 'const REPONSES = [' '  { id: \"q1\", score: 93 },' '  { id: \"q2\", score: 80 },' '  { id: \"q3\", score: 67 },' '  { id: \"q4\", score: 49 },' '  { id: \"q5\", score: 15 },' '];' > incertitude.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 fabricant d’étiquettes, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function etiquette(score) {' '  for (const s of SEUILS) {' '    if (score >= s[0]) return s[1];' '  }' '  return \"basse\";' '}' 'function flou(score) {' '  return Math.floor((score + 5) / 10) * 10;' '}' >> incertitude.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 fabricant d’étiquettes, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const comptes = { haute: 0, moyenne: 0, basse: 0 };' '  for (const r of REPONSES) {' '    comptes[etiquette(r.score)]++;' '    console.log(r.id + \" score \" + r.score + \" montré environ \" + flou(r.score) + \" étiquette \" + etiquette(r.score));' '  }' '  console.log(\"comptes \" + JSON.stringify(comptes));' '  const q = \"Écrivez une seule ligne courte qui dit à un élève que vous n’êtes pas sûr et qu’il doit vérifier la source.\";' '  const reponse = await demander([{ role: \"user\", content: q }], \"Je ne suis pas sûr de cette réponse. Vérifiez la source.\", 30);' '  console.log(\"ligne de refus : \" + reponse.texte);' '}' 'main();' >> incertitude.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.

Lancer le fabricant d’étiquettes

Commande
docker exec -w /home/node/project agent node incertitude.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 le Run affiche

LigneCe qu’elle montre
q1 score 93 montré environ 90 étiquette hauteHaute, et le nombre est flouté
q2 score 80 montré environ 80 étiquette haute80 est sur le seuil, donc haute
q4 score 49 montré environ 50 étiquette basseLe flou dit 50 mais l’étiquette dit basse
comptes {"haute":2,"moyenne":1,"basse":2}Deux à chaque bout et un au milieu
ligne de refus : ...Une phrase. Les mots changent à chaque Run

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

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