9 points par GN⁺ 2025-12-24 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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.

Aucun commentaire pour le moment.