Séparer données et instructions
Mis à jour le 29 juillet 2026
Pourquoi un modèle de prompt
Dans beaucoup de cas, vous ne voulez pas écrire un prompt complet à chaque fois. Vous voulez un modèle de prompt, un template, où les données changent et où les instructions restent fixes. Un service client qui reformule deux cents messages par jour n’a pas à réinventer la consigne deux cents fois : la consigne est stable, seul le message varie. Cette séparation est ce qui rend les tâches répétitives industrialisables.
Construire le template
En Python, des variables et des f-strings suffisent à injecter les données dans le squelette de prompt.
ANIMAL = "Vache"
PROMPT = f"Quel bruit fait un(e) {ANIMAL} ? Réponds en un seul mot."
L’intérêt dépasse le confort d’écriture. Les utilisateurs de votre application n’ont pas besoin de voir ni de comprendre le prompt complet : ils remplissent juste la variable, via un champ de formulaire ou une colonne de tableur. Le prompt devient un composant logiciel que vous testez une fois et que vous réutilisez, plutôt qu’un texte improvisé à chaque appel.
Le point de bascule : quand les données ressemblent à des instructions
C’est là que le mécanisme peut se retourner contre vous. Le modèle reçoit une chaîne de caractères unique ; rien ne distingue typographiquement ce que vous avez écrit de ce que l’utilisateur a fourni. Quand les données injectées se confondent avec les instructions, Claude peut mal interpréter le prompt.
L’exemple classique est celui de la reformulation d’e-mails. Vous demandez de réécrire un message dans un style professionnel, et le message commence par « Yo Claude ». Le modèle voit un texte qui l’interpelle par son nom : il peut croire qu’il s’agit d’une adresse directe, donc d’une instruction, et répondre à cet e-mail au lieu de le reformuler. Vous n’avez rien fait de faux ; vous avez simplement laissé deux natures de texte cohabiter sans frontière.
La solution : les balises XML
Entourez les données de l’utilisateur avec des balises XML pour délimiter clairement où commencent et où finissent les données.
email = "Salut, merci pour la livraison rapide !"
prompt = f"""Reformule cet email dans un style professionnel :
<email>
{email}
</email>"""
Les balises fonctionnent comme des délimiteurs visuels pour Claude. Elles distinguent les instructions des données, ce qui évite les injections accidentelles du type « Yo Claude », et elles structurent les prompts complexes dès que plusieurs blocs cohabitent — un document, une question, un historique, des contraintes de format. Le nom des balises n’a rien de réservé : <email>, <document> ou <question> sont des choix de lisibilité, et un nom parlant aide le modèle autant qu’il vous aide à relire.
Cette habitude vaut d’être prise tôt, car elle conditionne presque tout ce qui suit dans ce cours : le formatage de la sortie, les prompts à plusieurs étages et la lutte contre les hallucinations reposent tous sur cette même discipline de délimitation.
Les petits détails comptent
Un dernier point, souvent sous-estimé. Claude est sensible aux patterns : une faute de frappe, un tiret mal placé ou un saut de ligne inattendu peuvent influencer la réponse. Un template génère parfois une ligne vide de trop ou une accolade orpheline quand une variable est vide, et le résultat s’en ressent sans que la cause soit évidente. Prenez l’habitude d’imprimer le prompt final — celui qui part réellement, variables substituées — et de le relire avant d’incriminer le modèle.
Deux templates à écrire
Créez d’abord un template de prompt avec une variable TOPIC qui génère un haïku sur le sujet donné, et faites-le tourner sur cinq sujets différents pour vérifier qu’aucune formulation ne casse. Passez ensuite au cas piégeux : Claude doit répondre à une question sur les chiens même si la question contient des fautes de frappe. Utilisez des balises XML pour isoler la question, et observez la différence de comportement selon que la question est délimitée ou noyée dans les instructions.