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

Tenir un journal de décisions d’IA

Après cette leçon: Je peux consigner les décisions derrière une fonction pour que d’autres puissent les suivre.

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

Un journal de décisions pour une fonction d’IA

Un journal de décisions est une courte liste des choix derrière une fonction, chacun avec ses options, son choix et sa preuve. Il compte, car dans six mois personne ne se souviendra pourquoi l’équipe a gardé le petit modèle.

L’équipe de la médiathèque a pris cinq décisions en quatre semaines. Un script vérifie maintenant que chacune pointe vers une trace écrite qui existe.

À la fin de cette leçon

Remarque

Je peux consigner les décisions derrière une fonction pour que d’autres puissent les suivre.

Mots clés

MotCe que ça veut direExemple
Journal de décisionsune liste datée de choix et de leurs raisons
Optionl’une des voies que vous auriez pu prendre
Choixl’option que vous avez prise
Preuveune trace écrite qui montre pourquoi vous avez choisiserie:v4
Réexaminerrevoir une décision quand les preuves changent

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

Options, choix et preuve d’une décision

Une entrée dit ce qui a été décidé, quelles options étaient ouvertes, laquelle a été prise et ce qui montrait qu’elle était bonne. Elle a une date et un identifiant.

Les options comptent le plus. Une décision à une seule option n’était pas une décision. Le lecteur doit voir ce que vous avez écarté.

Exemple : la décision D4

ChampValeur
DécisionPlafonner les tentatives à 2
OptionsPlafond de 2, ou garder 5
ChoixPlafond de 2
Preuveevenement:cause_trouvee et heure:11

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

Une preuve est un renvoi qu’un script vérifie

Écrivez la preuve sous forme d’identifiant : serie:v4 pour une série, heure:11 pour une heure, evenement:cause_trouvee pour un événement. Un script peut alors vérifier que chacune existe.

Il peut aussi repérer une entrée sans preuve, un choix qui n’est pas parmi les options et un identifiant utilisé deux fois.

Ajoutez une entrée, ne réécrivez jamais

Les décisions changent quand les preuves changent. Ne modifiez pas l’ancienne entrée. Ajoutez-en une nouvelle qui dit ce qu’elle remplace.

Le journal montre alors ce que vous pensiez et quand, ce dont un lecteur a besoin.

Une erreur fréquente

Attention

Beaucoup pensent qu’un journal de décisions est de la paperasse à écrire après coup. Écrit après coup, il devient une histoire qui colle au résultat. Écrivez chaque entrée le jour même, avec les preuves de ce jour.

Écrire le journal de décisions, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const DECISIONS = [' '  { id: \"D1\", date: \"2026-03-02\", decision: \"Mettre la fiche des faits dans le prompt\", options: [\"dans le prompt\", \"chercher d’abord\"], choix: \"dans le prompt\", preuves: [\"serie:v1\"] },' '  { id: \"D2\", date: \"2026-03-09\", decision: \"Interdire les chiffres absents de la fiche\", options: [\"ajouter une règle\", \"ne rien faire\"], choix: \"ajouter la règle\", preuves: [\"serie:v2\"] },' '  { id: \"D3\", date: \"2026-03-16\", decision: \"Garder le petit modèle\", options: [\"petit modèle\", \"modèle plus gros\"], choix: \"petit modèle\", preuves: [\"serie:v5\", \"cout:v5\"] },' > decisions.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 journal de décisions, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  { id: \"D4\", date: \"2026-03-24\", decision: \"Plafonner les tentatives à 2\", options: [\"plafond de 2\", \"garder 5\"], choix: \"plafond de 2\", preuves: [\"evenement:cause_trouvee\", \"heure:11\"] },' '  { id: \"D5\", date: \"2026-03-25\", decision: \"Accepter les réponses longues sur l’impression\", options: [\"accepter\", \"raccourcir\"], choix: \"accepter\", preuves: [] },' '];' 'fs.writeFileSync(\"decisions.json\", JSON.stringify(DECISIONS, null, 1));' >> decisions.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.

Créer decisions.json

Commande
docker exec -w /home/node/project agent node decisions.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 vérificateur du journal, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'function connues() {' '  const ids = [];' '  [\"v1\", \"v2\", \"v3\", \"v4\", \"v5\"].forEach(function (v) { ids.push(\"serie:\" + v); });' '  [\"08\", \"09\", \"10\", \"11\", \"12\", \"13\", \"14\"].forEach(function (h) { ids.push(\"heure:\" + h); });' '  [\"fiche_publiee\", \"alerte_declenchee\", \"cause_trouvee\", \"tentatives_plafonnees\", \"cout_normal\"].forEach(function (c) { ids.push(\"evenement:\" + c); });' '  return ids;' '}' > verifier-journal.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 vérificateur du journal, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function lancer() {' '  const entrees = JSON.parse(fs.readFileSync(\"decisions.json\", \"utf8\"));' '  const ids = connues();' '  const vus = [];' '  let mauvaises = 0;' '  for (const e of entrees) {' '    const problemes = [];' '    if (e.preuves.length === 0) problemes.push(\"sans_preuve\");' '    else if (e.preuves.some(function (id) { return ids.includes(id) === false; })) problemes.push(\"preuve_inconnue\");' '    if (e.options.includes(e.choix) === false) problemes.push(\"mauvais_choix\");' '    if (vus.includes(e.id)) problemes.push(\"id_double\");' '    vus.push(e.id);' '    if (problemes.length > 0) { mauvaises = mauvaises + 1; console.log(e.id, problemes.join(\" \")); }' '  }' '  console.log(entrees.length + \" décisions, \" + mauvaises + \" avec des problèmes\");' '}' 'module.exports = { lancer };' 'if (require.main === module) lancer();' >> verifier-journal.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.

Vérifier le journal

Commande
docker exec -w /home/node/project agent node verifier-journal.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 vérificateur affiche

LigneCe qu’elle dit
D2mauvais_choix
D3preuve_inconnue
D5sans_preuve
Dernière ligne5 décisions, 3 avec des problèmes

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

Écrire la correction

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' 'const entrees = JSON.parse(fs.readFileSync(\"decisions.json\", \"utf8\"));' 'entrees[1].choix = \"ajouter une règle\";   // le choix est l’une des options' 'entrees[2].preuves = [\"serie:v5\"];        // cout:v5 n’est pas une trace écrite' 'entrees[4].preuves = [\"serie:v4\"];        // v4 garde la réponse longue, c9' 'fs.writeFileSync(\"decisions.json\", JSON.stringify(entrees, null, 1));' 'require(\"./verifier-journal\").lancer();' > corriger-journal.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.

Corriger le journal et revérifier

Commande
docker exec -w /home/node/project agent node corriger-journal.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.

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