Selon une récente étude d'une équipe de l'université américaine de Purdue (Indiana), ChatGPT donne des réponses erronées à des questions de programmation logicielle une fois sur deux. CIO a interrogé les chercheurs Samia Kabir, Bonan Kou et David Udo-Imeh, ainsi que le professeur assistant Tianyi Zhang, à l'origine de cette étude encore en prépublication. Ceux-ci ne prônent pas l'interdiction des IA génératives dans la programmation, mais invitent l'industrie du logiciel et les DSI à réfléchir aux garde-fous à mettre en place pour limiter les risques.
Avez-vous été surpris par les résultats de votre étude ? Vous attendiez-vous à de tels niveaux d'erreurs de GPT ?
Nous ne sommes pas surpris que ChatGPT fasse beaucoup d'erreurs factuelles et d'incohérences lorsqu'il répond à des questions de programmation, puisqu'il y a eu des études antérieures dans d'autres domaines (par exemple, sur des questions de bon sens) montrant que ChatGPT et les autres LLM sont susceptibles de générer des réponses incorrectes. Le fait que Bard ait mal répondu à la question sur le télescope spatial James Webb en est un bon exemple. Par contre, nous sommes un peu surpris qu'une partie non négligeable (34%) des participants à notre étude testant les réactions des utilisateurs ait préféré ChatGPT en raison des informations complètes, bien formulées et d'apparence humaine que fournit cet outil. Il s'agit en fait d'une bonne indication pour Stack Overflow et les autres forums de questions/réponses en ligne, car il a été rapporté que Stack Overflow souffre de réponses ou commentaires toxiques et d'attitudes peu accueillantes.
On pourrait penser que, les langages informatiques étant déterministes, l'IA générative s'en sortirait mieux qu'avec le langage naturel. Comment expliquez-vous que ce ne soit pas le cas ?
Répondre à des questions de programmation est très différent de générer du code. Les questions de programmation sont toujours rédigées en langage naturel et de nombreuses questions contiennent un mélange d'extraits de code, de messages d'erreur et de commentaires en langage naturel (voir notamment cet exemple sur Stack Overflow).
En outre, pour répondre aux questions de programmation, il faut disposer d'une grande expertise dans le domaine, d'une compréhension approfondie des concepts et de connaissances en matière de programmation. Nous pensons donc qu'il est plus difficile de répondre à des questions de programmation qu'à des questions courantes.
Comment expliquez-vous que les utilisateurs accordent une telle confiance - non justifiée - aux réponses de l'IA ?
C'est principalement parce que les réponses de ChatGPT semblent très plausibles, complètes et sont formulées poliment. Comme le montre l'analyse linguistique de notre étude, par rapport aux réponses de Stack Overflow, les réponses de ChatGPT sont plus formelles, expriment une pensée plus analytique, montrent plus d'efforts pour atteindre les objectifs fixent et laissent transparaître moins d'émotions négatives. Dans la communication interhumaine, nous les humains avons généralement davantage tendance à croire aux choses qui semblent formelles, convaincantes et polies.
De facto, l'IA générative est en train d'entrer dans les moeurs dans la programmation logicielle au sein des entreprises. A quelles conséquences peut-on s'attendre ?
Il est très probable que certaines erreurs dans les codes ou réponses générés par les LLM se glissent dans les logiciels commerciaux. Par exemple, les LLM peuvent générer du code qui utilise des API non sécurisées ou recommander une API obsolète. Les LLM tels que GPT sont formés à partir d'une quantité massive de textes provenant d'Internet, sans filtrer le code vulnérable ou les réponses obsolètes. Ces outils ne comprennent donc pas vraiment la sécurité des logiciels, la confidentialité, la robustesse, etc. De plus, des études récentes ont montré qu'il est possible d'empoisonner les LLM pour générer du code vulnérable. Les développeurs de logiciels ne devraient donc pas trop compter sur l'IA. Ils doivent rester vigilants et passer plus de temps à examiner le code et les réponses générés par les LLM.
Malgré tout, quels conseils donneriez-vous aux CIO et CTO qui souhaitent utiliser l'IA sur certaines taches de programmation ?
Tout d'abord, nous ne pensons pas que l'utilisation de l'IA pour la programmation soit une mauvaise chose en soit et que les entreprises devraient l'interdire à tout prix. L'IA peut en effet renforcer les capacités des développeurs de logiciels et améliorer leur productivité. Nous devrions donc l'adopter tout en développant des mécanismes de régulation. Au minimum, les DSI et CTO peuvent organiser des sessions de formation pour éduquer leurs développeurs sur l'ensemble des limites des outils de programmation basés sur l'IA. Ils peuvent également vouloir revoir leurs procédures et pratiques d'examen de code pour s'adapter aux outils d'IA. Par exemple, en affectant davantage d'examinateurs au code généré par l'IA.
Par ailleurs, les récentes innovations en matière d'IA pour la programmation rappellent les innovations dans le domaine des voitures et des avions. De nombreuses innovations s'accompagnent de risques élevés au départ. Mais cela ne doit pas nous empêcher de continuer à perfectionner ces innovations pour qu'elles soient par la suite bien utilisées et sûres. L'industrie et le monde universitaire devraient réfléchir à ce que pourraient être la "ceinture de sécurité" et les "systèmes d'évitement des collisions" pour la programmation basée sur l'IA, tout en continuant à améliorer les performances globales des modèles de Machine Learning.
Qu'est que l'IA générative change dans les cursus universitaires orientés sur la programmation ?
Nous pensons que l'IA générative va transformer l'enseignement autour de la science, de la technologie, de l'ingénierie et des mathématiques. De nombreux étudiants de nos cours utilisent ChatGPT pour générer du code pour leurs travaux de programmation et répondre à des questions de programmation. D'une part, cela rend les connaissances et les réponses plus accessibles aux étudiants. Pour de nombreuses questions, les étudiants n'ont plus besoin de se rendre à l'université aux heures de bureau et demander à l'enseignant ou au professeur de les guider. Il leur suffit désormais de s'adresser à ChatGPT. Même si ChatGPT ne donne pas toujours la bonne réponse, il peut néanmoins fournir des indications utiles. D'un autre côté, cela rend l'évaluation des étudiants très difficile, car déterminer si une solution est basée sur les réponses de ChatGPT ou non reste ardu.
Certains se demandent si les élèves peuvent encore apprendre autant qu'avant l'apparition de ChatGPT. Nous ne sommes pas très inquiets à ce sujet, car nous savons que les réponses de ChatGPT contiennent souvent des erreurs et que les étudiants doivent inspecter soigneusement ses réponses et corriger les erreurs pour obtenir un résultat satisfaisant. Ce processus d'inspection aidera les étudiants à apprendre. Les éléments mécaniques tels que les règles syntaxiques des langages de programmation pourraient devenir moins importants à enseigner à l'ère de l'IA générative. ChatGPT est très efficace pour mémoriser les éléments mécaniques et libérer les étudiants du travail de mémorisation. Nous pensons que les programmes universitaires devraient donc se concentrer davantage sur l'enseignement de choses fondamentales, conceptuelles et créatives telles que les modèles de conception de logiciels, la conception d'architectures et les algorithmes que ChatGPT a souvent du mal à comprendre. Or, nous avons l'impression qu'aujourd'hui, de nombreux devoirs et examens de programmation testent encore la capacité des étudiants à mémoriser des solutions et des règles de syntaxe.