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

Prompt, RAG ou ajustement fin

Après cette leçon: Je peux choisir entre un meilleur prompt, la recherche et l’ajustement fin pour un besoin.

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

Prompt, recherche ou ajustement fin : comment choisir

Trois moyens changent le comportement d’une fonction adossée à un modèle : un meilleur prompt, la recherche documentaire et l’ajustement fin (fine-tuning). La recherche documentaire s’appelle aussi RAG, pour « génération augmentée par la recherche ». Ils corrigent des problèmes différents et coûtent très inégalement. C’est important, car les équipes choisissent souvent d’abord le plus cher.

Une équipe d’assistance veut des réponses dans le ton de la maison, d’après le tarif de cette semaine, dans un format fixe. Ce sont trois besoins, qui n’ont peut-être pas la même solution.

À la fin de cette leçon

Remarque

Je peux choisir entre un meilleur prompt, la recherche et l’ajustement fin pour un besoin.

Mots-clés

MotCe que ça veut dire
Promptles consignes et exemples envoyés avec un appel
Recherchealler chercher des documents et les envoyer avec l’appel
Ajustement finentraîner encore un modèle sur vos exemples
Exemple d’entraînementune entrée associée à la sortie voulue
Connaissanceles faits dont dépend la réponse

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

L’ajustement fin n’est pas lancé ici

Attention

Le labo ne peut pas ajuster finement un modèle. Cette leçon est un exercice de décision. Elle donne les questions à poser et une règle d’enseignement. Elle n’affirme pas ce qu’un ajustement fin vous apporterait : mesurez-le sur vos propres cas.

Demandez quelle sorte de problème c’est

Posez quatre questions dans l’ordre. La réponse dépend-elle de faits privés ou changeants ? Le modèle échoue-t-il sur la forme, comme le ton ou le format ? Avez-vous essayé un prompt clair avec des exemples ? Avez-vous assez d’exemples et un moyen de mesurer ?

Les faits mènent à la recherche. La forme mène d’abord au prompt, et à l’ajustement fin seulement quand le prompt échoue et que les exemples existent.

Exemple travaillé : cinq besoins

BesoinPremière questionPremier pas probable
Un ton aimableUn prompt avec exemples échoue-t-il ?Prompt, puis ajustement fin s’il échoue et que les exemples existent
Des prix qui changent chaque semaineLes faits changent-ils ?Recherche : des faits ajustés vieillissent
Un format de sortie strictDes exemples peuvent-ils le montrer ?Prompt, avec un contrôle qui analyse la sortie
Des réponses tirées de notices privéesLes faits sont-ils privés ?Recherche, avec les sources affichées
Un coût par appel plus basQuelle est la taille du prompt ?Mesurer d’abord : un prompt plus court ou un modèle plus petit

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

Coût et limites de chaque choix

Un prompt se change à bas prix et s’annule facilement, mais il consomme des jetons à chaque appel. La recherche ajoute un stockage et une recherche, et échoue quand la recherche rate. L’ajustement fin demande des exemples, un entraînement et un nouveau modèle à entretenir, et il ne garde pas les faits à jour.

Aucun ne corrige une exigence manquante ni une mauvaise évaluation. Écrivez d’abord les cas qui décident du succès.

Une erreur fréquente

Attention

Beaucoup pensent que l’ajustement fin apprend de nouveaux faits à un modèle. Il façonne surtout le style et le format. Les faits qui changent relèvent de la recherche, où l’on met un document à jour et où la réponse change le jour même.

Écrire l’aide 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\";' '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 || 200 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"statut \" + res.status);' '    return (await res.json()).choices[0].message.content;' > 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’aide du modèle, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  } catch (erreur) {' '    console.log(\"Échantillon enregistré : aucun modèle n’a répondu (\" + erreur.message + \").\");' '    const liste = [].concat(echantillon);' '    const tour = messages.filter(function (m) { return m.role === \"assistant\"; }).length;' '    return liste[Math.min(tour, liste.length - 1)];' '  }' '}' '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 la règle de décision, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const cas = [' '  { besoin: \"un ton aimable\", docsPrives: false, faitsChangent: false, promptEchoue: true, exemples: 800 },' '  { besoin: \"des prix qui changent chaque semaine\", docsPrives: false, faitsChangent: true, promptEchoue: false, exemples: 0 },' '  { besoin: \"un format de sortie strict\", docsPrives: false, faitsChangent: false, promptEchoue: false, exemples: 40 },' '  { besoin: \"des réponses tirées de nos notices\", docsPrives: true, faitsChangent: false, promptEchoue: true, exemples: 60 },' '  { besoin: \"un coût par appel plus bas\", docsPrives: false, faitsChangent: false, promptEchoue: false, exemples: 0 },' '];' > decide.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 la règle de décision, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function choisir(c) {' '  const recherche = c.docsPrives || c.faitsChangent;' '  const ajuster = c.promptEchoue && c.exemples >= 500;' '  if (recherche && ajuster) return \"recherche et ajustement\";' '  if (recherche) return \"recherche\";' '  if (ajuster) return \"ajustement\";' '  if (c.promptEchoue) return \"collecter des exemples\";' '  return \"prompt\";' '}' 'cas.forEach(function (c) { console.log(c.besoin + \" :\", choisir(c)); });' >> decide.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 la règle de décision, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const texte = \"Répondez uniquement en JSON avec les clés produit et prix pour : Vélo, 120 euros.\";' '  const echantillon = JSON.stringify({ produit: \"Vélo\", prix: 120 });' '  const reponse = await demander([{ role: \"user\", content: texte }], echantillon, 40);' '  let valide = true;' '  try { JSON.parse(reponse); } catch (erreur) { valide = false; }' '  console.log(\"Le prompt d’abord :\", reponse);' '  console.log(\"JSON valide :\", valide);' '}' 'main();' >> decide.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.

Appliquer la règle à cinq cas

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

La règle est une règle d’enseignement

Le Run applique une règle facile à lire, pas une mesure. Le seuil de 500 exemples est un nombre inventé pour l’exercice. Votre propre seuil vient de vos cas et de votre évaluation.

L’appel réel essaie d’abord l’étape la moins chère : un prompt qui demande du JSON, puis une analyse pour le contrôler.

Une sortie possible

LigneCe qu’elle montre
un ton aimable : ajustementLe prompt a échoué et 800 exemples existent
des prix qui changent chaque semaine : rechercheLes faits changent
un coût par appel plus bas : promptRien n’a échoué : mesurez d’abord le prompt
JSON validetrue ou false : la réponse a été analysée, pas lue

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.