Aller au contenu
Simon Place
FR EN
Réserver un appel Meet

Module 9 sur 10, leçon 1 sur 5

Évaluer un agent

Construire un jeu d’évaluation qui dit si un changement améliore vraiment l’agent.

Sans évaluation, chaque modification de prompt est un pari, et une démo réussie ne prouve rien.

Trois niveaux à mesurer

Construire le jeu de cas

  1. Partez de vraies demandes, y compris les échecs observés.
  2. Ajoutez des cas limites, des cas hors périmètre et des tentatives d’injection.
  3. Pour chaque cas, écrivez le critère de réussite avant de lancer l’agent.
  4. Gardez une partie des cas à l’écart, pour ne pas régler l’agent sur ses propres tests.

Un LLM comme juge

Quand aucun test exact n’est possible, un modèle peut noter les sorties, soit avec une grille, soit en comparant deux réponses. Ce juge a ses biais : il tend à préférer les réponses longues, et parfois celle qui arrive en première position. Échangez l’ordre pour le vérifier, et calibrez-le sur des cas annotés à la main.

Lire les chiffres honnêtement

Un agent n’est pas déterministe : rejouez chaque cas plusieurs fois. Sur un petit jeu, un score impressionne plus qu’il n’informe. 14 réussites sur 15 donnent 93 %, mais l’intervalle de confiance à 95 % va d’environ 70 % à 99 %. Une différence de quelques points entre deux versions ne veut alors rien dire.

Observer en production

Enregistrez chaque étape : prompt, outil, résultat, durée, coût. Transformez ensuite chaque incident en cas d’évaluation. Le jeu devient la mémoire de vos erreurs, et la CI bloque leur retour.

Pas de chiffre, pas d’amélioration.

Exemple : Comparer deux versions cas par cas

Deux moyennes peuvent cacher une régression. Comparer les mêmes cas montre ce qu’un changement a réparé et ce qu’il a cassé.

function compare(before, after) {
  const fixed = [];
  const broken = [];
  for (const id of Object.keys(before)) {
    if (!before[id] && after[id]) fixed.push(id);
    if (before[id] && !after[id]) broken.push(id);
  }
  return { fixed, broken };
}

const before = { damaged: true, late: false, fraud: true };
const after = { damaged: true, late: true, fraud: false };

compare(before, after);

{ fixed: ['late'], broken: ['fraud'] }

Les deux versions réussissent deux cas sur trois : la moyenne dit que rien n’a changé. En réalité, la nouvelle version laisse maintenant passer un cas de fraude.

Essayez dans l’éditeur

function wilson(passes, n, z = 1.96) {  // TODO  return { low: 0, high: 0 };}function clearlyBetter(a, b) {  // TODO  return false;}
Donner une compétence à l’agentMettre un intervalle sur un score
Ouvrir dans l’éditeur

Mentions légales et confidentialité