- Pour utiliser efficacement les LLM dans de grandes bases de code, il est essentiel d’investir dans le « guidage » (guide) et la « supervision » (oversight)
- Le guidage fournit le contexte et l’environnement pour aider le LLM à faire de meilleurs choix, tandis que la supervision vérifie les résultats et donne la direction à suivre
- Il est important de construire une bibliothèque de prompts afin que le LLM puisse comprendre les règles, la documentation et les bonnes pratiques de la base de code
- La gestion de la dette technique, la simplicité de la structure du code, sa modularité et sa cohérence sont directement liées à l’amélioration de la compréhension du code et de la productivité du LLM
- Des mécanismes automatisés de supervision et de vérification sont essentiels à la scalabilité à long terme en aidant le LLM à générer un code sûr et cohérent
Concepts clés pour faire évoluer les LLM
- La manière d’appliquer les LLM à de grandes bases de code n’est pas encore pleinement établie, mais investir dans le guidage et la supervision est présenté comme l’approche la plus efficace
- Le guidage (Guidance) désigne le contexte et l’environnement qui aident le LLM à faire les bons choix, tandis que la supervision (Oversight) consiste à vérifier les résultats générés et à en ajuster la direction
Investir dans le guidage
- Pour permettre au LLM de produire du code de haute qualité dès la première tentative, c’est-à-dire en « one-shot », il faut un guidage clair
- À l’inverse, quand le résultat est inadéquat et nécessite une correction manuelle, on tombe dans le rework, ce qui est inefficace
- Comme le LLM génère tous les choix présents dans le code — noms de variables, structure des fonctions, stack technique, etc. — l’idéal est que le prompt contienne uniquement les exigences métier, tout le reste pouvant être inféré ou déjà encodé
Construire une bibliothèque de prompts
- Une bibliothèque de prompts est un ensemble de contexte destiné au LLM, comprenant la documentation de la base de code, les bonnes pratiques et des cartes structurelles
- Chaque fois que la sortie du LLM dévie, il faut examiner « ce qui aurait dû être clarifié » et l’ajouter à la bibliothèque
- L’équilibre entre exhaustivité et concision est essentiel
- Dans l’exemple, des documents comme
@prompts/How_To_Write_Views.md, @prompts/The_API_File.md, etc. sont fournis au LLM pour guider le développement de fonctionnalités
- Les prompts doivent être suffisamment spécifiques, mais il faut tout de même relire chaque ligne du code généré
Environnement et qualité du code
- Une base de code chargée en dette technique (technical debt) réduit l’efficacité d’utilisation des LLM
- Le cas de Meta est cité pour souligner que la dette technique a compliqué l’atteinte des objectifs d’automatisation
- Un code propre, modulaire, avec un nommage clair et une structure simple améliore la compréhension et la précision du LLM
- Dans l’exemple Django, chaque application place son point d’entrée dans un fichier
_api.py, afin de structurer le projet pour que le LLM trouve rapidement les fonctionnalités nécessaires
- Exemple :
visit_api.handoff_to_doctor(user) comme point d’accès externe unifié
- Le motif
_api est explicité dans la bibliothèque de prompts pour orienter le LLM vers le bon emplacement
Investir dans la supervision
- L’automatisation par LLM doit être pensée non pas comme un remplacement des ingénieurs, mais comme un moyen de renforcer l’équipe
- La supervision implique des investissements dans l’équipe, l’alignement (alignment) et les workflows
- À l’échelle de l’équipe, il est important d’améliorer les capacités de conception, ce qui se traduit ensuite par une meilleure qualité architecturale
- Parmi les moyens de renforcer les compétences en design, on cite la lecture de livres, de blogs et de code, la reproduction de masterworks, ainsi que la pratique d’implémentations directes
- Exemples : analyser du code de TLDraw, SerenityOS Jakt, etc. pour affiner son sens de la conception
Supervision automatisée
- Une partie de la validation de conception peut être automatisée de manière programmatique
- Exemple : fournir un feedback immédiat dans l’environnement en cas d’erreur de type ou de violation de règle
- La « safety » consiste à protéger les abstractions
- Selon la définition de Pierce, un langage sûr garantit qu’un programmeur ne puisse pas casser involontairement les abstractions
- Exemple : automatiser, via un script d’inspection basé sur l’AST, une règle interdisant l’accès direct aux fichiers internes entre applications Django
- Détection d’accès illégaux de la forme
from visit import logic.internal_file
Vérification (Verification)
- Au-delà de la conception et de l’implémentation, l’étape de vérification (code review, QA) est indispensable pour garantir la qualité
- À mesure que la charge de travail augmente, la vitesse de revue devient un goulot d’étranglement ; plusieurs pistes d’amélioration sont proposées
- Réduire les barrières pour permettre de faire la QA même sans environnement de développement
- Mettre en place un environnement où écrire des tests est simple, notamment pour la génération de données de test
- Documenter les retours récurrents sur les PR afin de permettre au LLM d’automatiser une partie de la revue
- Intégrer les règles de sécurité dans les valeurs par défaut du framework
Conclusion et observations complémentaires
- Les LLM fonctionnent particulièrement bien sur les projets greenfield
- Parce qu’il n’existe pas encore de contexte hérité et que les exigences de cohérence y sont moindres
- Plus un projet grandit, plus la cohérence et la modularité déterminent la productivité
- Une structure modulaire réutilisant des composants validés est la clé d’un développement efficace
Aucun commentaire pour le moment.