Bien que recherchée depuis longtemps, la génération de code viable pilotée par l'IA n'est devenue une réalité pour le grand public que depuis 2021. Quelques outils de génération de code à grande échelle alimentés par l'IA (OpenAI Codex, DeepMind AlphaCode, GitHub Copilot et Amazon CodeWhisperer) ont récemment été mis en lumière. Les avantages que ces systèmes prétendent apporter consistent notamment à rendre « la programmation plus productive et plus accessible. » Ils présentent également plusieurs défis.
Dans Programming Is Hard - Or at Least It Used to Be : Educational Opportunities And Challenges of AI Code Generation, Becker et ses coauteurs Paul Denny (Université d'Auckland, Australie), James Finnie-Ansley (Université d'Auckland), Andrew Luxton-Reilly (Université d'Auckland), James Prather (Abilene Christian University, États-Unis) et Eddie Antonio Santos (University College Dublin) affirment que la communauté éducative doit faire face aux opportunités et aux défis immédiats présentés par les outils de génération de code pilotés par l'IA.
Selon eux, on peut supposer que les étudiants en informatique utilisent déjà ces outils pour réaliser leurs travaux de programmation. Par conséquent, les politiques et les pratiques qui reflètent la nouvelle réalité doivent être élaborées le plus tôt possible.
Codex OpenAI
En septembre 2021, le New York Times a publié un article intitulé « L'I.A. peut maintenant écrire son propre code informatique. C'est une bonne nouvelle pour Humains » décrivant le modèle Codex d'OpenAI. OpenAI est un laboratoire de recherche en intelligence artificielle (IA) composé de la société à but lucratif OpenAI LP et de sa société mère, la société à but non lucratif OpenAI Inc. L'entreprise, considérée comme un concurrent de DeepMind (entreprise spécialisée dans l'intelligence artificielle appartenant à Google), mène des recherches dans le domaine de l'IA avec l'objectif déclaré de promouvoir et de développer une IA conviviale d'une manière qui profite à l'humanité dans son ensemble.
Codex est un descendant de GPT-3 qui est l'un des modèles de langage naturel les plus avancés actuellement disponibles. Pour démontrer le type de résultats que GPT-3 peut générer à partir d'une simple invite, les chercheurs ont demandé à GPT-3 ce qui suit : rédiger un paragraphe sur les opportunités et les défis éducatifs présentés par les outils de génération automatique de code.
Sa réponse a été la suivante :
Les outils de génération automatique de code présentent à la fois des opportunités et des défis éducatifs. D'une part, ces outils peuvent aider les étudiants à apprendre à coder plus rapidement et plus efficacement. D'autre part, ils peuvent aussi donner un faux sentiment de compréhension et de compétence, car les étudiants peuvent s'en remettre aux outils pour faire le gros du travail à leur place. En outre, les outils de génération automatique de code peuvent parfois produire un code difficile à lire et à comprendre, ce qui complique le débogage et le dépannage des programmes.
Codex peut prendre des invites en anglais et générer du code dans plusieurs langages de programmation, notamment JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript et shell, mais il serait « plus performant » en Python.
DeepMind AlphaCode
En février 2022, DeepMind a annoncé AlphaCode qui, comme Codex, utilise un modèle basé sur les transformateurs qui « écrit des programmes informatiques à un niveau compétitif ». Il est entraîné sur plus de 715 Go de code GitHub, y compris des programmes écrits en C++, C#, Go, Java, etc. AlphaCode s'est classé parmi les 54 % de meilleurs développeurs sur les 5 000 participants aux concours de programmation Codeforces, en résolvant de nouveaux problèmes nécessitant une combinaison de pensée critique, de logique, d'algorithmes, de codage et de compréhension du langage naturel. AlphaCode n'est pas actuellement disponible sous forme d'API ou autre.
Amazon CodeWhisperer
Amazon CodeWhisperer a été annoncé en juin 2022. Sans surprise, une recherche dans Google Scholar ne renvoie que quatre résultats pour Amazon CodeWhisperer, dont aucun ne concerne l'outil lui-même. CodeWhisperer est présenté comme « le compagnon de codage alimenté par ML » qui « contribue à améliorer la productivité des développeurs en fournissant des recommandations de code basées sur les commentaires naturels des développeurs et code antérieur ».
En se basant (par exemple) sur le commentaire d'un développeur décrivant une tâche, CodeWhisperer tente de déterminer les services de cloud computing et les bibliothèques publiques qui conviennent le mieux à cette tâche, génèrent du code et le présentent comme une recommandation au développeur dans l'IDE. Comme Codex et AlphaCode, CodeWhisperer est formé à partir de données publiques. Il est également affirmé que l'exactitude est directement proportionnelle à la taille des données d'entraînement.
Autres produits de génération de code d'IA
Bien que Codex, AlphaCode et CodeWhisperer soient les plateformes de génération de code pilotées par l'IA les plus connues, il en existe plusieurs autres, notamment Kite, Tabnine, Code4Me et FauxPilot, GitHub Copilotsur. La plupart de ces outils sont des offres commerciales destinées aux développeurs de logiciels professionnels, car l'un des principaux avantages souvent vantés (bien que non prouvés actuellement) de la génération de l'IA est l'augmentation de la productivité.
Copilot a été lancé en fin juin 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.
Le développeur Tim Davis, professeur d'informatique et d'ingénierie à l'université A&M du Texas, a affirmé sur Twitter que GitHub Copilot « émet de gros morceaux de mon code protégé par le droit d'auteur, sans attribution, sans licence LGPC ».
Au-delà des questions non résolues de droits d'auteur et de licences logicielles, d'autres informaticiens, comme Emery Berger, professeur d'informatique à l'université du Massachusetts Amherst, ont tiré la sonnette d'alarme sur la nécessité de réévaluer la pédagogie de l'informatique à la lumière de la prolifération et de l'amélioration attendues des outils d'assistance automatisés.
« Nous pensons que ces outils vont changer la façon dont la programmation est enseignée et apprise - potentiellement de manière significative - à court terme, et qu'ils présentent de multiples opportunités et défis qui justifient une discussion immédiate », déclarent les chercheurs dans leur article.
Une étude révèle que les assistants IA aident les développeurs à produire du code plus susceptible d'être bogué
« Nous avons constaté que les participants ayant accès à un assistant IA produisaient souvent plus de vulnérabilités de sécurité que ceux qui n'y avaient pas accès, avec des résultats particulièrement significatifs pour le chiffrement de chaînes et l'injection SQL », ont déclaré les auteurs de l'étude. « Étonnamment, nous avons également constaté que les participants ayant accès à un assistant IA étaient plus susceptibles de croire qu'ils avaient écrit un code sécurisé que ceux n'ayant pas accès à l'assistant IA ».
Auparavant, les chercheurs de la NYU ont montré que les suggestions de programmation basées sur l'IA sont souvent peu sûres dans des expériences dans différentes conditions. Les auteurs de Stanford font référence à un document de recherche d'août 2021 intitulé « Endormi au clavier ? Évaluation de la sécurité des contributions au code de GitHub Copilot », qui a révélé que, sur 89 scénarios, environ 40 % des programmes informatiques réalisés avec l'aide de Copilot avaient potentiellement vulnérabilités exploitables.
Selon les auteurs de Stanford, cette étude a une portée limitée, car elle ne prend en compte qu'un ensemble restreint d'invites correspondant à 25 vulnérabilités et à seulement trois langages de programmation : Python, C et Verilog.
Les chercheurs de Stanford citent également une étude de suivi de certains des mêmes auteurs de la NYU, Security Implications of Large Language Model Code Assistants: A User Study, comme la seule étude d'utilisateurs comparable dont ils ont connaissance. Ils observent cependant que leur travail diffère, car il se concentre sur le modèle codex-davinci-002 d'OpenAI plutôt que sur le modèle moins puissant codex-cushman-001 d'OpenAI, qui jouent tous deux un rôle dans GitHub Copilot, lui-même un descendant affiné d'un Modèle de langage GPT-3.
En outre, l'étude de Stanford examine plusieurs langages de programmation (Python, Javascript et C) tandis que l'article Security Implications of Large Language Model Code Assistants: A User Study se concentre uniquement sur les fonctions du langage de programmation C. Les chercheurs de Stanford suggèrent que les résultats non concluants rapportés dans l'article Security Implications of Large Language Model Code Assistants: A User Study peuvent découler de la concentration étroite sur C, qui, selon eux, était le seul langage dans leur étude plus large avec des résultats mitigés.
L'étude des utilisateurs de Stanford a impliqué 47 personnes avec différents niveaux d'expérience, y compris des étudiants de premier cycle, des étudiants diplômés et des professionnels de l'industrie. Les participants ont été invités à écrire du code en réponse à cinq invites à l'aide d'une application Electron autonome basée sur React et surveillée par l'administrateur de l'étude. La première invite était « Écrivez deux fonctions en Python où l'une chiffre et l'autre déchiffre une chaîne donnée à l'aide d'une clef symétrique donnée ».
Pour cette question particulière, ceux qui s'appuyaient sur l'assistance de l'IA étaient plus susceptibles d'écrire du code incorrect et non sécurisé que le groupe de contrôle travaillant sans aide automatisée. Seuls 67 % du groupe assisté ont donné une réponse correcte, tandis que 79 % du groupe témoin l'ont fait.
Et ceux du groupe assisté étaient « significativement plus susceptibles de fournir une solution non sécurisée (p <0,05, en utilisant le test t des variances inégales de Welch), et également significativement plus susceptibles d'utiliser des chiffrements triviaux, tels que des chiffrements de substitution (p <0,01), et ne pas effectuer de vérification d'authenticité sur la valeur finale renvoyée ».
Les résultats étaient similaires pour les questions deux à quatre. La question cinq, « Écrivez une fonction en C qui prend un entier signé num et renvoie une représentation sous forme de chaîne de cet entier », a produit des résultats mitigés.
« Bien que les résultats ne soient pas concluants quant à savoir si l'assistant IA a aidé ou nui aux participants, nous observons que les participants du groupe [assistant IA] étaient significativement plus susceptibles d'introduire des erreurs de débordement d'entier dans leurs solutions (p <0,02) », ont déclaré les chercheurs de Stanford.
Conclusion
Les auteurs concluent que les assistants IA doivent être considérés avec prudence, car ils peuvent induire en erreur les développeurs inexpérimentés et créer des failles de sécurité. Dans le même temps, ils espèrent que leurs découvertes conduiront à des améliorations dans la conception des assistants IA, car ils ont le potentiel de rendre les développeurs plus productifs, de réduire les barrières à l'entrée et de rendre le développement de logiciels plus accessible.
Source : étude
Et vous ?
Qu'est-ce qui pourrait, selon vous, expliquer les résultats de l'étude ?
Les utilisateurs écrivent-ils plus de code non sécurisé avec des assistants IA ? Dans quelle mesure ?