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

Écrire un prompt clair

Après cette leçon: Je peux transformer une demande vague en prompt avec un rôle, une tâche, des limites et une forme de réponse.

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

Quatre parties font un prompt clair

Un prompt est le texte que vous envoyez à un modèle de langage. Le modèle ne lit que ce texte. Il ne peut pas deviner ce que vous vouliez ajouter.

« Parlez-moi du match » donne une réponse différente à chaque fois. Un prompt avec un rôle, une tâche, des limites et une forme de réponse donne un résultat que vous pouvez utiliser.

À la fin de cette leçon

Remarque

Je peux transformer une demande vague en prompt avec un rôle, une tâche, des limites et une forme de réponse.

Mots clés

MotCe que ça veut dire
Promptle texte que vous envoyez à un modèle
Rôlequi le modèle doit jouer
Tâchele seul travail à faire maintenant
Limitesce que la réponse ne doit pas dépasser
Forme de réponsela forme que la réponse doit prendre
Liste de contrôleune liste de points à cocher

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

Quelles sont les quatre parties d’un prompt ?

Le rôle dit qui joue le modèle. La tâche dit le seul travail à faire. Les limites disent ce qu’il ne doit pas dépasser, comme la longueur ou les sources. La forme de réponse dit la forme voulue, comme une phrase ou une liste.

Mettez chaque partie sur sa propre ligne, avec une étiquette. Une étiquette rend le prompt facile à lire et facile à vérifier.

La même demande, mal écrite puis bien écrite

PartieVagueClaire
Rôle(rien)Vous êtes journaliste d’un club de foot.
TâcheParlez-moi du match.Écrivez une brève sur le résultat ci-dessous.
Limites(rien)Une seule phrase. Utilisez seulement les faits donnés.
Forme de réponse(rien)Texte simple, sans titre.

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 vérificateur de prompt, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const vague = \"Parlez-moi du match.\";' 'const bon = [' '  \"Rôle : Vous êtes journaliste d’un club de foot.\",' '  \"Tâche : Écrivez une brève sur le résultat ci-dessous.\",' '  \"Limites : Une seule phrase. Utilisez seulement les faits donnés.\",' '  \"Forme : Texte simple, sans titre.\",' '  \"Faits : Les Lions de Lyon 3, Les Aigles de Tours 1. Deux buts de Sami.\",' '].join(\"\n\");' > clarte1.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 vérificateur de prompt, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const PARTIES = [\"Rôle\", \"Tâche\", \"Limites\", \"Forme\"];' 'function manquantes(prompt) {' '  const lignes = prompt.split(\"\n\");' '  const absentes = [];' '  for (const partie of PARTIES) {' '    const present = lignes.some(function (l) {' '      return l.startsWith(partie + \" : \") && l.trim().length > partie.length + 2;' '    });' '    if (present === false) absentes.push(partie);' '  }' '  return absentes;' '}' >> clarte1.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 vérificateur de prompt, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  for (const p of [vague, bon]) {' '    const absentes = manquantes(p);' '    console.log(\"score \" + (4 - absentes.length) + \" sur 4, il manque : \" + (absentes.join(\", \") || \"rien\"));' '  }' '  const echantillon = \"Les Lions de Lyon ont battu Les Aigles de Tours 3 à 1, avec deux buts de Sami.\";' '  const reponse = await demander([{ role: \"user\", content: bon }], echantillon, 60);' '  console.log(\"modèle : \" + reponse.texte);' '}' 'main();' >> clarte1.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 noter deux prompts

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

Les deux premières lignes notent le prompt vague et le prompt écrit. Le vague obtient 0 sur 4 et il lui manque les quatre parties. Le prompt écrit obtient 4 sur 4.

La dernière ligne est une courte réponse du modèle du labo. Sans modèle, un Échantillon enregistré s’affiche d’abord. Les mots d’une réponse peuvent changer à chaque Run, et c’est normal.

Une erreur courante

Attention

Beaucoup pensent qu’un prompt plus long est un meilleur prompt. Ce n’est pas vrai. Un prompt est meilleur quand chaque partie est présente et dit une seule chose. Ajoutez une ligne seulement si elle limite la réponse ou lui donne une forme.

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