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

Enseigner avec des exemples

Après cette leçon: Je peux choisir des exemples qui montrent à un modèle ce que je veux dire.

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

Quelques exemples montrent ce que vous voulez dire

Donner quelques exemples dans un prompt, c’est le prompt « few-shot ». Le modèle copie le motif qu’il voit. Vos exemples lui apprennent donc vos étiquettes et votre style.

Des exemples peuvent aussi tromper. Un prompt avec quatre bons avis et un mauvais dit au modèle que la plupart des avis sont bons.

À la fin de cette leçon

Remarque

Je peux choisir des exemples qui montrent à un modèle ce que je veux dire.

Mots clés

MotCe que ça veut dire
Exempleune entrée associée à la réponse voulue
Étiquettela réponse donnée à un exemple
Classeune des étiquettes que le modèle peut choisir
Équilibrechaque classe montrée à peu près autant
Few-shotun prompt avec quelques exemples
Zero-shotun prompt sans aucun exemple

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

Combien d’exemples faut-il dans un prompt ?

Sans exemple, le modèle se sert de sa compréhension générale de la tâche. Un exemple fixe le format. Deux ou trois montrent l’éventail. Au-delà de cinq ou six, chaque exemple ajoute des jetons et peu d’autre chose.

Choisissez des exemples différents les uns des autres. Trois quasi-copies n’apprennent pas plus qu’un seul exemple.

Les mêmes étiquettes, équilibrées ou non

JeubonmauvaisCe que le modèle apprend
Déséquilibré41La plupart des avis sont bons, donc répondez bon
Équilibré22Les deux étiquettes sont courantes
Classe absente30Un mauvais avis n’existe pas

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

É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 compteur d’exemples, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const exemples = [' '  { texte: \"Le tram est arrivé à l’heure\", etiquette: \"bon\" },' '  { texte: \"J’ai oublié mon sac dans la rame\", etiquette: \"mauvais\" },' '  { texte: \"Conducteur très aimable\", etiquette: \"bon\" },' '  { texte: \"Trajet rapide et propre\", etiquette: \"bon\" },' '  { texte: \"Le siège était un peu mouillé\", etiquette: \"bon\" },' '];' > exemples2.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 compteur d’exemples, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function compter(liste) {' '  const total = {};' '  for (const e of liste) total[e.etiquette] = (total[e.etiquette] || 0) + 1;' '  return total;' '}' 'function construire(liste, texte) {' '  const blocs = liste.map(function (e) { return \"Texte : \" + e.texte + \"\nÉtiquette : \" + e.etiquette; });' '  blocs.push(\"Texte : \" + texte + \"\nÉtiquette :\");' '  return \"Classez chaque avis sur le tram : bon ou mauvais.\n\n\" + blocs.join(\"\n\n\");' '}' >> exemples2.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 compteur d’exemples, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const c = compter(exemples);' '  console.log(\"comptes : bon \" + c.bon + \", mauvais \" + c.mauvais);' '  for (const nom of Object.keys(c)) {' '    if (c[nom] * 2 > exemples.length) console.log(\"attention : \" + nom + \" dépasse la moitié des exemples\");' '  }' '  const prompt = construire(exemples, \"Le conducteur était désagréable\");' '  const reponse = await demander([{ role: \"user\", content: prompt }], \"mauvais\", 5);' '  console.log(\"modèle : \" + reponse.texte);' '}' 'main();' >> exemples2.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 et compter les étiquettes

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

La première ligne compte les étiquettes : bon 4, mauvais 1. La deuxième prévient que bon dépasse la moitié des exemples. Cette vérification attrape un tel jeu avant qu’il n’arrive au modèle.

La dernière ligne est une courte réponse. Sans modèle, un Échantillon enregistré s’affiche d’abord.

Une erreur courante

Attention

Beaucoup pensent que l’ordre des exemples n’a pas d’importance. Les modèles s’appuient souvent surtout sur le dernier exemple. S’il est mauvais, le nouveau texte a plus de chances d’être jugé mauvais. Mélangez les classes, pour qu’aucune ne soit toujours en dernier.

À 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.