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

Une revue hebdomadaire du niveau de service

Après cette leçon: Je peux vérifier une fonction contre un niveau de service sur une semaine.

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

Ce qu’est une revue de niveau de service

Un niveau de service est une cible qu’une fonction doit atteindre, par exemple « 95 pour cent des requêtes réussissent ». Une revue hebdomadaire compare ce qui s’est passé aux cibles et décide quoi faire.

Les modules sur le coût, le traçage et la fiabilité, puis sur la conception d’une fonction, donnent les coûts, les traces et une conception. Cette leçon va plus loin : une semaine mesurée, un budget d’erreurs et une étape de procédure pour chaque alarme.

À la fin de cette leçon

Remarque

Je peux vérifier une fonction contre un niveau de service sur une semaine.

Mots clés

MotCe que ça veut direExemple
Ciblele niveau qu’une fonction doit atteindre95 pour cent
Dépassementune cible qui a été manquée
Budget d’erreursles erreurs qu’une cible autorise sur une période
Procédureune liste qui dit quoi faire pour chaque alarme
Alarmeun signal qu’une cible est manquée
Gell’arrêt des changements pour un temps

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

Trois cibles pour la semaine

Ici la fonction a trois cibles. Au moins 95 pour cent des requêtes doivent réussir. Au moins 90 pour cent doivent être rapides. Le coût de la semaine doit rester sous un plafond de 1800000 unités.

Les pourcentages sont arrondis à l’inférieur. Atteindre une cible pile est correct. Seul le fait de la manquer est un dépassement.

Exemple détaillé : une semaine enregistrée

JourRequêtesErreursLentesCoût
Lun200614300000
Mar210815320000
Mer220920340000
Jeu2053040310000
Ven215718330000
Sam9025140000
Dim8014120000
Semaine1220631161860000

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

Une erreur courante

Attention

Beaucoup pensent qu’une moyenne correcte veut dire que la semaine était correcte. Un mauvais jour peut se cacher dans une bonne semaine. Vérifiez chaque jour en plus du total, et dites quel jour a mal tourné en premier.

Le budget d’erreurs

Une cible de 95 pour cent autorise 5 pour cent d’échecs. Cette marge est le budget d’erreurs. Pour 1220 requêtes, c’est 61 erreurs, en nombres entiers.

La semaine a eu 63 erreurs : le budget restant est 61 moins 63, soit -2. Le budget est dépensé, donc l’équipe gèle les changements jusqu’à son retour.

Exemple détaillé : le budget

ÉtapeCalculRésultat
Pourcentage de succès(1220 moins 63) fois 100 divisé par 122094
Erreurs permises1220 fois 5 divisé par 10061
Erreurs utiliséesLues dans la semaine63
Budget restant61 moins 63-2

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

Une étape pour chaque alarme

Une procédure est une courte liste : pour cette alarme, faites ceci. Elle s’écrit avant le mauvais jour, pour que la personne d’astreinte n’ait pas à inventer un plan.

Si un dépassement n’a pas d’étape dans la procédure, remontez-le au responsable. Ajoutez-lui ensuite une étape.

É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 jours = [' '  [200, 6, 14, 300000], [210, 8, 15, 320000], [220, 9, 20, 340000],' '  [205, 30, 40, 310000], [215, 7, 18, 330000], [90, 2, 5, 140000], [80, 1, 4, 120000],' '];' 'const cibles = { succes: 95, rapide: 90, plafond: 1800000 };' > 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 totaux() {' '  const t = { n: 0, mauvaises: 0, lentes: 0, cout: 0 };' '  for (const j of jours) { t.n += j[0]; t.mauvaises += j[1]; t.lentes += j[2]; t.cout += j[3]; }' '  return t;' '}' 'function pourcent(partie, tout) { return Math.floor((tout - partie) * 100 / tout); }' >> 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' 'async function main() {' '  const t = totaux();' '  const ok = pourcent(t.mauvaises, t.n);' '  const rapide = pourcent(t.lentes, t.n);' '  const permis = Math.floor(t.n * (100 - cibles.succes) / 100);' '  console.log(\"succès \" + ok + \" pour cent, cible \" + cibles.succes);' '  console.log(\"rapides \" + rapide + \" pour cent, cible \" + cibles.rapide);' '  console.log(\"coût \" + t.cout + \", plafond \" + cibles.plafond);' '  console.log(\"budget d’erreurs : permis \" + permis + \", utilisé \" + t.mauvaises + \", reste \" + (permis - t.mauvaises));' '  const reponse = await demander([{ role: \"user\", content: \"En une phrase courte, à quoi sert une procédure d’exploitation ?\" }], \"Elle dit à la personne d’astreinte exactement quoi faire pour chaque alarme.\", 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

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
succès 94 pour cent, cible 95Un dépassement, un point en dessous
rapides 90 pour cent, cible 90Atteint pile, donc pas de dépassement
coût 1860000, plafond 1800000Un dépassement, au-dessus du plafond
budget d’erreurs : permis 61, utilisé 63, reste -2Le budget est dépensé
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.