Je constate chaque jour que le principal frein au déploiement des intelligences artificielles en production ne réside pas dans les modèles eux-mêmes. Le véritable défi réside dans la gestion de leur mémoire immédiate.
L’ingénierie de contexte consiste à concevoir, organiser et optimiser l’environnement d’information fourni à un grand modèle de langage (LLM) lors de chaque interaction.
Les experts de l’industrie, à l’image d’Andrej Karpathy, ne considèrent plus la rédaction de requêtes comme une solution viable pour les applications d’entreprise. Nous devons traiter la fenêtre de contexte comme une ressource rare, précieuse et limitée. Il faut l’alimenter avec une précision chirurgicale.
La plupart des erreurs attribuées aux modèles proviennent de données d’entrée mal structurées ou surchargées. C’est ce que j’appelle la pourriture de contexte.
- Optimisation de la mémoire : Distribuer l’information utile au moment opportun.
- Réduction des hallucinations : Éliminer les données contradictoires ou superflues.
- Contrôle des coûts : Diminuer le nombre de tokens envoyés aux API pour préserver vos budgets.
- Fiabilité logicielle : Transformer le développement IA en une architecture prévisible et auditable.
Ingénierie de contexte vs. Ingénierie de prompt
Le passage à l’ingénierie de contexte s’impose avec l’apparition de fenêtres de traitement géantes, capables de recevoir des centaines de milliers de tokens. Nous ne concevons plus de simples agents conversationnels à réponse unique, mais des systèmes autonomes complexes.
| Caractéristique | Ingénierie de prompt | Ingénierie de contexte |
|---|---|---|
| Objectif principal | Formulation de la question (syntaxe, ton, règles). | Sélection et structure des données accessibles par le modèle. |
| Nature | Statique, manuelle et limitée à l’instruction textuelle. | Dynamique, logicielle et globale au système. |
| Analogie | Rédiger l’énoncé idéal pour un examen. | Ouvrir le manuel de l’étudiant à la page exacte du problème. |
Les quatre piliers fondateurs de l’architecture de contexte
Pour structurer ce que le modèle analyse, je m’appuie sur quatre piliers techniques fondamentaux.
- Génération augmentée par récupération (RAG) : Extraire en temps réel des faits issus de bases de données vectorielles ou de graphes de connaissances pour les injecter dans la requête.
- Gestion de la mémoire : Suivre l’historique de l’échange, résumer les interactions passées et charger les variables pertinentes sans saturer l’espace disponible.
- Définition des outils et des schémas : Structurer les configurations des API et des environnements d’exécution de code que l’IA peut appeler.
- Optimisation du formatage : Agencer les blocs d’informations à l’aide de balises XML ou de structures JSON pour aider le modèle à séparer les instructions des données brutes.
Techniques de pointe pour la maîtrise des flux d’information
Évitez de saturer vos requêtes. J’utilise ces stratégies pour conserver un rapport signal-sur-bruit élevé.
- Reranking sémantique : Éliminer les données redondantes après une recherche vectorielle pour ne conserver que les éléments indispensables.
- Compression de contexte : Résumer les documents volumineux ou supprimer les mots vides pour réduire le coût des appels API.
- Fenêtres glissantes : Archiver les messages anciens au profit des nouvelles données prioritaires.
- Isolation par sous-agents : Diviser une tâche complexe en étapes gérées par des micro-modèles dotés de contextes spécifiques et épurés.
Exemples concrets d’ingénierie de contexte en production
1. RAG dynamique avec reclassement sémantique
Une recherche vectorielle classique produit souvent des fragments de texte inutiles. Ce script Python montre comment filtrer et reclasser les informations avant de générer la requête finale.
# Cadre conceptuel pour un pipeline de contexte reclassé
def generate_engineered_context(user_query, raw_documents):
# 1. Élimination des doublons ou des fragments de faible qualité
unique_docs = remove_duplicates(raw_documents)
# 2. Utilisation d'un Cross-Encoder pour évaluer la pertinence sémantique réelle
ranked_docs = cross_encoder.predict([(user_query, doc) for doc in unique_docs])
top_k_docs = sorted(zip(unique_docs, ranked_docs), key=lambda x: x[1], reverse=True)[:3]
# 3. Assemblage du bloc de contexte nettoyé
context_block = "\n---\n".join([doc[0] for doc in top_k_docs])
return f"Utilisez les documents vérifiés suivants pour répondre :\n{context_block}\n\nRequête : {user_query}"
2. Gestion de la mémoire par fenêtre glissante et résumé
Pour éviter l’explosion des coûts de jetons lors de longues sessions, je déploie un système à double tampon. Nous conservons les derniers messages intacts tout en condensant l’historique plus ancien dans un résumé persistant.
[Instructions de Persona Système]
+
[Tampon : Résumé des messages 1 à 20] -> "L'utilisateur résout un problème de connexion Docker sous Python."
+
[Tampon : Message 21 (Utilisateur)] -> "J'ai vérifié les ports, la configuration semble correcte."
[Tampon : Message 22 (Assistant)] -> "Quel est le bloc network de votre fichier docker-compose.yml ?"
+
[Saisie Utilisateur Actuelle] -> "Voici le fichier yaml : ..."
3. Isolation multi-source par balises XML
Mélanger des profils utilisateurs, des résultats de recherche et des données de base de données provoque une confusion chez le modèle. J’utilise des balises structurelles pour compartimenter l’information.
<system_instructions>
Vous êtes un assistant financier. Analysez le portefeuille de l'utilisateur par rapport aux tendances du marché.
</system_instructions>
<user_profile>
- Tolérance au risque : Modérée
- Actifs principaux : AAPL, MSFT, GOOGL
</user_profile>
<external_knowledge_source name="Google Search API">
- Date : 2026-06-16
- Titre : Le secteur technologique progresse de 2% après la stabilisation des chaînes d'approvisionnement.
</external_knowledge_source>
<internal_database_source name="Portfolio Analytics">
- Valeur totale : $142,500
- Liquidités non investies : 12%
</internal_database_source>
<user_query>
Dois-je investir mes liquidités restantes suite aux nouvelles du jour ?
</user_query>
4. Restriction dynamique des outils
Inutile de présenter l’intégralité de vos schémas d’API à votre agent lors de chaque tour de parole. Si un utilisateur demande le statut d’un vol, le système interroge un index vectoriel d’outils et n’injecte que les définitions de get_flight_status() et send_slack_message(). Les autres outils restent masqués pour économiser des jetons et éliminer les erreurs de sélection.
| Technique | Problème résolu | Bénéfice majeur |
|---|---|---|
| Reclassement sémantique | Bruit et surcharge d’informations. | Précision accrue, moins de dérives. |
| Mémoire par fenêtre glissante | Croissance exponentielle du coût des tokens. | Budget d’API maîtrisé et prévisible. |
| Balises XML structurées | Dérive des instructions et injections de prompts. | Respect strict des consignes système. |
| Élagage des outils | Confusion du modèle et limites de requêtes. | Temps de réponse réduit. |
Les frameworks d’ingénierie de contexte
Ces outils fournissent les structures logicielles nécessaires pour compiler le contexte de manière programmatique.
1. Orchestration basée sur les états
LangGraph organise les agents sous forme de machines à états. Il utilise une mémoire à court terme liée à l’exécution pour masquer ou révéler les variables d’état selon l’étape du graphe de décision.
Le Google Agent Development Kit (ADK), accessible sur adk.dev, sépare le stockage de la présentation. Ce framework génère un espace de travail temporaire en appliquant des filtres sur un journal de session persistant.
2. Protocoles d’échange standards
Le Model Context Protocol (MCP), initié par Anthropic, s’impose comme un standard ouvert. Il sert de connecteur universel entre les modèles et les sources de données, évitant d’écrire du code d’intégration spécifique pour chaque outil.
3. Frameworks académiques
Le framework ACE (Agentic Context Engineering), conçu à Stanford, aborde le contexte comme un guide évolutif. Il s’appuie sur trois rôles automatisés : le Générateur produit le résultat, le Réflecteur analyse les erreurs, et le Curateur réécrit le guide de contexte pour capitaliser sur les expériences passées.
4. Registres de données d’entreprise
Les solutions comme Atlan ou DataHub créent des produits de contexte certifiés à l’échelle de l’entreprise. L’orchestrateur extrait et injecte ces ensembles de données validés selon l’intention de l’utilisateur.
| Framework / Protocole | Stratégie principale | Cas d’usage idéal |
|---|---|---|
| LangGraph | Isolation d’états et points de contrôle. | Agents multi-étapes complexes. |
| Model Context Protocol (MCP) | Requêtes de données normalisées. | Connexions sécurisées vers des bases de données locales. |
| Stanford ACE | Guides de procédures évolutifs. | Développement de logiciels autonomes apprenant de leurs bugs. |
| Google ADK | Compilation de vues temporaires minimales. | Systèmes multi-agents à haute performance. |
Stratégies d’optimisation de la densité et du coût
Ces méthodes permettent de structurer et d’alléger la charge cognitive de vos modèles.
- Mise en couches sémantiques : Encadrer les différentes sources de données avec des délimiteurs clairs pour éviter que les données importées ne soient interprétées comme des ordres du système.
- Le modèle “Sandwich” : Placer les contraintes système cruciales au début et à la fin du document. Les LLM ont tendance à ignorer les éléments situés au milieu d’un long texte.
- Nettoyage par densité d’information : Utiliser des modèles légers comme LLMLingua pour analyser la perplexité des termes et éliminer les mots superflus, réduisant la taille du texte de moitié sans perte d’information utile.
| Stratégie | Métrique optimisée | Complexité de mise en œuvre | Usage recommandé |
|---|---|---|---|
| Couches sémantiques | Exactitude et sécurité. | Faible (formatage textuel). | Applications d’entreprise sensibles aux injections. |
| Mémoire en cascade | Stabilité du volume de tokens. | Moyenne (appel LLM asynchrone). | Support client de longue durée. |
| Nettoyage de densité | Coûts et latence. | Élevée (pipeline d’inférence dédié). | RAG à gros volumes sur documents bruts. |
| Invalidation d’outils | Fiabilité d’exécution. | Moyenne (couche d’aiguillage). | Agents disposant de nombreuses API d’action. |
Architecture d’un pipeline d’hydratation multi-route
Pour résoudre simultanément les problèmes de coûts, de latence et d’hallucinations, je recommande la mise en place d’un pipeline d’hydratation structuré. Ce système traite chaque type d’information via une méthode dédiée avant de construire la requête finale.
[Saisie Utilisateur / Requête]
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
[Route 1: Chat] [Route 2: Docs] [Route 3: APIs]
Mémoire glissante Recherche vectorielle Élagage sémantique
& Résumé global & Rerank BGE des outils
│ │ │
└─────────────────┼─────────────────┘
▼
[Générateur de schéma XML]
│
▼
[LLM Optimisé]
Cette approche permet d’obtenir un document structuré et hautement qualifié où chaque bloc est identifié par des balises claires.
<system_constraints>
Vous êtes un assistant d'entreprise. Répondez à la demande en utilisant uniquement les données vérifiées ci-dessous. Si l'information est absente, indiquez votre impossibilité à répondre.
</system_constraints>
<conversation_history_summary>
L'utilisateur s'est identifié et a validé son adresse e-mail professionnelle.
</conversation_history_summary>
<retrieved_document_context>
[Source: Politique_Q2.pdf]
Les collaborateurs à distance bénéficient d'une aide à l'équipement de 500 euros tous les deux ans.
</retrieved_document_context>
<database_api_context>
{ "user_id": 9842, "last_stipend_claim_date": "2023-11-12", "stipend_eligible": true }
</database_api_context>
<current_user_message>
Puis-je commander un nouvel écran aujourd'hui ?
</current_user_message>
L’ingénierie de contexte au cœur des systèmes multi-agents
Dans un écosystème où plusieurs agents collaborent, l’ingénierie de contexte devient la clé de voûte de l’architecture.
- Définition des rôles : Elle garantit que chaque agent reçoit uniquement les instructions nécessaires à sa mission, évitant les surcharges cognitives.
- Prévention des interférences : Elle filtre les sorties verbeuses d’un agent pour ne transmettre que les conclusions utiles à l’agent suivant.
- Cohérence temporelle : Elle assure la transmission des décisions structurées et des contraintes à travers les différentes étapes de travail.
En coordonnant l’information avec méthode, nous transformons le développement d’applications IA. Nous passons d’une phase d’essais empiriques à une véritable ingénierie logicielle, stable, performante et maîtrisée.