19 points par letaem77a 2025-04-14 | 8 commentaires | Partager sur WhatsApp

> « Dans cet article, nous allons vérifier avec quelle précision un LLM peut répondre à des questions liées à une base de code lorsqu’on compresse une base de code TypeScript contenant de nombreux fichiers en un seul fichier JavaScript via le bundling, puis qu’on le lui transmet. »

  • Préparation d’une base de code de serveur web basée sur NestJS
  • Compression du code (bundling) avec esbuild
  • Le code compressé est inséré dans le prompt
  • Envoi du prompt à ChatGPT o3-mini
  • Vérification de la précision des réponses aux questions liées à la base de code
  1. Test de génération Swagger : dans la plupart des essais, plus de 19 endpoints sur 21 ont pu être documentés correctement
  2. Test de demande d’explication des endpoints API : génération réussie de manuels pour non-développeurs et développeurs
  • Des limites existent
  • Conclusion
    > « Pour faire du RAG sur l’ensemble d’une base de code avec un LLM, nous avons conçu un test consistant à compresser toute la base de code en un seul fichier avant de la transmettre au LLM.
    >
    > En compressant la base de code telle quelle avec les outils de bundling existants, le LLM a pu produire une documentation API pour l’ensemble de la base de code, ou rédiger un manuel détaillé pour une API spécifique.
    >
    > Quant à la perte d’information survenant lors de la compression de la base de code, nous estimons qu’elle pourrait être compensée par une recherche sémantique supplémentaire sur les fichiers d’origine. »

8 commentaires

 
mendong 2025-04-14

Peut-on appeler cela du RAG si l’on place un fichier bundle dans le prompt ou qu’on le joint à l’application pour interroger le LLM ? Je me demande quelle partie correspond à la récupération.

 
labeldock 2025-04-14

Je pense un peu la même chose.

 
bejunth 2025-04-14

Le LLM ne fait-il pas une récupération à partir des fichiers regroupés pour retrouver ensuite le code d’origine ?

 
winterjung 2025-04-14

C’est intéressant. Il semble qu’il comprenne assez bien même avec du JS minifié. Je me dis aussi qu’il serait utile de lui fournir la structure des répertoires comme contexte supplémentaire en utilisant des outils présentés dans https://fr.news.hada.io/topic?id=19552 ou https://fr.news.hada.io/topic?id=19540.

 
apkas 2025-04-14

Comme on fait énormément de code avec les LLM ces temps-ci, la question de transmettre l’information de manière efficace se pose en permanence, donc merci pour cette expérimentation intéressante.

Il y a aussi eu à l’étranger des tentatives consistant à extraire la syntaxe d’une codebase sous forme de graphe pour l’interroger,
mais le bundling me semble être une approche plus facile à appliquer de manière générale. (si le langage prend en charge le bundling)
https://x.com/daniel_mac8/status/1908332949251948808

En revanche, comme les performances de Gemini sont vraiment très bonnes en ce moment, ce serait encore plus intéressant de comparer avec o3.

 
unqocn 2025-04-14

J’ai trouvé cela passionnant à lire. Pouvoir extraire la logique métier à ce point à partir d’un code source bundle... on dirait que le coût du reverse engineering d’une web app écrite en SPA pourrait lui aussi être considérablement réduit.

 
xguru 2025-04-14

Oh, j’allais le lire, mais le blog renvoie actuellement une erreur 500.

 
letaem77a 2025-04-14

Mon blog semble instable. Si vous n’arrivez pas à y accéder, vous pouvez lire le contenu ici sur gist.github.com.