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

Fixer les attentes pour une fonction d’IA

Après cette leçon: Je peux dire à une personne ce qu’une fonction sait faire et ne sait pas faire avant qu’elle s’y fie.

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

L’appli qui promettait trop

Une appli de révision annonce : « Posez n’importe quelle question et obtenez la bonne réponse. » Un élève lui fait confiance la veille d’un contrôle. Elle donne une date fausse, et il l’apprend par cœur.

L’appli n’est pas en panne. Elle a promis plus qu’elle ne sait faire. Cette leçon parle des mots et des écrans qui fixent ce qu’une personne attend.

À la fin de cette leçon

Remarque

Je peux dire à une personne ce qu’une fonction sait faire et ne sait pas faire avant qu’elle s’y fie.

Mots clés

MotCe que ça veut direExemple
Attentece qu’une personne pense que la fonction va faire
Promesseune phrase qui dit ce que la fonction faittoujours juste
Limiteune chose que la fonction ne sait pas faire
Périmètreles tâches pour lesquelles la fonction est faite
Cas d’échecun vrai cas où elle se trompe

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

Dire à quoi ça sert, ou non

Une personne décide en quelques secondes jusqu’où se fier à une fonction. Donnez-lui trois choses courtes : à quoi elle sert, à quoi elle ne sert pas, et un exemple où elle échoue.

L’exemple d’échec, les équipes l’oublient. C’est pourtant ce que les gens retiennent.

Un bon texte pour un outil de notes

PartieExemple de mots
Sert àTransformer vos notes en un court résumé
Ne sert pas àVérifier des faits, ou donner un avis de santé ou de droit
Échoue quandVos notes donnent deux dates pour un même événement

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

Certaines promesses ne se tiennent jamais

Une promesse impossible à tenir, c’est une promesse qu’une seule mauvaise réponse prouve fausse. Les mots toujours, jamais faux, garanti et 100 % sont les plus courants. Toute question en est une autre : personne ne peut tester toutes les questions.

Remplacez chacune par un chiffre que vous pouvez compter, comme « juste sur 9 questions de test sur 10 ». Le module 68 montre comment le mesurer.

Une erreur courante

Attention

Beaucoup pensent qu’une petite note « peut être fausse » en bas de page suffit. Personne ne la lit, donc elle ne fixe aucune attente. Dites la limite à côté de la réponse, là où la personne regarde, au moment où elle s’y fierait.

É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 contrôleur de promesses, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const INTERDITS = [\"toujours\", \"jamais faux\", \"garanti\", \"100 %\", \"toute question\"];' 'const TEXTES = [' '  { id: \"a\", texte: \"Posez toute question et obtenez une réponse garantie.\" },' '  { id: \"b\", texte: \"Rédigez une réponse d’après vos notes. Elle peut être fausse, vérifiez-la.\" },' '  { id: \"c\", texte: \"Toujours juste, 100 % du temps.\" },' '  { id: \"d\", texte: \"Résumez une page. Pas pour un avis médical.\" },' '];' > attentes.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 contrôleur de promesses, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function promesses(texte) {' '  const bas = texte.toLowerCase();' '  return INTERDITS.filter(function (p) { return bas.includes(p); });' '}' 'function adesLimite(texte) {' '  const bas = texte.toLowerCase();' '  return bas.includes(\"peut être fausse\") || bas.includes(\"pas pour\");' '}' >> attentes.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 contrôleur de promesses, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  let echecs = 0;' '  for (const t of TEXTES) {' '    const trouvees = promesses(t.texte);' '    let verdict = \"alerte\";' '    if (trouvees.length > 0) verdict = \"echec\";' '    else if (adesLimite(t.texte)) verdict = \"ok\";' '    if (verdict === \"echec\") echecs++;' '    console.log(t.id + \" \" + verdict + \" \" + JSON.stringify(trouvees));' '  }' '  console.log(\"echecs \" + echecs + \" sur \" + TEXTES.length);' '  const q = \"Écrivez une seule ligne courte qui dit ce qu’un outil de résumé de notes ne sait pas faire.\";' '  const reponse = await demander([{ role: \"user\", content: q }], \"Il ne peut pas vérifier des faits qui ne sont pas dans vos notes.\", 30);' '  console.log(\"ligne de limite : \" + reponse.texte);' '}' 'main();' >> attentes.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 contrôleur de promesses

Commande
docker exec -w /home/node/project agent node attentes.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
a echec ["garanti","toute question"]Deux promesses que personne ne tient
b ok []Aucune promesse, et le texte dit qu’il peut être faux
c echec ["toujours","100 %"]Deux autres promesses
d ok []Le texte dit à quoi il ne sert pas
echecs 2 sur 4La moitié de ces textes est à réécrire
ligne de limite : ...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.