Vous connaissez ce sentiment. Vous tapez une question qui semble parfaitement claire dans un assistant IA, et ce qui revient est... approximatif. Techniquement pertinent, mais passant à côté de l'essentiel. Alors vous reformulez, réessayez, obtenez une autre réponse approximative. Après cinq échanges vous avez enfin quelque chose d'utile — mais ça vous a pris plus de temps que de le faire vous-même.
Voici ce qui se passe réellement : le modèle ne peut travailler qu'avec ce que vous avez mis devant lui. Il ne sait pas à quoi ressemble votre base de code, ne connaît pas vos contraintes, ne voit pas ce que vous avez déjà essayé. Quand les réponses ratent leur cible, la cause profonde est presque toujours un manque d'informations — pas le choix des mots, pas des astuces de prompt. C'est le cœur de ce que la communauté IA appelle l'ingénierie de contexte.
L'ingénierie de contexte est la discipline de concevoir délibérément les informations que vous donnez à une IA — son rôle, l'état de fond, la tâche, les contraintes et le format de sortie — pour qu'elle produise des résultats vraiment utiles sans allers-retours.
Ce qu'est réellement l'ingénierie de contexte
Andrej Karpathy a popularisé ce terme en 2025, et la distinction avec le "prompt engineering" est importante. Le prompt engineering concerne le choix des mots. L'ingénierie de contexte va un niveau plus profond : il s'agit des informations que vous rendez disponibles avant que le modèle ne génère quoi que ce soit.
Pensez-y comme la mise en place — la pratique du chef de préparer chaque ingrédient avant de commencer à cuisiner. Un grand chef n'improvise pas autour d'ingrédients manquants. L'ingénierie de contexte, c'est faire ce travail de préparation pour votre collaborateur IA.
Anatomie d'une fenêtre de contexte
Chaque interaction avec une IA se déroule dans une fenêtre de contexte — la mémoire de travail contenant tout ce que le modèle peut "voir". Il y a quatre couches distinctes.
Le System Prompt est la couche la plus puissante et la plus souvent négligée. Il définit le persona du modèle, son niveau d'expertise et les règles qui régissent toutes les réponses.
Le Contexte Injecté fournit la matière première : fichiers de code, documentation, logs d'erreurs. C'est ce sur quoi le modèle raisonne.
L'Historique de Conversation s'accumule au fil de la session. Utile mais coûteux en tokens.
Le Message Utilisateur est la question réelle. Malgré toute l'attention qu'on lui porte, il représente souvent moins de 5% des tokens totaux dans un setup bien conçu.
Les cinq piliers d'un excellent contexte
Pilier 1 : Rôle (Role)
Définissez qui le modèle doit être — son expertise, sa perspective, son style de communication.
| Sans rôle | Avec rôle |
|---|---|
Expliquez l'authentification. | Vous êtes un ingénieur backend senior spécialisé en sécurité, écrivant pour un développeur junior qui connaît JavaScript mais n'a jamais implémenté d'auth. Expliquez JWT en vous concentrant sur les compromis de sécurité. |
Pilier 2 : État (State)
Dites au modèle ce qui existe déjà — structure de la base de code, ce qui a été essayé, ce qui n'a pas fonctionné.
| Sans état | Avec état |
|---|---|
Corrigez ce bug.(avec code collé, sans autre contexte) | [code] Cette fonction debounce marche bien pour les inputs normaux mais se déclenche immédiatement sur un scroll rapide. J'ai essayé clearTimeout, ça déclenche quand même. Stack : React 18, TypeScript. Erreur console : [message]. |
Pilier 3 : Tâche (Task)
Spécifiez exactement ce que vous voulez, pas une catégorie de ce que vous voulez. "Aidez-moi avec mon API" est une catégorie. "Écrivez un middleware Express qui valide les tokens JWT, renvoie 401 si absent ou invalide, et attache l'utilisateur décodé à req.user" est une tâche.
Pilier 4 : Contraintes (Constraints)
Dites au modèle ce qu'il ne peut pas faire, quelles sont les limites de portée. Les contraintes semblent restrictives mais libèrent en réalité la réponse.
Écrivez les contraintes sous forme de "ne pas" ou "éviter" explicites. Le modèle est entraîné à être utile et élargit naturellement la portée. Les négations explicites sont vos garde-fous les plus fiables.
Pilier 5 : Format
Précisez la forme de la sortie : longueur, structure, niveau de détail. Sans guidage de format, vous obtenez ce que le modèle juge approprié.
Construire des templates de contexte réutilisables
## Rôle
Vous êtes [RÔLE], spécialisé en [DOMAINE].
Votre audience est [AUDIENCE] qui [CONTEXTE CLÉ].
## État de fond
Stack technique : [LANGAGES / FRAMEWORKS]
Situation actuelle : [DESCRIPTION COURTE]
Ce que j'ai essayé : [TENTATIVES ET RÉSULTATS]
Erreur pertinente : [SI APPLICABLE]
## Tâche
[UNE PHRASE PRÉCISE : verbe + objet + portée]
## Contraintes
- Ne PAS utiliser [BIBLIOTHÈQUE / APPROCHE]
- Garder [ASPECT] sous [LIMITE]
## Format de sortie
[LONGUEUR] — [STRUCTURE] — [NIVEAU DE DÉTAIL]
Points clés
- Ingénierie de contexte > prompt engineering : les informations que vous fournissez comptent plus que les mots que vous choisissez. Meilleure entrée = meilleure sortie.
- Quatre couches, un budget : system prompt, contexte injecté, historique, message utilisateur — chacune a un rôle différent et partage le même budget de tokens.
- Cinq piliers, cinq lacunes : Rôle, État, Tâche, Contraintes, Format. Couvrez les cinq et les allers-retours diminuent dramatiquement.
- La qualité bat la quantité : un contexte pertinent, ciblé et structuré surpasse toujours un grand dump non focalisé.
L'ingénierie de contexte est une habitude de pensée : avant d'envoyer un prompt, demandez-vous ce que vous devriez expliquer à un brillant nouveau collègue pour que cette tâche soit autosuffisante. Ajoutez cela. Supprimez ce qui n'est pas pertinent. Vous passerez moins de temps à itérer et plus de temps à utiliser le résultat.