Structurer avec des balises XML
Pourquoi structurer ?
Imaginez que vous envoyez a Claude un prompt contenant 20 pages de donnees commerciales, suivies d’instructions, puis du code a analyser, puis des questions. Sans structure, Claude doit deviner ou finissent les donnees et ou commencent les instructions. C’est une recette pour des erreurs.
Les balises XML creent des frontieres claires entre les differentes parties d’un prompt. Claude est specifiquement entraine pour bien les interpreter.
Syntaxe de base
<nom_de_la_balise>
Contenu ici
</nom_de_la_balise>
Contrairement au XML standard, vous n’avez pas besoin de declarer un schema ni de respecter une DTD. Utilisez simplement des noms descriptifs en minuscules avec des underscores.
Exemples de balises courantes
| Balise | Usage |
|---|---|
<instructions> | Les consignes principales du prompt |
<donnees> ou <data> | Les donnees a traiter |
<contexte> | Le contexte ou les informations de fond |
<format_sortie> | Le format attendu pour la reponse |
<exemples> | Des exemples de sorties attendues |
<contraintes> | Les regles a respecter |
Exemple pratique : plan alimentaire
Sans balises XML :
Cree un plan alimentaire pour cet athlete. Il s'appelle Thomas, il fait
du cyclisme, son objectif est de faire le Mont Ventoux en moins de 2h,
il est vegetarien. Le plan doit inclure 5 repas avec calories et macros.
Donne les quantites en grammes.
Tout est melange : les donnees de l’athlete, les instructions et les consignes de format sont dans un seul bloc. Ca fonctionne pour un prompt court, mais ca devient ingerable quand le prompt grossit.
Avec balises XML :
<instructions>
Cree un plan alimentaire quotidien adapte au profil de l'athlete ci-dessous.
</instructions>
<athlete>
Nom : Thomas Renard
Sport : Cyclisme sur route
Objectif : Mont Ventoux en moins de 2h
Restrictions alimentaires : Vegetarien (oeufs et produits laitiers OK)
Poids : 72 kg
Taille : 178 cm
Entrainement : 5 seances/semaine, 15-20h/semaine
</athlete>
<consignes_format>
- 5 repas : petit-dejeuner, collation matin, dejeuner, collation apres-midi, diner
- Chaque repas : nom, ingredients avec quantites en grammes, calories, macros (P/G/L)
- Timing par rapport a l'entrainement
- Total calorique journalier en fin de plan
</consignes_format>
Noms descriptifs et personnalises
Les noms de balises doivent decrire le contenu. Utilisez des noms specifiques a votre cas d’usage plutot que des noms generiques.
Generique (moins bon) :
<data>
Ventes Q1 2025...
</data>
Descriptif (meilleur) :
<ventes_trimestrielles>
Ventes Q1 2025...
</ventes_trimestrielles>
Autres exemples de noms descriptifs :
<historique_commandes>plutot que<data><code_source>plutot que<input><documentation_api>plutot que<text><profil_utilisateur>plutot que<info>
Quand utiliser des balises XML
Les balises XML sont particulierement utiles dans ces situations :
1. Contexte volumineux
Quand le prompt contient beaucoup de donnees (logs, documents, base de connaissances), les balises permettent de separer clairement les donnees des instructions.
<instructions>
Analyse ces logs serveur et identifie les erreurs critiques.
</instructions>
<logs_serveur>
[2025-03-15 14:23:01] ERROR: Connection timeout to database
[2025-03-15 14:23:02] INFO: Retrying connection...
[2025-03-15 14:23:05] ERROR: Max retries exceeded
...
</logs_serveur>
2. Types de contenu mixtes
Quand le prompt melange du texte, du code, des donnees structurees et des instructions :
<instructions>
Corrige les bugs dans le code ci-dessous en respectant la documentation.
</instructions>
<code_source>
def calculate_price(quantity, unit_price):
return quantity * unit_price # TODO: ajouter la TVA
</code_source>
<documentation>
La TVA applicable est de 20% pour tous les produits.
Les prix doivent etre arrondis a 2 decimales.
</documentation>
3. Prompts avec plusieurs variables
Quand votre prompt template contient plusieurs variables dynamiques, les balises clarifient ce qui est une variable et ce qui est une instruction.
prompt = """<instructions>
Redige une fiche produit pour le catalogue.
</instructions>
<produit>
Nom : {nom_produit}
Categorie : {categorie}
Prix : {prix} EUR
</produit>
<specifications>
{specs_techniques}
</specifications>
<ton_editorial>
{ton}
</ton_editorial>"""
Balises imbriquees
Vous pouvez imbriquer des balises pour creer une hierarchie :
<equipe>
<athlete>
<nom>Thomas Renard</nom>
<sport>Cyclisme</sport>
</athlete>
<athlete>
<nom>Sarah Cohen</nom>
<sport>Natation</sport>
</athlete>
</equipe>
Mais n’abusez pas de l’imbrication. Si votre structure XML ressemble a un fichier de configuration Spring, c’est probablement trop complexe. Gardez une profondeur de 1-2 niveaux maximum.
Points cles
- Les balises XML creent des frontieres claires entre les parties d’un prompt
- Utilisez des noms descriptifs (
<ventes_q1>plutot que<data>) - Cas d’usage principaux : contexte volumineux, contenu mixte, multiples variables
- Gardez la structure simple — 1-2 niveaux d’imbrication maximum
- Claude est specifiquement entraine pour bien interpreter les balises XML
- Combinez avec les techniques precedentes (clarte, specificite) pour un impact maximal