IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Génération de code à l'aide de grands modèles de langage : 62 % du code généré contient des erreurs d'API
Qui auraient des conséquences inattendues si le code était introduit dans un logiciel réel

Le , par Jade Emy

11PARTAGES

7  0 
Récemment, les grands modèles de langage (LLM) ont montré une capacité extraordinaire à comprendre le langage naturel et à générer du code de programmation. Les ingénieurs logiciels ont l'habitude de consulter les LLM lorsqu'ils sont confrontés à des questions de codage. Bien que des efforts aient été faits pour éviter les erreurs de syntaxe et aligner le code sur la sémantique prévue, la fiabilité et la robustesse de la génération de code à partir des LLM n'ont pas encore fait l'objet d'une étude approfondie.

La mauvaise utilisation des API dans le code généré pourrait conduire à des problèmes graves, tels que les fuites de ressources, les plantages de programme. Les utilisateurs des services de génération de code LLM sont en fait les développeurs qui sont les plus vulnérables à ce code qui semble correct. Ce sont toujours des développeurs novices qui ne sont pas familiers avec les API que les LLM génèrent du code pour eux. Par conséquent, ils peuvent difficilement détecter les abus dans le code généré par les LLM, ce qui facilite davantage l'application de codes incorrects dans les logiciels du monde réel. Les repères et les ensembles de données d'évaluation de code existants se concentrent sur l'élaboration de petites tâches telles que les questions de programmation dans les entretiens de codage, ce qui s'écarte toutefois du problème des développeurs qui demanderaient au LLM une aide au codage dans le monde réel.


Pour combler cette lacune, Li Zhong et Zilong Wang proposent dans leur travail un ensemble de données RobustAPI pour évaluer la fiabilité et la robustesse du code généré par les LLM. Ils ont recueilli 1208 questions de codage de StackOverflow sur 24 API Java représentatives. Ils ont résumé les schémas d'utilisation abusive courants de ces API et les évaluons sur des LLM courants et populaires. Les résultats de l'évaluation montrent que même pour GPT-4, 62% du code généré contient des abus d'API, ce qui entraînerait des conséquences inattendues si le code était introduit dans un logiciel réel.

Vous pourrez trouver les détails de leur étude dans le lien source.

Source : "A Study on Robustness and Reliability of Large Language Model Code Generation"

Et vous ?

Pensez-vous que cette étude est crédible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

GPT-4 est capable d'améliorer ses performances de 30 % en utilisant un processus d'auto-réflexion, consistant à demander au modèle d'apprendre de ses erreurs pour pouvoir ensuite s'auto-corriger

GPT Pilot pourrait coder l'ensemble d'une application pendant que vous supervisez l'écriture du code, d'après son créateur

92 % des développeurs utiliseraient des outils d'intelligence artificielle selon une enquête de GitHub auprès des développeurs

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 30/09/2024 à 15:56
Le fait de pouvoir lire sur developpez.com des études qui disent le contraire c'est un plus, contrairement aux médias d'opinion qui ne vont s'appesantir que sur un seul coté de l'histoire.
Encore plus utile que les études, c'est de pouvoir lire ici sur le forum du club les témoignages des vrais professionnels, c'est bien plus intéressant que de lire des articles moisis publiés dans les médias génériques écris n'importe comment par des journalistes qui n'y connaissent rien.

A titre personnel, je suis témoin du fait qu'en entreprise le code généré par l'IA est une plaie, c'est bourré de failles, mal écrit, et c'est suffisamment illisible pour être presque impossible à corriger et à faire évoluer, c'est donc un désastre.

Donc après le junior imposteur qui copie du code merdique trouvé sur stackoverflow, voila le baltringue qui colle en entreprises du code donné par chatgpt, qui lui même à pompé un code merdique trouvé sur stackoverflow, quel progrès !
Après l'IA peut être utile dans certains cas, comme par exemple aider à trouver des bugs, mais ensuite c'est au développeur de corriger et de fournir un code fiable, bien écris et lisible.

Du coup les entreprises ne veulent plus embaucher de juniors biberonnés à l'IA, ils préfèrent garder leur vieux développeurs qui codent encore à la main à l'ancienne, avec un cerveau et un clavier
12  0 
Avatar de OuftiBoy
Membre éprouvé https://www.developpez.com
Le 30/09/2024 à 15:26
et bonjour à tous.

Depuis que l'IA est sur toutes les lèvres, on a droit à un article qui nous dit que c'est la panacée, suivit d'un article disant excatement le contraire.

Soit, il faut bien nourrir le site, ce qui succite le débat. Mais devant toute cette frénésie autours de l'IA, ne serait-il pas temps de faire une pause et de débattre du fond des problèmes ou des avantages de ce que propose l'IA, et plus particulièrement de l'IAG ?

L'IA est utilisée dans plusieurs domaines, qui ont des "spécificités" qui lui sont propre. Je vais prendre 4 domaines.

  • Dans l'imagerie médicale, l'IA peut comparer des milliers de radiographies pour assister un docteur spécialisé dans ce domaine, et l'aider a voir ce qu'il n'aurait pas vu, et permettre de poser un diagnostique plus affiné, permettant d'en déduire le meilleur traitement a effectuer par la suite. C'est une bonne chose, tant pour le patient, le docteur et le budget nécessaire. Cette IA peut faire un travail correct, car les radio qu'on lui a soumise on été préalablement "validée" et lui sont fournies avec le diagnostique donné suite à cette radio. Il y a donc une certaine "fiabilité" des données en entrée. Et dans ce domaine qui se nomme "imagerie médical", cela existait déjà bien avant la frénésie autours de l'IA.
  • Dans la production de texte, le principe de l'IAG, est de fournir/déduire, mot après mot, et en se basant sur la suite des mots précédents, le mot suivant du texte en question. Là aussi il y a un "domaine" et une expertise qui est nécessaire. Si le texte qu'on veut générer est de l'ordre d'un roman de science-fiction, les entrées donnée à l'IA devrait, éviter de se baser sur des recettes de cuisine française, chinoise ou arabe. Ici aussi, l'importance de sur quoi a été fournie l'IA est primordiale. Mais c'est déjà plus vaste et donc plus difficile a contrôler. Le danger étant de 2 natures. Soit les données en entrée sont bien filtrées, et ce qui en ressortira manquera fortement d'imagination, soit, si elles mal filtrées, des absurdités (ou Hallucination) seront fortement présente en sortie. Il n'y a donc pas vraiment d'intérêt à l'utilisation d'une IA.
  • Pour un documentaire sur un sujet précis, l'IA qui aide a produire ce documentaire, ne devrait être alimentée que par données précises est validées existante sur le sujet du documentaire. Ici aussi, une recette de choucroute alsacienne ne peut pas apporter à l'IA de quoi sortir un texte pertinent sur le sujet/domaine d'un documentaire. Comme dans le point précédent, l'IA produira un documentaire ressemblant très fortement à d'autres, où sera plus ou moins "farfelu". Quelle est l'avantage de l'IA ?
  • De la cas d'une aide au "codage", l'IA ne devrait également qu'être alimentée par des codes sources validés, exempts de bug, et ne portant que sur le problème que le code doit résoudre. Ce qui est humainement impossible. On utilise des techniques très différente pour construire un site Web ou un compilateur.


Il me semble dont, que pour qu'une IAG soit fiable, qu'il lui faut un entrainement de qualité, et qu'à de rares execptions près, cette "qualité" est difficilement réalisable, pour ne pas dire humainement impossible. C'est certainement la cause des fameuses Hallucinations, car une IAG qui a pour entrée tout ce qui est disponible sur internet, n'est pas capable de connaitre le vrai du faux des informations collectées.

Dans notre domaine, le développement, l'aide d'une IAG pour aider au développement d'un site web, ou du guidage précis d'un missile, semble donc une mauvaise bonne idée. Le code générer par une IAG doit donc être scupuleusement inspecté, ce qui demande certainement autant de temps qu'une solution, écrite à la main par un humain ayant concience de la nature complète du problème a réssoudre.

Dans le développement, comme dans d'autres domaines, avoir une connaissance "métier" du domaine spécifique dans lequel on travail est donc également très importante. Ce "domaine/métier" semble difficile a spécifier pour une IAG. Il est déjà assez difficile pour un humain de comprendre la demande d'un client, d'en faire une spécification, puis de générer du code pour cette spécification. Cela demande souvant des aller-retour entre ce que veut le client, la maise à jour de la spécification, et donc de comment implémenter cette spécification.

Si l'IA peut aider, dans le domaine du développement, ce ne peut-être fait relativement sereinement, que sur des petits bouts de code que le développeur doit ensuite intégré dans son propre code. Si l'architecture du code a été founie par l'IA, il faut à ce dévoloppeur comprendre cette dernière pour pouvoir y insérer du code générer par l'IAG.

Dans la balance productivité/qualité, le rôle d'un bon développeur est donc primordiale. Il est facile d'en déduire qu'au fur et à mesure que disparaîtront ces développeurs compétants, la qualité ne pourra que se dégrader.

D'une manière générale, l'IA nous fait entrer petit à petit dans un cercle vicieux, où l'IA sera de plus en plus présente, et les moyens de contrôler son travail de moins en moins présents.

Ceci tout simplement parce que ce qui fait la "nature" même d'un bon développeur, c'est sa créativité, sa profondeur d'analyse, sa réfexion, sa compétence, son expérience. Et je connais peu de développeurs qui seraient attirés par faire une maintenance permanente d'un code générer par une IA.

Un développeur aime créer, ce qui lui sera enlever par l'IA. Tout comme d'en d'autres domaines, la créativité s'éteindra petit à petit, jusqu'à un point de non retour. Il me semble donc urgent d'attendre avant qu'il ne soit trop tard.

BàV et Peace & Love.
8  0 
Avatar de PhilippeGibault
Membre éprouvé https://www.developpez.com
Le 01/10/2024 à 14:12
Notre métier n'est pas de faire du code qui marche, mais de faire du code qui dure.

Et la nuance est là.

Un code qui dure est un code qui répond au besoin fonctionnel, mais qui est durable dans le temps.

Mais un code qui marche n'est pas forcement durable dans le temps.

Je considère que notre métier consiste aussi à laisser la meilleure architecture de code pour qu'elle soit la plus durable possible.

Surtout que la dette technique a un coût:
https://www.premaccess.com/qu-est-ce...-la-maitriser/

C'est la différence entre un bon développeur qui va challenger son code pour le faire tenir sur la durée, et un mauvais développeur qui va juste faire le minimum et faire un machin-chose qui marche, ne faisant même pas de TU des fois.

La dernière catégorie est appelé le "Monkey Codeur".

De mon point de vue, je pense que l'IA va remplacer le Monkey Codeur. Et vu les enjeux économiques que représente la dette technique.
Vu les pertes économiques mais aussi sociales que représente la dette technique, je ne pleure pas la disparition du Monkey Codeur.

Par contre, je ne m'en fait pas pour le codeur qui essaye de challenger son code pour le faire durer.
Car là, il faut une intelligence humaine.

Et là, je ne pense pas que l'IA peut remplacer.
8  0 
Avatar de calvaire
Expert éminent https://www.developpez.com
Le 21/10/2024 à 16:50
je présuppose que tous le monde dans mon équipe utilise chatgpt ou équivalent.
je viens de regarder les stats de notre gitlab, et je constate la meme chose:
1122 merge request en 2023
en 2024 on est à 1087 actuellement

sachant que 1 merge request dans notre équipe est égal à 1 tache jira.
la nature des taches entre 2023 et 2024 n'a pas vraiment changé sur mon projet.

donc visiblement pas de gains à la clé.

maintenant perso je reviendrais pas en arrière, les llm sont de bons outils, c'est vraiment top quand on cherche un truc ou qu'on cherche a faire quelque chose sans trop savoir comment faire.

cas concret: je cherchait un module ansible pour faire un truc précis, j'ai demandé a chatgpt, il m'a donné le nom du module et un exemple de code, je suis allé sur la doc d'ansible pour vérifier et voir les arguments, c'est vraiment plus rapide que si j'avais du aller fouiller et lire la doc ansible.

mais il me génère toujours du code faux, voir obsolete parfois, et il est bien incapable de créer un programme informatique complet, il est juste capable d'écrire correctement des fonctions.

enfin chatgpt ou copilot sont des outils "professionnel", il est important de bien se former sur comment écrire des prompts et pour pouvoir l'utiliser, et surtout il faut maitriser son domaine d'expertise. Un gars qui n'y connait rien à l'informatique ne sera pas plus capable de faire un logiciel avec chatgpt. Chatgpt c'est une autocomplétion d'un ide tres avancée, mais un comptable ne sera jamais capable de coder un vrai logiciel.

avec chatgpt le comptable sera plus a l'aise pour coder sa macro excel, mais il ne va pas monter un serveur mongodb, automatiser l'insertions des données et remplacer excel par grafana et enfin integrer les graphs dans une page web ou un client lourd.

ou un domaine plus visuel, chatgpt peut me coder un jeu video basique en 2d sous pygame, mais il est bien incapable de me coder un équivalent call of duty ou autre jeux complexe. Meme un "simple" rayman 2d ou mario 2d chatgpt a vite ces limites.
5  0 
Avatar de Aiekick
Membre extrêmement actif https://www.developpez.com
Le 19/09/2024 à 22:50
en gros il n'y a que les non dev qui pensent que l'IA est sure. je suis pas surprit
4  0 
Avatar de axel1818
Membre à l'essai https://www.developpez.com
Le 01/10/2024 à 8:18
je l utilise dans le codage, uniquement lorsque je n y connais rien sur le sujet de ce que je veux écrire. Évidemment, les tests et verifications qui sont exhaustifs durent très longtemps. Tant que les ia ne sont pas capables de s auto vérifier, car ils ne sont que des copieurs colleurs, donc je n ai aucune confiance dans leurs resultats
3  0 
Avatar de Mister Nono
Membre chevronné https://www.developpez.com
Le 14/09/2023 à 11:18
Et bien oui, on dit tous ceux qui veulent l'entendre que l'IA est le passage obligé, alors tout le monde s'y engouffre : même pour vendre un article à 0,01€.

  • L'investissement : sans limite pour certains
  • L'éthique : exit pour d'autres
  • L'écologie : à quoi cela sert pour la plupart
  • La vie privée : cela existe-t-il encore ? (1984 - Orson Well)
  • Le profit : oui pour presque tous


A quand la fin de cette " boulimie " sans mesure des conséquences, tant humaines qu'humanitaire ?

Comme il était beau le temps où l'informatique n'existait pas... On pouvait rêver, avoir des projets d'avenir, connaitre des liens sociaux forts, être en phase avec la nature, dormir du sommeil du juste, être bien dans sa peau, connaitre le bonheur et l'amour vrai...
1  0 
Avatar de Axel Mattauch
Membre averti https://www.developpez.com
Le 01/07/2024 à 11:50
Juste une suggestion...

Ne serait-il pas plus pertinent de s'appuyer sur l'IA pour tester les codes produits et laisser le codage aux humains?
1  0 
Avatar de chris_FR
Membre régulier https://www.developpez.com
Le 21/09/2024 à 11:32
Ah les commerciaux et le marketing

Croire que l'IA est magique et permet à tout le monde de devenir un Super Développeur sans aucune formation ni expérience ... on y est pas encore

sauf si grâce à l'IA les "devs" font encore plus de conneries et encore plus de bugs ... si ils ne sont pas dégoûtés ils peuvent apprendre plus vite
1  0 
Avatar de DrHelmut
Membre actif https://www.developpez.com
Le 01/10/2024 à 14:15
Comme tout nouvel outil, il faut apprendre à s'en servir. Copilot ne fait pas de miracle, il ne comprend rien à ce qu'il propose, il faut juste des rapprochements sémantiques et statistique.

Si tu ne sais pas coder, que toi même tu ne comprends pas ce qu'il te pond et que tu valides, à qui revient la faute au final ?

À côté de ça, l'outil étant capable de s'inspirer de ce que tu écris, des onglets ouverts, etc, bien utilisé, c'est un gain de temps de taré sur certaines tâches. Un très bon exemple, c'est quand tu reprends du code legacy avec d'énormes manques en terme de tests unitaires en vu d'un refactoring. Tu écris les premiers tout seul, et rapidement, le copilot est capable de proposer en grande part le code des tests à venir. Jamais parfait bien sûr, et c'est normal, et ça ne le sera jamais car, et on ne le répétera jamais assez : il n' y a pas d'intelligence dans ce qu'on appelle IA d'aujourd'hui
1  0