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

Contrôle humain des décisions de l’IA

Après cette leçon: Je peux concevoir un contrôle par une personne qui soit réel et non une habitude.

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

Une personne qui clique sur Approuver sans lire

Le contrôle humain, c’est une personne qui vérifie ce qu’une fonction IA va faire, et qui peut l’arrêter. Il compte, car un contrôle que personne ne lit est pire que rien : il donne à tous un faux sentiment de sécurité.

Cette leçon rend le contrôle réel. Elle montre quelles actions demandent une personne et ce que cette personne doit voir. Elle montre aussi comment repérer une approbation devenue une habitude.

À la fin de cette leçon

Remarque

Je peux concevoir un contrôle par une personne qui soit réel et non une habitude.

Mots clés

MotCe que ça veut dire
Contrôle humainune personne qui peut vérifier et arrêter une action
Approbationune personne qui dit oui à une action
Validation aveugleune approbation donnée sans lire
Escaladepasser un cas à une personne plus haut placée
Seuilla taille au-delà de laquelle une personne décide

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

Choisir ce qui demande une personne

Une personne ne peut pas lire chaque action : il faut choisir. Demandez à une personne quand l’action coûte plus qu’un seuil, ou ne peut pas être annulée. Laissez passer le reste et notez-le dans un journal.

Une personne sollicitée pour tout cesse de lire. Peu de questions, bien choisies, obtiennent une vraie attention.

Exemple détaillé : quatre actions, seuil de 100 euros

ActionArgentAnnulableQui décide
Mail de remerciement0ouiOn continue
Rembourser la commande 11440ouiOn continue
Rembourser la commande 207450ouiUne personne : au-dessus du seuil
Supprimer un dossier client0nonUne personne : irréversible

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

Un vrai contrôle montre l’essentiel

Montrez à la personne ce qui va se passer, la somme en jeu et ce qui n’est pas connu. Ne montrez pas seulement la réponse du modèle. Offrez un moyen de refuser et un moyen de passer le cas plus haut.

Puis mesurez. Une approbation donnée en une seconde n’a pas été lue. Si la plupart sont rapides et presque toutes disent oui, le contrôle est devenu une habitude.

Une erreur courante

Attention

Beaucoup pensent qu’une personne dans la boucle suffit. Une personne qui approuve 200 éléments à l’heure ne les contrôle pas. Mesurez le temps de chaque approbation et le nombre de refus, et voyez dans un oui très rapide et très fréquent une faille.

É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ôle humain, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' '' 'const SEUIL = 100; // euros : au-delà, une personne décide' 'const SECONDES_MIN = 5; // une approbation plus rapide n’a pas été lue' 'const actions = [' '  { id: \"a1\", quoi: \"Envoyer un mail de remerciement\", argent: 0, annulable: true },' '  { id: \"a2\", quoi: \"Rembourser la commande 114\", argent: 40, annulable: true },' '  { id: \"a3\", quoi: \"Rembourser la commande 207\", argent: 450, annulable: true },' '  { id: \"a4\", quoi: \"Supprimer un dossier client\", argent: 0, annulable: false },' '];' 'function besoinHumain(a) {' '  return a.argent > SEUIL || a.annulable === false;' '}' > controle.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ôle humain, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Approbations enregistrées : le nombre de secondes prises par chaque personne.' 'const vues = [' '  { id: \"r1\", secondes: 31 },' '  { id: \"r2\", secondes: 1 },' '  { id: \"r3\", secondes: 45 },' '  { id: \"r4\", secondes: 2 },' '];' >> controle.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ôle humain, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  actions.forEach(function (a) {' '    console.log(a.id + \" : \" + (besoinHumain(a) ? \"demander à une personne\" : \"on continue\"));' '  });' '  vues.forEach(function (r) {' '    console.log(r.id + \" : \" + r.secondes + \" s \" + (r.secondes < SECONDES_MIN ? \"NON LUE\" : \"lue\"));' '  });' '  const q = \"Écrivez deux courtes lignes pour une responsable qui doit approuver : Rembourser la commande 207, 450 euros. Dites quoi, combien, et ce qui n’est pas connu.\";' '  const r = await demander([{ role: \"user\", content: q }], \"Remboursement de 450 euros sur la commande 207. Le motif donné n’est pas vérifié et l’historique du client n’est pas montré.\", 80);' '  console.log(\"Un résumé possible : \" + r.texte);' '}' 'main();' >> controle.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ôle humain

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

Une sortie possible

LigneCe qu’elle montre
a1 et a2 : on continuePetites et annulables
a3 et a4 : demander à une personneAu-dessus du seuil, et irréversible
r2 : 1 s NON LUE et r4 : 2 s NON LUEDes approbations trop rapides pour être réelles
Un résumé possible : ...Votre propre appel. Il change à chaque exécution, ou affiche Échantillon enregistré

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.