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

Revoir un plan de changement avant livraison

Après cette leçon: Je peux revoir un plan de changement avant sa mise en ligne.

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

Comment revoir un plan de changement

Un plan de changement est un court document qui dit ce qui va changer, pourquoi c’est sûr et comment l’annuler. Une revue de changement contrôle le plan avant toute mise en ligne.

Revoir une fonction entière est un autre travail. Cette leçon revoit un seul changement, avec une liste de contrôle qui donne une réponse claire : autoriser, à compléter ou arrêter.

À la fin de cette leçon

Remarque

Je peux revoir un plan de changement avant sa mise en ligne.

Mots clés

MotCe que ça veut dire
Plan de changementun court document qui dit ce qui change et comment l’annuler
Preuvesdes résultats qui montrent que le changement n’est pas pire
Déploiementla façon dont le changement atteint les utilisateurs, par étapes
Retour arrièreles étapes qui annulent le changement
Approbateurla personne qui dit oui

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

Un plan a besoin de cinq parties

Les cinq parties sont le changement, les preuves, le déploiement, le retour arrière et l’approbateur. Un plan auquel il manque une partie n’est pas prêt, et le relecteur dit laquelle.

Cherchez d’abord les parties absentes. Inutile de contrôler les nombres d’une partie qui n’existe pas. Un plan sans retour arrière est arrêté tout de suite ; un plan auquel manque une autre partie est à compléter.

Chaque partie a une limite écrite

Écrivez les limites avant de lire un plan. Les preuves demandent au moins 100 cas et aucune baisse du taux de réussite. Le déploiement commence à 10 pour cent ou moins, avec un minimum de 50 requêtes.

Le retour arrière est testé et dure 15 minutes ou moins. L’approbateur n’est pas l’auteur.

Exemple détaillé : deux plans face aux limites

RègleConsigne v7Changement de modèle
Au moins 100 cas240, passe60, échoue
Aucune baisse du taux de réussite71 à 74, passe80 à 76, échoue
Départ à 10 pour cent ou moins5, passe50, échoue
Minimum de 50 requêtes50, passe0, échoue
Retour arrière testé, 15 minutes ou moinsOui, 10Non, 30. Échoue deux fois
L’approbateur n’est pas l’auteurHugo, passeLéa l’a écrit, échoue
DécisionAutoriserArrêter

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

Une erreur courante

Attention

Beaucoup pensent qu’un plan aux bons nombres est prêt. Les nombres ne montrent pas que le retour arrière marche. Un retour arrière jamais essayé peut échouer au moment où l’on en a besoin. La revue demande donc s’il a été testé et combien de temps il a pris.

É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 script de revue, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const plans = {' '  \"consigne v7\": { changement: \"nouvelle consigne de remboursement\", preuves: { cas: 240, avant: 71, apres: 74 },' '    deploiement: { depart: 5, minimum: 50 }, retour_arriere: { minutes: 10, teste: true }, approbateur: \"Hugo\", auteur: \"Léa\" },' '  \"changement de modèle\": { changement: \"nouveau modèle\", preuves: { cas: 60, avant: 80, apres: 76 },' '    deploiement: { depart: 50, minimum: 0 }, retour_arriere: { minutes: 30, teste: false }, approbateur: \"Léa\", auteur: \"Léa\" },' '  \"ton plus amical\": { changement: \"ton plus amical\", preuves: { cas: 150, avant: 70, apres: 70 },' '    deploiement: { depart: 10, minimum: 50 }, approbateur: \"Hugo\", auteur: \"Léa\" },' '};' > revue.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 script de revue, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function problemes(p) {' '  const sortie = [\"changement\", \"preuves\", \"deploiement\", \"retour_arriere\", \"approbateur\"].filter(function (k) { return p[k] === undefined; })' '    .map(function (k) { return \"absent : \" + k; });' '  if (p.preuves && p.preuves.cas < 100) sortie.push(\"preuves trop petites\");' '  if (p.preuves && p.preuves.apres < p.preuves.avant) sortie.push(\"preuves montrent une régression\");' >> revue.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 script de revue, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  if (p.deploiement && p.deploiement.depart > 10) sortie.push(\"déploiement trop grand au départ\");' '  if (p.deploiement && p.deploiement.minimum < 50) sortie.push(\"déploiement sans minimum\");' '  if (p.retour_arriere && p.retour_arriere.teste === false) sortie.push(\"retour_arriere non testé\");' '  if (p.retour_arriere && p.retour_arriere.minutes > 15) sortie.push(\"retour_arriere trop lent\");' '  if (p.approbateur === p.auteur) sortie.push(\"approbateur est l’auteur\");' '  return sortie;' '}' >> revue.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 script de revue, partie 4

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const ARRET = [\"preuves montrent une régression\", \"absent : retour_arriere\", \"retour_arriere non testé\", \"retour_arriere trop lent\", \"approbateur est l’auteur\"];' 'function decider(p) {' '  const trouves = problemes(p);' '  if (trouves.length === 0) return \"autoriser\";' '  return trouves.some(function (t) { return ARRET.indexOf(t) >= 0; }) ? \"arrêter\" : \"à compléter\";' '}' >> revue.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 script de revue, partie 5

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  Object.keys(plans).forEach(function (nom) {' '    console.log(nom + \" : \" + decider(plans[nom]) + \" \" + JSON.stringify(problemes(plans[nom])));' '  });' '  const q = \"En une phrase courte, pourquoi la personne qui approuve un changement ne doit-elle pas en être l’auteur ?\";' '  const echantillon = \"Un second regard repère ce que l’auteur ne voit pas dans son propre travail.\";' '  const reponse = await demander([{ role: \"user\", content: q }], echantillon, 60);' '  console.log(\"le modèle dit : \" + reponse.texte);' '}' 'main();' >> revue.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 la revue de changement

Commande
docker exec -w /home/node/project agent node revue.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
consigne v7 : autoriser []Aucun problème
changement de modèle : arrêter [...]Sept problèmes, dont des règles de sûreté
ton plus amical : arrêter ["absent : retour_arriere"]Aucun retour arrière
le modèle dit : ...Une phrase du labo. Un échantillon enregistré si aucun modèle ne répond

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.