Ce que vous saurez faire à la fin
- Structurer vos prompts Claude avec des balises XML pour gagner 15 à 40 % de fiabilité mesurée
- Choisir les 7 balises qui couvrent 95 % des cas d’usage PME
- Combiner XML + exemples few-shot pour faire passer Claude en mode « expert métier »
- Déboguer un prompt qui échoue en isolant chaque bloc XML
- Écrire un template réutilisable pour votre équipe marketing, commerciale ou support
Prérequis
- Compte Anthropic actif, clé API ou Claude.ai Pro
- Un cas d’usage réel : résumer des CV, rédiger une fiche produit, classer des emails clients
- Un éditeur qui affiche la coloration XML (VS Code, Cursor, Notepad++)
Étape 1 — Pourquoi XML et pas du Markdown ou du JSON
Claude a été entraîné massivement avec du XML. En pratique, une balise <instruction> est 3 à 5 fois plus fiable qu’un titre markdown ## Instruction pour délimiter une section critique. Différences clés :
- Markdown : titres et listes, mais pas de notion de « bloc » ni d’imbrication propre
- JSON : strict, mais Claude doit échapper les guillemets et sauts de ligne, ce qui pollue la sortie
- XML : imbrication naturelle, tolère les sauts de ligne, Claude sait le parser et le générer sans effort
Règle pratique : pour tout prompt de plus de 300 mots ou tout prompt utilisé en production, passez en XML.
Étape 2 — Les 7 balises à maîtriser
<instruction>: la consigne principale, ce que Claude doit faire<context>: le contexte métier, ce que Claude doit savoir<input>ou<document>: les données à traiter (email, CV, fiche produit)<example>: un exemple entrée → sortie (few-shot)<format>: le format de sortie attendu<constraints>: les règles à respecter (longueur, ton, interdits)<thinking>: zone où Claude peut raisonner avant de répondre
Étape 3 — Votre premier prompt structuré
Cas : vous voulez qu’un agent classe les emails entrants de votre PME en 4 catégories (commande, réclamation, devis, autre).
<instruction>
Tu es un assistant classification email pour une PME sénégalaise.
Lis l'email dans <input> et classe-le dans UNE seule des 4 catégories.
Réponds UNIQUEMENT au format demandé dans <format>.
</instruction>
<context>
L'entreprise vend des équipements bureautiques à Dakar.
Les emails arrivent en français, wolof ou franglais.
Les clients sont des PME, administrations et particuliers.
</context>
<example>
Entrée : "Bonjour, je voudrais 3 imprimantes HP laser, délai ?"
Sortie : {"categorie":"devis","confiance":0.95}
</example>
<example>
Entrée : "L'imprimante livrée lundi ne marche pas, je suis très mécontent"
Sortie : {"categorie":"reclamation","confiance":0.98}
</example>
<constraints>
- Une seule catégorie parmi : commande, reclamation, devis, autre
- Confiance entre 0 et 1
- Pas de texte hors JSON
</constraints>
<format>
{"categorie":"...", "confiance":0.xx}
</format>
<input>
{email_a_classer}
</input>
Étape 4 — Tester et mesurer le gain
Ne faites jamais confiance à votre intuition. Mesurez.
- Constituez un jeu de test de 50 emails réels avec la bonne catégorie connue
- Lancez 2 versions du prompt : v1 en markdown classique, v2 en XML structuré
- Comptez les bonnes classifications sur les 50 cas
- Le gain typique en passant au XML : +15 à +40 % de précision
import anthropic, json
client = anthropic.Anthropic()
def classifier(prompt_template, email):
msg = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=200,
messages=[{"role":"user","content": prompt_template.replace("{email_a_classer}", email)}]
)
return json.loads(msg.content[0].text)
# Boucle test
correct = 0
for cas in jeu_de_test:
pred = classifier(prompt_xml, cas["email"])
if pred["categorie"] == cas["attendu"]:
correct += 1
print(f"Précision XML: {correct}/50 = {correct*2}%")
Étape 5 — Balises pour raisonnement complexe
Pour les tâches qui demandent réflexion (analyse juridique, diagnostic, recommandation), donnez une zone <thinking> à Claude.
<instruction>
Analyse la réclamation client et propose une réponse.
D'abord, raisonne dans <thinking>. Puis écris la réponse finale dans <reponse_client>.
</instruction>
<input>
{reclamation}
</input>
<format>
<thinking>
Ton raisonnement étape par étape : qui est en tort, que dit le droit OHADA, quelle est la bonne attitude commerciale.
</thinking>
<reponse_client>
La réponse réellement envoyée au client, en français, 150 mots max.
</reponse_client>
</format>
Cette séparation raisonnement vs réponse améliore la qualité finale car Claude ne se contente pas de sortir la première idée.
Étape 6 — Erreurs courantes
- Balises non fermées :
<input>sans</input>dégrade la compréhension. Fermez toujours proprement. - Balises trop génériques :
<data>est flou. Préférez<cv_candidat>ou<email_client>. - Nesting excessif : pas plus de 3 niveaux d’imbrication. Au-delà, vous perdez Claude.
- Exemples inventés : les exemples doivent venir de vrais cas métier, pas d’hypothèses théoriques.
- Oubli de <format> : sans précision du format de sortie, Claude varie d’un appel à l’autre.
Étape 7 — Template réutilisable
Gardez ce squelette dans votre wiki interne et adaptez-le à chaque cas :
<instruction>
{role_de_claude}
{action_principale}
</instruction>
<context>
{infos_metier_stables}
</context>
<constraints>
- {regle_1}
- {regle_2}
- {regle_3}
</constraints>
<example>
Entrée : {exemple_input}
Sortie : {exemple_output}
</example>
<format>
{format_precis_de_sortie}
</format>
<input>
{donnee_a_traiter}
</input>
Prochaines étapes
- Intégrer le prompt dans votre code via l’API et versionner avec git
- Monter un jeu de régression : 100 cas réels rejoués à chaque modification du prompt
- Passer à
prompt cachingpour baisser le coût de 90 % si votre contexte est stable - Combiner XML +
tool_usepour des agents qui appellent vos API internes