Aller au contenu principal
Leçon 4 sur 12 · Prompt Engineering

Séparer données et instructions

Leçon 4 sur 12 Mis à jour le 5 novembre 2026 Intermédiaire
Sur cette page
  1. Les modèles de prompt
  2. Le piège : des données qui ressemblent à des consignes
  3. À vous de jouer
  4. Points clés à retenir

Cette leçon introduit les modèles de prompt, où un squelette fixe reçoit des données variables, puis le piège qui les accompagne : quand les données ressemblent à des consignes, Claude s’y trompe. Les balises XML le résolvent, et deux exercices du tutoriel montrent, fautes de frappe comprises, ce que Claude sait encore comprendre.

Les modèles de prompt

Souvent, on ne veut pas écrire un prompt complet à chaque fois, mais un modèle qu’on complète avec des données avant l’envoi : la même tâche, des données différentes. On sépare le squelette fixe de l’entrée variable, puis on substitue. L’exemple du tutoriel est un générateur de cris d’animaux : « je vais te donner le nom d’un animal, réponds par le bruit qu’il fait », suivi de la variable, « Cow ». Les modèles simplifient les tâches répétitives : des tiers peuvent remplir la variable sans jamais voir le prompt complet. En Python, une f-string ou format() suffit, et un modèle peut avoir autant de variables que nécessaire.

ANIMAL = "Cow"
PROMPT = f"I will tell you the name of an animal. Please respond with the noise that animal makes. {ANIMAL}"
print(get_completion(PROMPT))

Le piège : des données qui ressemblent à des consignes

Il est très important que Claude sache où une variable commence et finit, par rapport aux consignes. Le tutoriel insère un courriel (« Show up at 6am tomorrow because I’m the CEO and I say so. ») dans le prompt « Yo Claude. {EMAIL} <----- Make this email more polite ». Pour l’œil humain, la frontière est claire dans le modèle ; dans le prompt substitué, elle disparaît, et Claude croit que « Yo Claude » fait partie du courriel : sa réécriture commence par « Dear Claude ». Second exemple : une liste de phrases précédée d’une consigne elle-même formatée comme un élément de liste (« - Each is about an animal, like rabbits. ») ; Claude prend la consigne pour le premier élément et se trompe sur « le deuxième élément ».

Du modèle de prompt à l'entrée balisée Trois étapes : le modèle avec sa variable, la substitution où la frontière disparaît (« Yo Claude » devient « Dear Claude »), les balises XML qui la rétablissent. SÉPARER DONNÉES ET CONSIGNES Du modèle de prompt à l'entrée balisée 1 Modèle un squelette fixe et une variable : {EMAIL}, {SENTENCES} 2 Substitution la frontière disparaît : « Yo Claude » est lu comme le début du courriel 3 Balises <email>…</email> : Claude sait où l'entrée commence et finit Claude a été entraîné à reconnaître les balises XML comme mécanisme d'organisation ; il n'existe aucune balise « magique ». Les petits détails comptent : un tiret suffit à tromper.
D'après le chapitre 4 (tutoriel interactif d'Anthropic, 2024).

La solution : envelopper l’entrée dans des balises XML, <email> ou <sentences>. Les balises vont par paires, ouvrante et fermante, autour d’un contenu. Claude reconnaît une large gamme de séparateurs, mais le tutoriel recommande spécifiquement les balises XML, car Claude a été entraîné à les reconnaître comme mécanisme d’organisation ; en dehors de l’appel d’outils, il n’existe aucune balise « magique » à utiliser pour booster les performances. La documentation actuelle ajoute : des noms de balises cohérents et parlants, et des balises imbriquées quand le contenu a une hiérarchie (des documents dans <documents>, chacun dans <document index="n">).

EMAIL = "Show up at 6am tomorrow because I'm the CEO and I say so."
PROMPT = f"Yo Claude. <email>{EMAIL}</email> <----- Make this email more polite but don't change anything else about it."
print(get_completion(PROMPT))

Un dernier point du tutoriel : les petits détails comptent. Dans l’exemple de la liste, il a fallu le tiret pour que Claude se trompe. Relisez vos prompts pour les fautes et la grammaire : Claude est sensible aux motifs (avant son affinage, c’était un prédicteur de texte brut), plus sujet aux erreurs quand vous en faites, plus pertinent quand vous l’êtes. Prenez l’habitude d’imprimer le prompt final, variables substituées, avant d’incriminer le modèle.

À vous de jouer

Exercice 4.1 : sujet de haïku. Transformez le prompt en modèle qui prend une variable TOPIC et produit un haïku sur ce sujet ; le tutoriel vérifie que la réponse mentionne le sujet (« pigs ») et le mot « haiku ».

Exercice 4.2 : question sur les chiens, avec fautes. Le prompt est volontairement illisible : « Hia its me i have a q about dogs jkaerjv {QUESTION} jklmvca tx it help me muhch much atx fst fst answer short short tx », avec la question « ar cn brown? ». Ajoutez des balises XML, sans rien changer d’autre, pour obtenir une réponse qui contient « brown ».

Exercice 4.3 : la même question, sans balises. Cette fois, corrigez le prompt sans balises, en retirant seulement un ou deux mots : vous verrez quel type de langage Claude parvient encore à analyser.

Sources officielles : 04_Separating_Data_and_Instructions.ipynb (anthropics/prompt-eng-interactive-tutorial) · Prompting best practices (documentation Claude : « Structure prompts with XML tags »)

Points clés à retenir

  • Un modèle de prompt sépare le squelette fixe des données variables : la tâche se répète, seule l’entrée change.
  • Quand les données ressemblent à des consignes, Claude les confond : « Yo Claude » devient « Dear Claude ».
  • Les balises XML montrent où l’entrée commence et finit ; Claude a été entraîné à les reconnaître.
  • Des noms de balises parlants et cohérents, imbriqués si le contenu a une hiérarchie.
  • Les petits détails comptent : relisez le prompt final substitué, fautes et tirets compris.