Prompter pour le long contexte
- Où mettre les documents longs dans un prompt (en haut, pas en bas) et pourquoi cela compte jusqu'à ~30 %
- Comment structurer plusieurs documents avec les tags <document> / <source>
- L'astuce d'extraction de quotes qui rend les réponses long-doc dramatiquement plus ancrées
- Quand le contexte 1M est le mauvais outil — et quand retrieval ou chunking est le bon
- Comment la conscience du contexte et la compaction changent la donne sur Sonnet 5
Le long contexte change la donne — et peut aussi ruiner silencieusement vos réponses. Puisque Sonnet 5, Opus 5 et Opus 4.6/4.7 livrent des fenêtres 1M tokens par défaut (pas de header beta), la tentation est de tout coller et d'espérer. N'y cédez pas. Toute la différence entre un excellent prompt long-contexte et un prompt bâclé est la structure — où chaque partie va et comment vous l'étiquetez.
Les quatre techniques qui bougent vraiment l'aiguille
- Placez les documents longs et le matériel de référence au-dessus de vos instructions et de votre requête, pas en dessous. Les propres tests d'Anthropic montrent que les requêtes à la fin peuvent améliorer la qualité de réponse jusqu'à 30 % — surtout avec des inputs complexes multi-documents. C'est le changement à plus haut levier.
- Pour les inputs multi-docs, enveloppez chacun dans <document index='N'> contenant <source>filename</source> et <document_content>…</document_content>. Le metadata permet à Claude de citer quel doc il a utilisé et l'empêche de croiser les affirmations.
- Instruisez Claude de tirer les passages pertinents de chaque document dans des tags <quotes> avant de répondre. Cela force l'attention sur les parties qui comptent vraiment et abat le bruit. Les réponses deviennent traçables aux lignes source.
- Après un bloc de contexte long, reformulez l'ask en une ligne (voir aussi : prompting/basics — l'anti-pattern 'Ensevelir la demande'). Les positions première et dernière portent le plus de poids.
La forme canonique
Le propre template d'Anthropic — copiez-le et vous êtes déjà en avance sur la plupart des gens qui utilisent des fenêtres 1M :
Template long-context multi-document
<documents>
<document index="1">
<source>annual_report_2025.pdf</source>
<document_content>
{{ANNUAL_REPORT}}
</document_content>
</document>
<document index="2">
<source>competitor_analysis_q2.xlsx</source>
<document_content>
{{COMPETITOR_ANALYSIS}}
</document_content>
</document>
</documents>
Find quotes from the two documents that are relevant to identifying strategic advantages we can press on in Q3. Place them in <quotes> tags with the source filename. Then, based only on those quotes, recommend three focus areas with a one-line justification each. Place your recommendations in <recommendations> tags.Remarquez les trois manœuvres que ce prompt fait à la fois :
- Docs d'abord, question en dernier — l'ask réel vit sous le matériel.
- Sources nommées — chaque doc a un filename que Claude peut citer.
- Quotes → réponse — Claude doit s'ancrer avant de recommander quoi que ce soit.
Context rot : pourquoi plus de tokens ≠ meilleures réponses
Plus de contexte n'est pas automatiquement mieux. À mesure que le compte de tokens grandit, l'accuracy et le recall se dégradent — Anthropic appelle cela le context rot. Les modèles tendent à utiliser le début et la fin d'un input long plus fiablement que le milieu (l'effet classique « perdu au milieu »).
Conséquences pratiques :
- Trimmez avant de coller. Un dump de 100k tokens avec 20 % de sections non pertinentes perd souvent contre la version curée de 60k tokens.
- Ordonnez par saillance. Mettez le doc le plus susceptible de contenir la réponse en premier dans
<documents>. - Le prompt caching se rentabilise vite. Un design à préfixe stable (system prompt + docs identiques à travers les tours) signifie que le préfixe caché est lu à ~10 % du prix de token. Voir Prompt Caching.
- Fenêtre 1M ≠ 1M tokens d'attention utile. L'accuracy se dégrade à mesure que vous remplissez le bureau.
- Enterrez la demande au milieu d'un énorme coller et elle sera sous-pondérée.
- Au-dessus de 200k tokens d'input sur Sonnet 5 / Opus 5, vous êtes sur le tarif long-contexte — vérifiez la page du modèle avant de coller un repo.
Quand le contexte 1M est le MAUVAIS outil
Le long contexte est tentant parce que « juste coller le codebase » se sent plus simple que construire du retrieval. Parfois ça l'est. Souvent non. Choisissez l'alternative quand :
| Signal | Mieux qu'un coller 1M |
|---|---|
| Vous avez besoin du même doc à travers des milliers de requêtes | Retrieval + RAG — moins cher, plus rapide |
| Les utilisateurs apportent leurs propres documents à chaque tour | Files API avec uploads de documents |
| La réponse exige tout le codebase mais vous re-demandez souvent | Prompt caching sur un snapshot de codebase à préfixe stable |
| Vous avez besoin de citations auditables à la granularité de ligne | Retrieval avec chunk IDs → citer le chunk, pas « quelque part dans le coller » |
| La latence compte plus que la qualité one-shot | Chunk + rerank, puis ne passer que le top-k |
Règle de pouce : si vous hésiteriez à recoller ceci à chaque tour, vous voulez probablement du retrieval à la place.
Ce qui change avec Sonnet 5 (conscience du contexte)
Sonnet 5, Sonnet 4.6, Sonnet 4.5 et Haiku 4.5 ont maintenant la conscience du contexte — l'API injecte un budget courant dans le system prompt pour que le modèle puisse se rythmer :
<budget:token_budget>1000000</budget:token_budget>
Après chaque appel d'outil, l'API le met à jour :
<system_warning>Token usage: 350000/1000000; 650000 remaining</system_warning>
Vous n'envoyez pas ces tags — l'API le fait. Effet pratique : sur les runs agentiques longs, Sonnet 5 va résumer ou passer la main proactivement avant de frapper le mur, au lieu de deviner. Opus 4.7+, Fable 5 et Mythos 5 n'ont pas de tags injectés ; donnez-leur des budgets explicites via les task budgets (beta) à la place.
Erreurs courantes
- Coller un doc après l'instruction — la miss la plus commune. Déplacez-le au-dessus de l'ask.
- Pas de metadata
<source>— Claude cite « le document » au lieu dereport.pdf; les outils en aval ne peuvent pas vérifier. - Un blob
<document>géant — regroupez plusieurs sources en un et Claude ne peut pas les distinguer ; utilisez-en un par fichier. - Demander la réponse directement sur des inputs longs — demandez toujours les quotes d'abord pour tout au-dessus de ~20k tokens d'input.
- Supposer que le caching est automatique — il ne l'est pas. Voir Prompt Caching pour les cache breakpoints et TTLs.
- Oublier que la compaction existe — pour les runs d'agents très longs sur Claude 4.6+, la compaction server-side résume automatiquement les tours plus anciens.
Essayez maintenant
Prenez un doc de 20k+ tokens que vous colleriez normalement brut. Enveloppez-le dans le template ci-dessus, mettez votre ask en bas, et ajoutez « Extract relevant quotes first » comme première instruction. Comparez la réponse à votre ancien prompt — la différence n'est habituellement pas subtile.
Vérifiez-vous
0/5- Données longues en haut ; l'ask en bas — jusqu'à ~30 % de mieux sur les inputs complexes.
- Enveloppez chaque doc dans <document> avec metadata <source> ; demandez les <quotes> avant la réponse.
- Contexte 1M ≠ gratuit — le context rot est réel, et le tarif long-contexte s'enclenche au-dessus de 200k tokens d'input.
- Utilisez RAG quand le même corpus sert de nombreuses requêtes ; utilisez la compaction et le prompt caching pour rendre le long contexte économique.
Suite
- Tokens, Context & Memory — le modèle mental derrière le bureau
- Prompt Caching — comment faire marcher l'économie long-contexte
- Memory & Context Editing — compaction et clearing server-side sur Claude 4.6+
- Retrieval-Augmented Generation — quand recourir au RAG à la place
- XML Tags for Structure — l'habitude de tagging qui fait tout marcher