Une meilleure IA pour développer du code
Date:
Mis à jour le 17/06/2025
Avec l’irruption de ChatGPT, le monde a découvert comment l’Intelligence Artificielle dite “générative” pouvait aider à rédiger des e-mails, écrire des romans, traduire des textes, produire des rapports ou composer des dissertations. Très vite aussi, les développeurs se sont emparés de cette technologie pour écrire plus facilement leurs programmes. Puis des assistants spécialisés n’ont pas tardé à apparaître pour leur faciliter encore plus la tâche.
Exemple emblématique : Copilot. Conçue avec l’aide de la société OpenAI à qui l’on doit déjà ChatGPT, cette IA s’insère comme une simple extension dans l’environnement de développement intégré (IDE) de GitHub, la plus grande plateforme mondiale de production de code.
"De plus en plus de développeurs utilisent l’outil pour faire de la programmation et des tâches liées à la conception de programmes : compréhension de code, correction de bugs, migration des logiciels, etc. Donc, clairement, il y a quelque chose qui se passe. Et d’une certaine façon, c’est un peu le prolongement de ce qui existe déjà. Quand on utilise un traitement de texte, il y a un correcteur orthographique qui nous signale les fautes. Quand on écrit du code, il y a un IDE qui utilise différentes couleurs pour donner de la lisibilité au texte, qui pointe nos erreurs, qui nous fait des suggestions, etc."
Image
Verbatim
Désormais, l’IA générative peut apporter un support encore plus intéressant parce qu’elle a cette capacité à produire du code ou des explications souvent pertinentes et difficiles à générer sans ce genre de technologies. On n’y arriverait guère avec des approches classiques"
Auteur
Poste
Professeur à l’INSA Rennes et chercheur dans l’équipe DiverSE, co-responsable de LLM4Code
LLM4Code est un défi Inria[1] qui réunit pour 4 ans les équipes de recherche Argo, Cash, Deducteam, DiverSE[2], Evref, Flowers, Mnemosyne, Picube, et Spirals, ainsi que le Service d’expérimentation et de développement d’Inria (SED), l’archive de code Software Heritage, le Laboratoire bordelais de recherche en informatique (LaBRI) et la société Sopra Steria.
Un des objectifs de LLM4Code est de proposer une brique logicielle pour Rocq Prover (anciennement Coq). Initié par Inria, il y a une quarantaine d’années, cet outil constitue l’un des principaux assistants de preuve utilisé dans le monde pour effectuer de la vérification formelle de logiciels critiques (santé, transport, énergie...). “Écrire des preuves dans Rocq s’avère difficile intellectuellement parce que ce sont des mathématiques. Il faut employer les bonnes primitives, les bonnes tactiques, etc. En pratique, pour écrire ces preuves, les utilisateurs s’appuient sur un IDE comme VS Code, par exemple. C’est un support intéressant, mais nous pensons pouvoir faire mieux. Un LLM pourrait suggérer des complétions, des bouts de Rocq pour gagner en productivité et aller plus vite de façon à se concentrer sur l’essentiel. Nous voudrions parvenir à fournir ce support qui s’intégrerait alors dans l’IDE.”
Le Défi Inria s’intéresse aussi à Lean, un équivalent de Rocq développé dans la communauté académique américaine. “Souvent, les programmes écrits en langage Rocq ne sont pas disponibles en Lean, et inversement. À l’aide de l’IA, nous aimerions traduire ces programmes dans les deux sens pour qu’ils soient accessibles à tous. Et à propos de Lean, il est intéressant de noter au passage qu’un mathématicien comme Terence Tao, médaille Fiels 2006, expérimente déjà l'IA en conjonction avec ce langage pour prouver des théorèmes. Il l’utilise pour obtenir des suggestions, par exemple.”
Les scientifiques appartiennent à trois domaines : IA, génie logiciel et méthodes formelles. “Nous pensons que la combinaison de ces expertises va nous permettre de proposer des contributions intéressantes.”
L’Intelligence Artificielle utilisée pour le développement de programmes repose sur ce que l’on appelle des grands modèles de langage. On les désigne aussi sous le sigle anglais LLM. Contenant des milliers de paramètres, ces immenses réseaux de neurones sont entraînés sur des jeux de données massifs. En l’occurrence ici : des millions de lignes de code provenant de précédents logiciels. L’apprentissage initial exige des ressources de calcul gigantesques.
“L’IA générative possède un potentiel évident. Certaines démonstrations sont bluffantes. On parvient à fabriquer des logiciels en très peu d’interactions. Mais... il existe aussi des cas où les LLM s’avèrent totalement faux ! Et là, cela devient très embêtant, même pour des applications un peu standard qui ne sont pas forcément des logiciels critiques. L’utilisateur peut se retrouver avec des bugs de sécurité, des bugs fonctionnels qui font crasher le système ou qui font consommer beaucoup trop de ressources. Donc, c’est une technologie pour l’instant très fragile et dans beaucoup de cas, on ne peut pas juste considérer le LLM comme une boîte noire magique qui va produire le code.”
Si la fiabilité n’est pas toujours au rendez-vous, il en va de même pour la productivité. “Il y a aussi un phénomène où le LLM effectue 90% du travail. Mais les 10% restants, il ne les fait pas. Et ceux-là, ils sont très très durs à atteindre. Encore plus quand le développeur doit comprendre les 90% qui ont été générés par quelque chose qui ne vient pas de lui.”
Le travail du développeur ne concerne pas que la conception initiale, mais aussi la maintenance. Car aujourd’hui le logiciel est en perpétuelle évolution. Avec ses avantages et ses inconvénients... “On a tous fait cette expérience d’une mise à jour qui tourne mal. L’application devient plus lente. Elle fonctionne moins bien. Ou elle ne fonctionne plus du tout. Avec les LLM, l’espoir est de pouvoir aider les programmeurs à mettre à jour de manière plus fiable et plus rapide.”
Les chercheurs distinguent trois types d’évolution. “D’abord, celle où l’utilisateur change simplement de version. Ensuite, celle où il reconfigure son logiciel. Il va dans le menu préférences. Il change quelque chose. Et là, tout s’écroule... On a vu le cas récemment avec la paralysie de certains aéroports. Enfin, il y a le problème des logiciels programmés avec des langages vieillissants. Ils sont partout. Ils font tourner la planète. Mais on n’arrive pas à migrer ces applications de manière fiable vers de nouvelles technologies. Il faut le faire en production. Il y a des millions de lignes de code. On ne peut pas traduire ligne-à-ligne car ce serait incohérent. On n’a pas les outils pour assister les développeurs. Et pire que cela, on a de moins en moins d’expertise sur ces langages car les spécialistes partent à la retraite.’’ D’où l’idée d’utiliser des LLM pour la modernisation.
Un des principaux moyens d’améliorer la performance du LLM consiste à le nourrir de données pertinentes. Pour cela, les chercheurs vont pouvoir puiser dans Software Heritage. Lancée par Inria et soutenue par l'Unesco, cette archive ouverte collecte les logiciels disponibles publiquement sous forme de code source. Elle héberge 19 milliards de fichiers uniques issus de plus de 300 millions de projets.
Un autre projet de recherche Code Commons, a d’ailleurs pour vocation de fournir une nouvelle infrastructure de données, à partir de Software Heritage, pour entraîner ou spécialiser des LLMs pour la génération de code logiciel. Ce projet est appelé à positionner la France dans le domaine de l’IA et du logiciel, et pourra alimenter les recherches dans LLM4Code.
Outre les données existantes, le Défi LLM4code va aussi produire des données synthétiques afin de renforcer la capacité des LLM. “Pour cela, nous utilisons parfois des outils qui ne viennent pas de l’Intelligence artificielle. Il peut s’agir, par exemple, de traduire un langage quelconque vers un autre à l’aide de compilateurs qui ont le mérite d’être fiables et déterministes. On peut composer ainsi de multiples combinaisons d’outils et de données (traces d’exécution, messages d’erreurs, etc.) que l’on donne ensuite au LLM pour le rendre meilleur. L’important est de l’enrichir à l’aide d’une diversité de sources.”
Autre méthode de spécialisation : le renforcement à l’aide des préférences utilisateurs. “Je dresse le LLM en lui donnant des exemples. Voici ma question. Voici la réponse que j’attends. Voici la façon de la formater. Cette technique a été utilisée par ChatGPT avec le recrutement de beaucoup d’annotateurs.”
Les résultats de recherche prendront essentiellement la forme de briques logicielles et d’extensions que les chercheurs souhaitent ensuite pouvoir intégrer dans des IDE existants comme VS Code par exemple.
Toutes ces avancées augurent-elles la disparition du développeur ? “Non, assure Mathieu Acher. Ce genre de discours relève du fantasme. En l’état des connaissances actuelles, on n’est vraiment pas dans cette situation et plutôt dans l’ambition d’augmenter les développeurs avec de l’IA.”
Titre