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

Choisir la taille d’un modèle pour une tâche

Après cette leçon: Je peux choisir la taille d’un modèle pour une tâche d’après un test et un prix.

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

Le plus gros n’est pas toujours le meilleur

Choisir la taille d’un modèle, c’est trouver le plus petit modèle qui fait assez bien la tâche. Un petit modèle sur une tâche étroite peut valoir un gros pour une fraction du prix.

C’est important, car le prix de chaque appel s’additionne, et l’attente aussi. On trouve la bonne taille en testant, jamais en devinant.

À la fin de cette leçon

Remarque

Je peux choisir la taille d’un modèle pour une tâche d’après un test et un prix.

Mots clés

MotCe que ça veut dire
Tâche étroiteun travail petit et clair
Jeu de testsdes cas fixes qui servent à noter un modèle
Taux de réussitela part des cas qu’un modèle réussit
Prix par appelce que coûte chaque demande
Assez bienun taux de réussite que la tâche accepte

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

Testez chaque taille sur les mêmes cas

Écrivez un jeu de tests : une liste fixe de vrais cas pour votre tâche, comme dix tickets d’assistance à classer. Lancez chaque taille de modèle sur les mêmes cas et notez réussi ou raté pour chacun.

Le taux de réussite est la part qu’il réussit. Le module 68 en dit plus sur les jeux de tests. Cette leçon utilise des résultats enregistrés : rien ne tourne maintenant.

Résultats enregistrés sur six tickets

TailleJustes sur 6Taux de réussitePrix pour 1000 appels (€)
petit466,7 %3
moyen583,3 %10
grand6100 %45

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

Regardez les cas que rate un petit modèle

Un taux de réussite cache les cas ratés. Le petit modèle ci-dessus rate les tickets 4 et 6. Lisez-les. S’ils sont rares dans la vraie vie, le petit peut suffire.

Calculez ensuite le prix par bonne réponse : le prix divisé par la part de réussis. Un modèle bon marché souvent faux peut coûter plus par bonne réponse qu’un modèle plus cher.

Une erreur courante

Attention

Beaucoup pensent que le plus gros modèle est le choix sûr. C’est le plus cher, et il est plus lent. Si une taille plus petite réussit votre propre jeu de tests, elle suffit. Prenez la taille la moins chère qui réussit, et retestez quand la tâche change.

É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 sélecteur de taille, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const enregistre = {' '  petit: { cout: 3, reussis: [1, 1, 1, 0, 1, 0] },' '  moyen: { cout: 10, reussis: [1, 1, 1, 1, 1, 0] },' '  grand: { cout: 45, reussis: [1, 1, 1, 1, 1, 1] },' '};' 'function gagnes(m) {' '  return m.reussis.reduce(function (a, b) { return a + b; }, 0);' '}' 'function taux(m) {' '  return gagnes(m) * 100 / m.reussis.length;' '}' > choisir.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 sélecteur de taille, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function parBonne(m) {' '  return m.cout * m.reussis.length / gagnes(m);' '}' 'function choisir(besoin) {' '  let meilleur = \"aucun\";' '  let meilleurCout = Infinity;' '  for (const nom of Object.keys(enregistre)) {' '    const m = enregistre[nom];' '    if (taux(m) >= besoin && m.cout < meilleurCout) { meilleur = nom; meilleurCout = m.cout; }' '  }' '  return meilleur;' '}' >> choisir.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 sélecteur de taille, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"Résultats enregistrés sur 6 tickets (pas lancés maintenant) :\");' '  for (const nom of Object.keys(enregistre)) {' '    const m = enregistre[nom];' '    console.log(nom + \" : \" + taux(m).toFixed(1) + \" % juste, prix \" + m.cout + \", prix par bonne réponse \" + parBonne(m).toFixed(2));' '  }' '  console.log(\"besoin 60 % : \" + choisir(60) + \" | besoin 80 % : \" + choisir(80) + \" | besoin 100 % : \" + choisir(100));' '  const q = \"En une phrase courte, pourquoi tester un petit modèle sur ses propres cas avant de le choisir ?\";' '  const echantillon = \"Un petit modèle peut bien faire une tâche étroite, et seuls vos propres cas montrent où il échoue.\";' '  const reponse = await demander([{ role: \"user\", content: q }], echantillon, 60);' '  console.log(\"le modèle dit : \" + reponse.texte);' '}' 'main();' >> choisir.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 sélecteur de taille

Commande
docker exec -w /home/node/project agent node choisir.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
petit : 66.7 % juste, prix 3, prix par bonne réponse 4.50Bon marché, et moins avantageux qu’il n’y paraît
grand : 100.0 % juste, prix 45, ... 45.00Toujours juste, le plus cher
besoin 60 % : petit | besoin 80 % : moyen | besoin 100 % : grandLe besoin décide de la taille
le modèle dit : ...Une phrase. Les mots changent à chaque Run

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.