
Les méthodes récentes de réparation de programme sont basées sur des approches d'apprentissage en profondeur. ChatGPT est l'une de ces nouvelles méthodes, qui n'est pas principalement destinée à la réparation automatisée de programmes, mais qui lui convient tout de même. Cependant, les performances de correction des bogues de ChatGPT ne sont pas encore claires.
Aussi, dans un article, des chercheurs ont évalué ChatGPT sur l'ensemble de référence de correction de bogues standard, QuixBugs, et ont comparé les performances avec les résultats de plusieurs autres approches rapportées dans la littérature.
C'est ainsi que les chercheurs ont donné 40 morceaux de code bogué à quatre systèmes de correction de code différents : ChatGPT, Codex, CoCoNut et Standard APR. Essentiellement, ils ont demandé à ChatGPT*: « Qu'est-ce qui ne va pas avec ce code*? » puis ont copié et collé le code dans la fonction de chat.
Lors du premier passage, ChatGPT a fait à peu près aussi bien que les autres systèmes. ChatGPT a résolu 19 problèmes, Codex en a résolu 21, CoCoNut en a résolu 19 et les méthodes APR standard en ont résolu sept. Les chercheurs ont trouvé que ses réponses étaient les plus similaires à Codex, ce qui n'était « pas surprenant, car ChatGPT et Codex appartiennent à la même famille de modèles de langage ».
Cependant, la possibilité de discuter avec ChatGPT après avoir reçu la réponse initiale a fait la différence, ce qui a finalement permis à ChatGPT de résoudre 31 questions et de surpasser facilement les autres, qui fournissaient des réponses plus statiques.
Et les chercheurs d'indiquer :
Un avantage puissant de ChatGPT est que nous pouvons interagir avec le système dans un dialogue pour spécifier une demande plus en détail[...]. Nous constatons que les performances de correction de bogues de ChatGPT sont compétitives par rapport aux approches communes d'apprentissage en profondeur CoCoNut et Codex et nettement meilleures que les résultats rapportés pour les approches de réparation de programme standard. Contrairement aux approches précédentes, ChatGPT offre un système de dialogue à travers lequel des informations supplémentaires, par exemple, la sortie attendue pour une certaine entrée ou un message d'erreur observé, peuvent être saisis. En fournissant de tels conseils à ChatGPT, son taux de réussite peut être encore augmenté, corrigeant 31 bogues sur 40, surpassant l'état de l'art.
Par exemple, lorsque les chercheurs ont posé la question illustrée ci-dessous, ils s'attendaient à ce que ChatGPT recommande de remplacer n^=n-1 par n&=n-1, mais la première chose que ChatGPT a dite a été*: « Je ne peux pas dire si le programme a un bogue sans plus d'informations sur le comportement attendu ». Sur la troisième réponse de ChatGPT, après plus d'incitations des chercheurs, il a trouvé le problème : « La fonction ne marche pas. Pour l'entrée 1, il semble s'agir d'une boucle infinie ».
Cependant, lorsque d'autres ont saisi la même question dans ChatGPT, il a répondu différemment. Plutôt que d'avoir à lui dire quel est le comportement attendu, il a deviné ce que c'était. ChatGPT apprend toujours sur la base des contributions des utilisateurs, et il semble qu'il ait appris ce que ce morceau de code est censé faire, peut-être des chercheurs qui ont réalisé l'étude. L'échange que les observateurs extérieurs ont eu était différent de celui des chercheurs et sera probablement différent la prochaine fois également pour d'autres curieux qui voudraient s'y essayer.
Une intégration de fonctionnalité dans les outils Microsoft ?
GitHub Copilot
Fin juin 2022, Copilot était proposé dans le cadre d'une Preview technique sur invitation uniquement, promettant de faire gagner du temps en répondant au code des utilisateurs par ses propres suggestions intelligentes. Ces suggestions sont basées sur des milliards de lignes de code public dont les utilisateurs ont publiquement contribué à GitHub, en utilisant un système d'IA appelé Codex de la société de recherche OpenAI.
GitHub décrit Copilot comme l'équivalent IA de la « programmation en paire », dans laquelle deux développeurs travaillent ensemble sur un seul ordinateur. L'idée est qu'un développeur peut apporter de nouvelles idées ou repérer des problèmes que l'autre développeur aurait pu manquer, même si cela nécessite plus d'heures de travail.
Dans la pratique, cependant, Copilot est plutôt un outil utilitaire de gain de temps, qui intègre les ressources que les développeurs devraient autrement chercher ailleurs. Lorsque les utilisateurs saisissent des données dans Copilot, l'outil leur suggère des extraits de code à ajouter en cliquant sur un bouton. Ainsi, ils n'ont pas à passer du temps à chercher dans la documentation de l'API ou à rechercher des exemples de code sur des sites spécialisés.
Un réseau neuronal dans GitHub Copilot est entraîné à l'aide de volumes massifs de données, constituées du code : des millions de lignes téléchargées par les 65 millions d'utilisateurs de GitHub, la plus grande plateforme au monde permettant aux développeurs de collaborer et de partager leur travail. Le but est que Copilot en apprenne suffisamment sur les modèles de code pour pouvoir faire du hacking lui-même. Il peut prendre le code incomplet d'un partenaire humain et terminer le travail en ajout les parties manquantes. Dans la plupart des cas, il semble réussir à le faire. GitHub prévoit de vendre l'accès à l'outil aux développeurs.
Comme pour la plupart des outils d'IA, GitHub souhaite également que Copilot devienne plus intelligent au fil du temps en fonction des données qu'il collecte auprès des utilisateurs. Lorsque les utilisateurs acceptent ou rejettent les suggestions de Copilot, son modèle d'apprentissage automatique utilisera ce retour d'information pour améliorer les suggestions futures, de sorte que l'outil deviendra peut-être plus humain à mesure qu'il apprendra.
Si l'approche de ChatGPT n'est pas la même, étant donné qu'il ne s'agit pas d'un outil spécialement conçu pour assister les développeurs, le chatbot pourrait néanmoins contribuer durant les phases de développement en indiquant aux développeurs où se trouvent leurs potentielles erreurs. Mais il s'agit d'une épée à double tranchant dans la mesure où si l'outil « apprend » de leur code, il se servira de ces connaissances pour aider d'autres personnes, exposant potentiellement des informations confidentielles comme cela a déjà été le cas avec Amazon.
Microsoft va intégrer ChatGPT dans Azure
Microsoft rendra bientôt la technologie de chat d'IA générative disponible dans le cadre de son service Azure OpenAI. Ce service est destiné aux entreprises et aux développeurs qui utilisent la plateforme Azure de Microsoft pour...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.