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

Budgets, règles d’arrêt et quoi ne pas déléguer

Après cette leçon: Je peux fixer un budget et une règle d’arrêt à un agent de code et juger si une tâche mérite de lui être confiée.

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

Limites et coût des agents de code

Un agent de code travaille par étapes, et chaque étape coûte du temps et de l’argent. Sans budget ni règle d’arrêt, un agent peut tourner en rond une heure sur une tâche que vous feriez en dix minutes.

Chaque changement qu’il fait demande encore votre relecture. Décider au jugé quoi déléguer ne suffit pas ; cette leçon ajoute les chiffres.

À la fin de cette leçon

Remarque

Je peux fixer un budget et une règle d’arrêt à un agent de code et juger si une tâche mérite de lui être confiée.

Mots clés

MotCe que ça veut direExemple
Étapeune action d’un agent : lire, modifier ou lancer
Budgetle maximum d’étapes ou d’argent qu’une exécution peut utiliser
Règle d’arrêtun contrôle qui termine une exécution plus tôt
Patienceles étapes permises sans progrès3
Minutes nettesles minutes gagnées après la rédaction et la relecture

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

Un budget et une règle d’arrêt

Donnez un budget à chaque exécution : au plus 10 étapes et au plus 40 centimes. Donnez-lui aussi une patience : si le nombre de tests réussis n’a pas monté depuis 3 étapes, on arrête.

Contrôlez après chaque étape, dans un ordre fixe : fini, budget dépassé, aucun progrès, étapes épuisées. Le premier contrôle vrai termine l’exécution.

Exemple guidé : l’exécution bloquée, étape par étape

ÉtapeCoûtDépenséRéussis sur 6Étapes depuis une hausse
14420
25930
361531
452032
562633, donc arrêt : aucun progrès

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

Le temps gagné face au temps passé

Un agent ne vous fait pas gagner toutes les minutes d’une tâche faite à la main. Vous passez encore des minutes à écrire la tâche et à relire le changement. Les minutes nettes, ce sont les minutes à la main moins les deux.

Gardez une tâche quand le net vaut 0 ou moins. Gardez-la aussi quand le risque est élevé, comme un contrôle de paiement ou une suppression de données, quoi que disent les minutes.

Exemple guidé : quatre tâches

TâcheÀ la mainRédaction plus relectureNetDécision
Renommer une fonction dans 12 fichiers401525Déléguer
Ajouter une page de doc301515Déléguer
Corriger une coquille d’une ligne25-3Garder
Modifier le contrôle de paiement604020Garder : risque élevé

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

Une erreur fréquente

Attention

Beaucoup pensent que le temps d’un agent est gratuit parce qu’il travaille pendant qu’on fait autre chose. Votre propre temps part dans la tâche, la relecture et les corrections. Comptez ces minutes avant de déléguer, et gardez le travail à risque élevé quoi que dise le compte.

É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 budget, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const LIMITE = { etapes: 10, centimes: 40, patience: 3 };' 'const executions = {' '  \"régulier\": { total: 6, cout: [3, 4, 3, 5, 4, 3], reussis: [1, 2, 3, 4, 5, 6] },' '  \"bloqué\": { total: 6, cout: [4, 5, 6, 5, 6, 7, 6, 5], reussis: [2, 3, 3, 3, 3, 3, 3, 3] },' '  \"coûteux\": { total: 8, cout: [9, 12, 10, 11, 9], reussis: [1, 2, 3, 4, 5] },' '};' > budget.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 budget, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function arret(r) {' '  let depense = 0;' '  let meilleur = 0;' '  let monte = 0;' '  for (let i = 0; i < r.cout.length; i += 1) {' '    const etape = i + 1;' '    depense += r.cout[i];' '    const fin = \"étape \" + etape + \", \" + depense + \" centimes\";' '    if (r.reussis[i] > meilleur) { meilleur = r.reussis[i]; monte = etape; }' '    if (meilleur === r.total) return \"fini à l’\" + fin;' '    if (depense > LIMITE.centimes) return \"budget dépassé à l’\" + fin;' '    if (etape - monte >= LIMITE.patience) return \"aucun progrès à l’\" + fin;' '    if (etape >= LIMITE.etapes) return \"étapes épuisées à l’\" + fin;' '  }' '  return \"fin de l’enregistrement, \" + depense + \" centimes\";' '}' >> budget.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 budget, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const taches = [' '  { nom: \"renommer une fonction dans 12 fichiers\", main: 40, redaction: 5, relecture: 10, risque: \"faible\" },' '  { nom: \"ajouter une page de doc\", main: 30, redaction: 5, relecture: 10, risque: \"faible\" },' '  { nom: \"corriger une coquille d’une ligne\", main: 2, redaction: 3, relecture: 2, risque: \"faible\" },' '  { nom: \"modifier le contrôle de paiement\", main: 60, redaction: 10, relecture: 30, risque: \"élevé\" },' '];' 'function decider(t) {' '  if (t.risque === \"élevé\") return \"garder : risque élevé\";' '  const net = t.main - t.redaction - t.relecture;' '  return net > 0 ? \"déléguer, gagne \" + net + \" minutes\" : \"garder : ne gagne rien\";' '}' >> budget.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 budget, partie 4

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  Object.keys(executions).forEach(function (nom) { console.log(nom + \" : \" + arret(executions[nom])); });' '  taches.forEach(function (t) { console.log(t.nom + \" : \" + decider(t)); });' '  const q = \"En une phrase courte, pourquoi un agent de code doit-il s’arrêter quand il ne progresse plus ?\";' '  const echantillon = \"Une exécution qui n’avance plus ne fait que dépenser de l’argent et vous donner plus à relire.\";' '  const reponse = await demander([{ role: \"user\", content: q }], echantillon, 60);' '  console.log(\"le modèle dit : \" + reponse.texte);' '}' 'main();' >> budget.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 script de budget

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

LigneCe qu’elle montre
régulier : fini à l’étape 6, 22 centimesTous les tests passent dans le budget
bloqué : aucun progrès à l’étape 5, 26 centimesTrois étapes sans hausse
coûteux : budget dépassé à l’étape 4, 42 centimesIl a passé les 40 centimes
renommer une fonction dans 12 fichiers : déléguer, gagne 25 minutesVaut la peine d’être confié à un agent
corriger une coquille d’une ligne : garder : ne gagne rienPlus rapide à la main
modifier le contrôle de paiement : garder : risque élevéGardé quoi que disent les minutes
le modèle dit : ...Une phrase du labo. Une ligne É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.