En fait, je suis plus qu’effrayé. À titre expérimental, j’ai demandé à ChatGPT d’écrire un plugin qui pourrait faire gagner du temps à ma femme dans la gestion de son site web. J’ai écrit une courte description et ChatGPT a écrit le tout : interface utilisateur, logique, et tout.
En moins de cinq minutes.
Il y a des implications à tout cela. Nous y reviendrons dans quelques minutes. Mais d’abord, laissez-moi vous parler de l’expérience et de ce qui s’est passé.
Le besoin
ChatGPT a écrit le plugin qui génère cette interface utilisateur. David Gewirtz/ZDNET
Ma femme gère un site de commerce électronique basé sur WordPress. Elle anime également un groupe Facebook très actif pour les clients de son site. Chaque mois, elle établit une liste de clients aléatoire pour des besoins marketing. Elle a utilisé jusqu’à présent un site Internet qui fait un bon travail de randomisation des lignes. Mais qui demande un peu plus que ce qu’il vaut pour l’exportation de la liste.
Alors que je la regardais lutter pour récupérer les données, j’ai pensé qu’il serait utile d’écrire un plugin WordPress que nous pourrions installer sur son site.
Mais écrire un plugin, même très simple, me prendrait quelques jours, avec les éléments de l’interface utilisateur et le code logique, et j’ai déjà pas mal de projets en ce moment.
Et puis j’ai pensé à ChatGPT. Il y a déjà eu quelques discussions sur ChatGPT comme outil de programmation dans les médias, alors j’ai décidé d’essayer.
Le résultat du code proposé par WordPress est très dépendant de votre demande
Le code de ChatGPT (à partir de mon premier prompt, le plus basique) / David Gewirtz/ZDNET
Le point clé pour que ChatGPT génère correctement du code, est une invite (un prompt) soigneusement écrite. Vous devez décrire clairement ce dont vous avez besoin afin d’obtenir ce que vous voulez. J’ai commencé par une phrase très basique, juste pour voir si cela pouvait fonctionner. Voici ce que j’ai utilisé :
Ecrivez un plugin WordPress compatible PHP 8 qui fournit un champ de saisie de texte dans lequel une liste de lignes peut être collée et un bouton, qui lorsqu’il est pressé, randomise les lignes de la liste et présente les résultats dans un second champ de saisie de texte.
En une minute, il a généré le code que vous voyez ci-dessus. J’ai copié le code généré dans un fichier .php, je l’ai placé dans un dossier ayant le même nom de racine que le fichier .php, je l’ai compressé et je l’ai téléchargé sur son serveur. Cela a fonctionné.
Lorsque je l’ai montré à ma femme, elle a été impressionnée et surprise. Mais ensuite, comme d’habitude, elle a demandé une nouvelle fonctionnalité : s’assurer que les noms en double ne sont pas côte à côte.
Oui parce que pour son travail, elle a parfois besoin d’inclure le nom d’une personne dans une liste à plusieurs reprises. Mais elle ne veut pas que ces doublons soient regroupés.
J’ai donc modifié mon invite initiale en ajoutant les conditions supplémentaires suivantes :
…s’assure que deux entrées identiques ne se trouvent pas l’une à côté de l’autre (sauf s’il n’y a pas d’autre option)… avec le nombre de lignes soumises et le nombre de lignes dans le résultat identiques l’un à l’autre.
J’ai inclus la phrase « sauf s’il n’y a pas d’autre option » et l’exigence d’un nombre identique de lignes parce que je voulais m’assurer que tous les noms étaient inclus, et je craignais que cela ne donne la priorité à la nécessité de ne pas avoir deux noms côte à côte plutôt que de garder tous les noms.
Environ 30 secondes plus tard, j’avais un nouveau plugin. J’ai téléchargé celui-ci sur le serveur et l’ai essayé. Il a fonctionné, mais le résultat final comprenait quelques lignes vides. J’ai donc ajouté cette condition à ma demande précédente :
…sans lignes vides…
À ce stade, je m’étais habitué au délai d’exécution, qui était toujours inférieur à une minute. Encore un téléchargement et un test, et encore une fois, ça a marché.
Je voulais une dernière fonctionnalité, juste pour confirmer le nombre de lignes qui avaient été traitées. Je voulais que le plugin affiche le nombre de lignes pour les champs d’entrée et de sortie. Voici l’ajout de cette invite :
…Sous le premier champ, affichez un texte indiquant « Ligne à randomiser : » avec le nombre de lignes non vides dans le champ source. Sous le deuxième champ, affichez un texte indiquant « Lignes qui ont été randomisées : » avec le nombre de lignes non vides dans le champ de destination.
Cela a presque totalement fonctionné. Avant l’exécution, le champ de sortie affiche une ligne. Mais une fois le processus de randomisation terminé, il affiche le nombre exact de lignes dans les deux champs.
La qualité du code généré par ChatGPT
Globalement, la qualité du code est propre. Le programme a correctement généré le bloc d’en-tête de WordPress et a écrit l’interface utilisateur du tableau de bord pour le plugin, ainsi que la logique de traitement du plugin.
Il a placé mes lignes au-dessus des champs, alors que je l’avais spécifié en dessous, mais ce n’est pas vraiment un gros problème. C’est le même genre d’erreur qu’un client pourrait recevoir d’un développeur et qui nécessiterait un peu de travail pour être corrigée.
Le code a fonctionné, mais il n’a pas intégré toutes les meilleures pratiques de programmation de WordPress, notamment sur la partie sécurisation du code.
Par ailleurs, ChatGPT a également placé l’élément de menu du plugin dans Settings. Je l’aurais probablement placé sous Tools ou j’aurais donné à la fonction son propre élément de menu. Comme je n’ai pas précisé tout cela, je pense que ChatGPT a pris une décision par défaut en plaçant l’élément de menu à cet endroit.
J’ai ajouté une dernière exigence à mon invite, demandant à l’IA de donner un nom au plugin :
Ecrire un plugin WordPress compatible PHP 8 appelé « Robo Randomizer » qui…
Bizarrement, l’IA m’a donné alors produit un plugin entièrement différent, qui fournit un shortcode plutôt qu’une interface de tableau de bord. Laissez-moi expliquer cela aux non-utilisateurs de WordPress, car c’est intéressant.
Lorsque vous écrivez un plugin pour WordPress, vous pouvez le mettre à la disposition des visiteurs sur le site (c’est ce que l’on appelle le frontend) ou à la disposition de ceux qui se connectent au tableau de bord du site (c’est le backend). Dans mes instructions initiales, je n’ai pas spécifié frontend ou backend, mais l’IA a écrit ce que je voulais, c’est-à-dire une interface backend, un tableau de bord pour l’outil.
Mais lors de ce dernier essai, l’IA a décidé d’écrire le plugin comme un outil frontend, en le faisant exécuter par un shortcode. Dans WordPress, vous pouvez intégrer un code court dans un article et il exécutera le code d’un plugin. La dernière version que l’IA a produite me donnait ce shortcode, qui aurait permis de présenter la fonction de lignes aléatoires aux visiteurs du site.
Après cela, ChatGPT a en quelque sorte perdu le fil. Je n’ai pas été en mesure d’obtenir l’ajout de fonctionnalités supplémentaires au plugin original et ChatGPT s’est contenté de générer la version shortcode. Il est donc clair que la maintenance du code n’est pas un point fort de ChatGPT.
Les conséquences que l’on peut tirer de mon expérience de génération de code avec ChatGPT
De toute évidence, il s’agit d’un plugin simple. Il est à peu près du niveau des exercices que je donnais à mes étudiants en première année de programmation lorsque j’enseignais à l’université. Il est loin d’être aussi complexe que d’autres plugins WordPress.
Lorsque j’ai commencé à évoquer la création de plugin par ChatGPT sur les réseaux sociaux, j’ai reçu de nombreuses réactions. Et j’y répond ici.
Une personne craignait que l’IA intègre des informations malveillantes (ou du moins promotionnelles) dans le plugin et qu’un utilisateur non programmeur ne le sache jamais.
Si vous n’êtes pas un développeur et que vous ne pouvez pas lire du code, même si vous passez un contrat avec un autre développeur, vous ne saurez pas vraiment ce qu’il y a à l’intérieur. Il faut soit faire confiance à la réputation, soit demander à quelqu’un en qui vous avez confiance d’auditer le code. Et pour ce qui est du code produit par ChatGPT, sur ce point, il était propre.
Le code de ChatGPT est-il de très bonne qualité ?
Je suis un bon programmeur, mais mon code a des bugs, du moins au début. Et ce qui est bien avec les humains, c’est que le code s’améliore avec le temps. Je ne suis pas sûr qu’une IA puisse prendre un code existant, l’améliorer, le déboguer et le perfectionner. Cependant, parfois, le code doit être simplement fonctionnel. Il n’est pas toujours important qu’ils soient le meilleur. Ce qui est bon est souvent suffisant. Et je dois dire que ChatGPT a généré du code qui était suffisamment bon.
Est-ce que ça va réduire le nombre d’emplois de développeurs ?
Sans aucun doute. Je déteste voir une machine prendre le travail d’une personne. Mais l’IA est clairement une option pour les projets rapides et faciles, qu’il s’agisse d’écriture ou de programmation. Donc des emplois vont sauter, sans aucun doute.
J’étudie l’IA depuis des décennies. J’ai fait une thèse sur l’IA. Mais même avec tout ce bagage, cette montée en puissance de l’IA générative de haute qualité m’a étonné. Cela dit, ce que nous observons actuellement est un niveau de productivité « suffisant ». Et c’est malheureusement ce qu’exigent de nombreux clients.
Mais — du moins pour l’instant — ChatGPT et ses amis ne peuvent pas écrire des articles d’analyse super approfondis comme celui-ci, car ils reflètent des opinions, des anecdotes et des années d’expérience. Et s’ils pourraient probablement écrire des sous-routines et des fonctions pour des projets de développement plus importants, ils ne sont tout simplement pas en mesure d’écrire du code pour des projets importants.
Par exemple, j’ai dû organiser 20 à 30 réunions l’année dernière avec un important fournisseur d’API pour intégrer son service au mien. La plupart de ces réunions mêlaient les questions commerciales aux exigences techniques et aux politiques de licence. Je défie toute IA de supporter cette torture, de comprendre les nuances et de répondre aux exigences des partenaires. Puis d’être capable de produire des modules de code sur lesquels tout le monde est d’accord.
Donc, oui, je suis un peu effrayé par la qualité du plugin que j’ai « fabriqué ». Mais l’IA a encore un long chemin à parcourir avant de prendre le travail de développeurs et de rédacteurs expérimentés. Enfin tant que les clients voudront ce genre de travail. Et ça, mes amis, c’est quelque chose qui m’inquiète autrement plus.
Source : « ZDNet.com »
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/all.js#appId=243265768935&xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));