Application de l'ingénierie contextuelle avancée aux agents intelligents codés S’appuyant sur son expérience personnelle et des exemples concrets, le fondateur de Human Layer, @dexhorthy, souligne la transformation du code prototype en code de niveau production, dont l’élément central est l’optimisation de la « fenêtre de contexte » du LLM, c’est-à-dire la qualité et la structure des informations d’entrée du modèle. Contexte : Les origines de l'ingénierie contextuelle et l'évolution du codage de l'IA Dex a retracé l'origine du terme « ingénierie du contexte » : en avril 2022, il publiait un manifeste intitulé « 12 Factor Agents », explorant 12 principes pour des applications LLM fiables. En juin 2024, le terme gagnait en popularité. Il a cité deux discours d'ouverture de la conférence AI Engineers de cette année : celui de Sean Grove, intitulé « The New Code », qui soulignait que les spécifications, plutôt que le code lui-même, étaient essentielles à l'avenir du logiciel ; et une étude de l'université de Stanford analysant les données de 100 000 développeurs, révélant que si le codage par IA peut accélérer le prototypage, il entraîne souvent des reprises, voire des effets contre-productifs, dans les environnements de code d'entreprise à grande échelle ou les systèmes existants — le code généré par IA pouvant augmenter les taux de reprise jusqu'à 50 % pour les tâches complexes. Dex estime que les modèles actuels ne peuvent remplacer entièrement le code écrit par l'humain pour les systèmes complexes (tels que les applications Go présentant des conditions de concurrence et des problèmes d'ordre d'arrêt). Par conséquent, l'objectif de l'ingénierie contextuelle est d'optimiser le potentiel des modèles existants : en concevant soigneusement les entrées afin d'améliorer la précision et l'efficacité des sorties. Défi principal : Pourquoi les méthodes de codage traditionnelles en IA échouent-elles ? • Incitation naïve : Le simple fait de s’engager dans un dialogue répété avec l’agent (comme « Non, essayez encore ») peut facilement épuiser la fenêtre de contexte, ce qui peut désorienter le modèle ou générer du « bruit » (informations non pertinentes). • Goulot d'étranglement contextuel : LLM est essentiellement une « fonction pure » ; la qualité du résultat dépend uniquement des données d'entrée. Le processus itératif de l'agent de codage (recherche de fichiers, compréhension du processus, modification du code) sature rapidement la fenêtre d'analyse, entraînant une surcharge d'informations, des omissions ou des erreurs. • Problème majeur pour l'équipe : les demandes de fusion (PR) générées par l'IA et comportant 20 000 lignes de code sont difficiles à relire, ce qui engendre des tensions au sein de l'équipe. Dex a partagé son expérience : lorsqu'il travaillait avec des développeurs IA de haut niveau, il a dû abandonner la relecture ligne par ligne et se fier plutôt aux spécifications pour valider le code. Objectif : Adapté aux bases de code volumineuses et complexes, résolvant des problèmes concrets, exempt de code « garbage », offrant une sortie de qualité professionnelle et maximisant l’utilisation des jetons. Stratégie clé : De la compression à la refactorisation des flux de travail Dex a proposé le concept d’« ingénierie contextuelle pour tout », optimisant quatre dimensions : l’exactitude (absence d’informations erronées), l’exhaustivité (absence d’informations manquantes), la taille (contrôle du bruit) et la trajectoire (maintien de la direction). Il a évité les outils inefficaces (tels que la simple commande /slashcompact) et a adopté à la place les méthodes avancées suivantes : 1. Compactage intentionnel : Au lieu d'un simple redémarrage, un « fichier de progression » est créé, enregistrant les informations clés (telles que les chemins d'accès aux fichiers, les intentions de modification et les plans de test). Ce fichier est beaucoup plus court que le code d'origine, ce qui facilite la reprise du contexte par les proxys suivants. • Raisonnement systématique : Jetons efficaces ≈ Nombre total de jetons (~170 000) - Jetons parasites. Dex cite l’article de Jeff Huntley intitulé « Ralph Wigum as a Software Engineer » pour démontrer que le fait de parcourir les mêmes invites en boucle (plutôt que d’itérer aléatoirement) peut améliorer considérablement les résultats. 2. Contrôle du contexte des sous-agents : • Utilisé pour isoler des tâches, telles que la « recherche de flux d'informations », sans perturber le contexte principal. Les sous-agents renvoient des réponses structurées (par exemple, nom de fichier + numéro de ligne), évitant ainsi les distorsions d'information qui rappellent le « jeu du téléphone arabe ». Défi : Les systèmes non déterministes sont sujets à confusion ; il est donc nécessaire de fournir des instructions précises sur la manière dont l’agent parent doit donner des instructions à l’agent enfant. 3. Compression intentionnelle fréquente et flux de travail en trois étapes : • Phase de recherche : Utiliser des modèles d’invite open source pour générer une vue d’ensemble du système (fichiers, flux de données, localisation du problème). Le résultat est concis, facilitant la localisation rapide des agents. • Phase de planification : L’agent doit lister toutes les modifications (documents, extraits de code, étapes de vérification) afin d’établir un « plan de mise en œuvre ». Ce plan est généralement plus court que le code et plus facile à examiner par les humains. • Phase d'implémentation : Sur la base du codage du plan, maintenir l'utilisation du contexte < 40 %. Mettre à jour le plan et redémarrer une nouvelle fenêtre après chaque étape. • Cycle global : Recherche → Planification → Implémentation → Revue humaine → Itération. Dex souligne : il est bien plus efficace de revoir 200 lignes de planification que 2 000 lignes de code, car cela permet de détecter les erreurs rapidement et de maintenir la cohésion de l’équipe, valeur fondamentale de la revue de code. Ces modèles d'invites sont open source et disponibles sur GitHub. Dex admet : « Ce n'est pas de la magie ; il faut les lire attentivement et les adapter. » Étude de cas pratique : De la correction de bugs Rust à l’intégration WASM · Corrections de code Rust : Dex a collaboré avec Vibhav (créateur de BAML), également fondateur de YC, pour corriger en une seule étape les bugs d’une base de code Rust de 300 000 lignes. Le processus a été documenté dans un podcast de 75 minutes, et la pull request a finalement été discrètement fusionnée par le directeur technique, prouvant ainsi son applicabilité aux systèmes existants et l’absence de nécessité de retravail. • Résolution de problèmes complexes : En collaboration avec le PDG de Boundary, nous avons généré/écrit 35 000 lignes de code en 7 heures, en ajoutant la prise en charge de WASM, ce qui équivaut à 1 à 2 semaines de travail d’ingénierie. Cela a validé la faisabilité de la stratégie en environnement de production. Implications et perspectives d'avenir L'idée maîtresse de Dex : les erreurs de code proviennent de la source ; une recherche insuffisante peut engendrer des milliers de lignes de code erronées, tandis qu'une mauvaise planification les amplifie considérablement. Il est donc primordial d'investir dans les spécifications et la compréhension du système, plutôt que de s'enliser dans les détails du code. Son équipe (trois personnes) a consommé un grand nombre de crédits API en un mois, mais a réalisé un gain de temps considérable en ingénierie : les stagiaires ont soumis deux demandes de fusion dès leur premier jour et dix au bout de huit jours ; Dex lui-même n'a ouvert aucun fichier non Markdown pendant deux mois. Perspectives : Les agents de développement auront tendance à se banaliser, mais le défi réside dans la transformation des équipes (privilégier les spécifications dès le départ et les revues fréquentes). Human Layer accompagne cette transformation, des startups de six personnes issues de Y Combinator aux grandes entreprises comptant des milliers d’employés. Adresse vidéo :
Chargement du thread
Récupération des tweets originaux depuis X pour offrir une lecture épurée.
Cela ne prend généralement que quelques secondes.
