L’une des découvertes les plus intrigantes de ChatGPT est qu’il est capable d’écrire du bon code. Je l’ai testé pour la première fois en 2023 lorsque je lui ai demandé d’écrire un plugin WordPress. ChatGPT a fait du bon travail. Mais il s’agissait d’un projet simple.
Pour aller plus loin, pouvez-vous utiliser ChatGPT pour écrire du code plus complexe, et dans le cadre de votre travail quotidien ? Voici un résumé rapide :
- ChatGPT peut produire à la fois du code utile et du code inutilisable. Pour obtenir les meilleurs résultats, fournissez des prompts claires et détaillées.
- ChatGPT excelle dans l’assistance à des tâches de codage spécifiques ou à des routines, plutôt que dans la création d’applications complètes à partir de zéro.
- Utilisez ChatGPT pour trouver et choisir les bonnes bibliothèques de codage pour des objectifs spécifiques. Engagez une discussion pour réduire ensuite vos options.
- Soyez prudent quant à la propriété du code généré par l’IA et vérifiez toujours sa fiabilité. Ne faites pas aveuglément confiance aux résultats générés.
- Traitez les interactions avec ChatGPT comme une conversation. Affinez vos questions en fonction des réponses de l’IA afin de vous rapprocher du résultat souhaité.
Explorons maintenant ChatGPT de manière beaucoup plus approfondie.
Quels sont les types de codage que ChatGPT peut bien faire ?
Il y a deux faits importants à propos de ChatGPT et du codage.
- Premièrement, l’IA peut écrire du code utile.
- Deuxièmement, l’IA peut se perdre complètement, et produire des déchets inutilisables.
Je l’ai appris à mes dépens. Après avoir terminé le plugin WordPress, j’ai décidé de voir jusqu’où ChatGPT pouvait aller.
J’ai écrit un prompt très soigné pour une application Mac, y compris des descriptions détaillées des éléments de l’interface utilisateur, des interactions, de ce qui serait fourni dans les paramètres, de la façon dont ils fonctionneraient, et plus encore. Ensuite, j’ai envoyé le prompt à ChatGPT.
Un flot de texte et de code
ChatGPT a répondu par un flot de texte et de code. Puis il s’est arrêté en plein milieu de la génération. Lorsque j’ai demandé à l’IA de continuer, elle a vomi encore plus de code et de texte. J’ai demandé à l’IA de continuer encore et encore. Et elle a déversé de plus en plus de code. Cependant, aucun des résultats n’était utilisable.
L’IA n’a pas identifié où le code devait aller, comment construire le projet, et — quand j’ai regardé attentivement le code produit — il a laissé de côté des opérations majeures que j’avais demandée, laissant de simples descriptions de texte disant « la logique du programme va ici ».
Après des tests répétés, il est devenu clair que si vous demandez à ChatGPT de fournir une application complète, l’outil échoue. Un corollaire à cette observation est que si vous ne connaissez rien au codage et que vous voulez que ChatGPT construise quelque chose, il échouera.
Là où ChatGPT réussit — et le fait très bien — c’est en aidant quelqu’un qui sait déjà coder à construire des routines spécifiques et à accomplir des tâches. Ne lui demandez pas de faire une application qui fonctionne sur la barre de menu. Mais si vous demandez à ChatGPT une routine pour mettre un menu sur la barre de menu, et que vous la collez dans votre projet, l’outil fonctionnera très bien.
N’oubliez pas non plus que, même si ChatGPT apparaît avoir une énorme quantité de connaissances spécifiques au domaine (et c’est souvent le cas), il manque de sagesse. En tant que tel, l’outil peut être capable d’écrire du code. Mais il ne sera pas capable d’écrire du code contenant les nuances pour des problèmes spécifiques ou complexes qui nécessitent une expérience approfondie.
Comment utiliser ChatGPT pour écrire du code
Utilisez ChatGPT pour faire des démonstrations de techniques, écrire de petits algorithmes et produire des sous-programmes. Vous pouvez même demander à ChatGPT de vous aider à décomposer un projet plus important en plusieurs parties, puis de vous aider à coder ces parties.
Dans cette optique, examinons quelques étapes spécifiques de la manière dont ChatGPT peut vous aider à écrire du code.
1. Affinez et précisez votre demande
Cette première étape consiste à décider ce que vous allez demander à ChatGPT – mais pas encore à lui demander quoi que ce soit.
- Décidez ce que vous voulez que votre fonction ou routine fasse, ou ce que vous voulez apprendre à incorporer dans votre code.
- Décidez des paramètres que vous passerez dans votre code et de ce que vous voulez en retirer.
- Ensuite, réfléchissez à la manière dont vous allez le décrire.
Imaginez que vous payez un programmeur humain pour effectuer cette tâche. Lui donnez-vous suffisamment d’informations pour qu’il puisse travailler sur votre projet ? Ou êtes-vous trop vague et la personne que vous payez est-elle susceptible de produire quelque chose qui n’a rien à voir avec ce que vous voulez ?
Voici un exemple. Supposons que je veuille être capable de résumer n’importe quelle page web. Je veux alimenter l’IA avec cet article et obtenir en retour un résumé.
- En entrée, je spécifie l’URL d’une page web.
- En sortie, un bloc de texte avec un résumé.
2. Utiliser ChatGPT pour explorer les bibliothèques et les ressources
Pour continuer avec l’exemple ci-dessus, une vieille méthode d’extraction de données de pages web consistait à trouver le texte entre les balises de paragraphe HTML.
Cependant, avec l’essor des outils d’intelligence artificielle, vous pouvez utiliser une bibliothèque d’intelligence artificielle pour effectuer une extraction et un résumé. L’un des domaines dans lesquels ChatGPT excelle (et c’est aussi un domaine que vous pouvez facilement vérifier pour éviter son comportement autoritaire mais erroné) est la recherche de bibliothèques et de ressources.
OpenAI (le fabricant de ChatGPT) vend un accès API à ses LLM pour faire exactement ce que nous voulons. Mais dans le cas de cet exemple, supposons que nous ne voulons pas payer.
Voyons donc comment interagir avec ChatGPT pour comprendre comment utiliser un tel outil, gratuitement, dans le cadre d’un projet fonctionnant en PHP.
J’ai commencé par un prompt pour obtenir des informations sur les bibliothèques qui fourniraient la fonctionnalité souhaitée. Une bibliothèque (pour ceux qui ne sont pas programmeurs) est un corps de code auquel un programmeur peut accéder et qui fait le gros du travail dans un but spécifique. Une grande partie de la programmation moderne consiste à trouver et à choisir les bonnes bibliothèques.
Un exemple avec PHP
Dans ce cas, je cherche des blocs de code écrits par d’autres personnes qui résument un texte. Voici mon premier message à ChatGPT: « Décrit dix bibliothèques d’IA open source différentes (et les langages avec lesquels elles fonctionnent) que je peux utiliser pour générer un résumé du contenu principal de n’importe quelle page web, en ignorant les publicités ou les documents intégrés ».
Ce prompt m’a donné exactement ce que je voulais, y compris une mention des offres payantes d’OpenAI. J’ai donc restreint la question : « Est-ce que l’un d’entre eux est gratuit ? »
ChatGPT a couvert ses risques avec sa réponse : « Oui, ces dix bibliothèques d’intelligence artificielle sont libres et gratuites. Cependant, certaines d’entre elles peuvent avoir des limites d’utilisation ou nécessiter un paiement pour accéder à des fonctionnalités ou des ressources supplémentaires. »
Sur la base de cette réponse, j’ai donc clarifié ma question : « Quelles sont les bibliothèques dont l’utilisation n’est pas limitée et qui ne nécessitent pas de paiement ou de licence supplémentaire ? »
Remarquez qu’il s’agit d’une conversation. Je n’ai pas besoin de reposer la question initiale. Je me contente d’approfondir la question comme je le ferais si j’avais un expert à mes côtés. Cette fois, ChatGPT m’a donné huit choix de bibliothèques, mais aucune ne mentionnait le langage PHP que je prévoyais d’utiliser pour coder.
Voici donc la question suivante : « Parmi ces 8 bibliothèques, puis-je en utiliser une avec PHP ? »
Trois bibliothèques m’ont été proposées, mais je n’étais pas sûr de ce qu’elles faisaient. Donc, une autre question : « Quelle est la différence entre Sumy, Gensim et NLTK ? »
Je n’étais toujours pas sûr, j’ai donc clarifié et j’ai posé la question : « Si je veux créer des résumés d’articles de presse sur des pages web, quelle bibliothèque fonctionnerait mieux ? »
La réponse était claire et prometteuse : « Sumy est spécialement conçu pour la synthèse de texte, c’est-à-dire la création d’un résumé qui capture les informations les plus importantes d’un texte ».
Il était donc temps de voir ce qu’impliquait l’utilisation de Sumy avec PHP. J’ai posé ma dernière question pour cette partie du projet : « Peux-tu m’expliquer comment utiliser Sumy depuis PHP ? »
Plongez dans la conversation
N’hésitez pas à jouer le jeu sur votre ordinateur et à coller ces questions dans ChatGPT. Remarquez qu’à l’étape 1, j’ai choisi le module de programme pour lequel j’avais besoin d’aide. Ensuite, j’ai eu une conversation avec ChatGPT pour décider quelle bibliothèque utiliser et comment l’intégrer dans mon projet.
Cette approche peut ne pas ressembler à de la programmation. Mais je vous assure que ça en est. Programmer, ce n’est pas simplement insérer des lignes de code sur une page. Programmer, c’est comprendre comment intégrer toutes les ressources et tous les systèmes, et comment dialoguer avec tous les composants de votre solution. Ici, ChatGPT m’a aidé à faire cette analyse d’intégration.
D’ailleurs, j’étais curieux de savoir si l’IA Gemini de Google pouvait m’aider de la même manière. Gemini a en effet donné des indications supplémentaires sur l’aspect planification de la programmation par rapport aux réponses de ChatGPT.
N’hésitez donc pas à utiliser plusieurs outils pour trianguler vos réponses.
3. Demander à ChatGPT d’écrire un exemple de code
Soyons clairs. A moins que vous n’écriviez une petite fonction, ChatGPT ne peut pas écrire votre code final. Tout d’abord, vous devrez le maintenir. ChatGPT est très mauvais pour modifier du code déjà écrit. Vous devez demander à ChatGPT de générer quelque chose de nouveau. Et même si votre prompt est identique, ChatGPT peut changer de façon inattendue ce qu’il vous génère.
Donc, en fin de compte, ChatGPT ne peut pas maintenir votre code, ni même le modifier.
Mais ce problème ne signifie pas que ChatGPT est inutile pour faire du code, loin de là. Examinons un prompt que j’ai écrit sur la base du projet décrit plus haut. Voici la première partie : « Écrit une fonction PHP appelée summarize_article. En entrée, summarize_article recevra l’URL d’un article sur un site d’information comme ZDNET.com ou Reuters.com. »
J’indique à ChatGPT le langage de programmation qu’il doit utiliser. J’indique également à l’IA les données d’entrée et je lui fournis deux sites à titre d’exemples pour l’aider à comprendre le style de l’article. Honnêtement, je ne suis pas sûr que ChatGPT n’ait pas ignoré ces conseils. Ensuite, je vais lui dire comment faire le gros du travail : « Dans summarize_article, récupérer le contenu de la page web à l’URL fournie. En utilisant la bibliothèque Sumy de PHP et toute autre bibliothèque nécessaire, extrait le corps principal de l’article, en ignorant toute publicité, et résume-le en 50 mots environ. Veille à ce que le résumé soit constitué de phrases complètes. Tu peux dépasser les 50 mots pour terminer la dernière phrase, si nécessaire ».
Parlez lui comme à un employé
Cette approche est très similaire à la manière dont je donnerais des instructions à un employé. Je voudrais que cette personne sache qu’elle n’est pas limitée à Sumy. Si elle a besoin d’un autre outil, je veux qu’elle l’utilise.
J’ai également spécifié un nombre approximatif de mots pour créer des limites à ce que je voulais comme résumé. Une version ultérieure de la routine pourrait prendre ce nombre comme paramètre. J’ai terminé en disant ce que je voulais comme résultat : « Une fois le traitement terminé, coder summarize_article de manière à ce qu’il renvoie le résumé en texte brut ».
Le code résultant est assez simple. ChatGPT fait appel à une autre bibliothèque (Goose) pour récupérer le contenu de l’article. Il transmet ensuite ce résumé à Sumy avec une limite de 50 mots et renvoie le résultat. Mais une fois que les bases sont écrites, c’est une simple question de programmation pour revenir en arrière et ajouter des ajustements, personnaliser ce qui est transmis aux deux bibliothèques et fournir les résultats :
Capture d’écran par David Gewirtz/ZDNET
Un point intéressant à noter. Lorsque j’ai effectué ce test au début de l’année 2023, ChatGPT a créé un exemple d’appel à la routine qu’il avait écrite, en utilisant une URL postérieure à 2021. À l’époque, en mars 2023, l’ensemble de données de ChatGPT allait seulement jusqu’en 2021. Aujourd’hui, la base de connaissances de ChatGPT s’étend jusqu’à la fin du mois de juin 2024 et peut effectuer des recherches sur le web. Mais ce que je veux dire, c’est que ChatGPT a créé un exemple de lien qu’il ne pouvait pas connaître :
J’ai vérifié cette URL sur le site de Reuters et sur la Wayback Machine. Et elle n’existe pas. Ne présumez jamais de l’exactitude de ChatGPT. Vérifiez toujours tout ce qu’il vous donne.
4. Déboguer et affiner le code généré
Tous les programmeurs font des erreurs, même les IA.
Mais vous pouvez faire plusieurs choses pour affiner votre code, déboguer les problèmes et anticiper les erreurs qui pourraient survenir. Ma nouvelle astuce IA préférée consiste à envoyer le code à une autre session ChatGPT (ou à un autre chatbot) et à demander : « Qu’est-ce qui ne va pas avec ce code ? »
Inévitablement, quelque chose apparaît. L’IA identifie parfois des cas limites ou des contrôles d’erreur qui devraient être ajoutés au code.
FAQ sur le codage avec ChatGPT
Est-ce que ChatGPT remplace les programmeurs ?
Pas maintenant — ou du moins — pas encore. ChatGPT programme au niveau d’un étudiant talentueux en première année de programmation. Mais il est paresseux. L’outil pourrait donc réduire le besoin de programmeurs débutants.
Cependant, à son niveau actuel, je pense que l’IA facilitera la vie des programmeurs débutants (et même des programmeurs plus expérimentés) en leur permettant d’écrire du code et de rechercher des informations.
C’est un gain de temps. Mais l’IA ne peut pas effectuer de nombreuses tâches de programmation par elle-même, du moins à l’heure actuelle. En 2030 ? Qui sait ?
Comment obtenir des réponses sur le codage dans ChatGPT ?
Il suffit de poser la question. Vous avez vu plus haut comment j’ai utilisé un dialogue interactif pour affiner les réponses. Ne vous attendez pas à ce qu’une seule question fasse tout votre travail comme par magie.
Mais utilisez l’IA comme une aide et une ressource. Et elle vous donnera beaucoup d’informations utiles.
Bien entendu, testez ces informations, car, comme l’a déclaré John Schulman, cofondateur d’OpenAI : « Le modèle aime fabriquer des choses ».
Le code généré par ChatGPT est-il garanti sans erreur ?
Bien sûr que non ! Mais vous ne pouvez pas non plus faire confiance au code que les programmeurs humains écrivent. Je ne fais certainement pas confiance au code que j’écris. Le code sort du processus de création incroyablement imparfait. Il y a toujours des bogues.
Avant de livrer un produit, il faut le tester, le tester et le tester encore.
Même après tout ce travail, il y aura des bogues. Ce n’est pas parce qu’une IA s’amuse à coder qu’elle peut produire un code exempt de bogues. Ne faites pas confiance. Vérifiez toujours. Et vous n’obtiendrez toujours pas un résultat totalement exempt de bogues. Telle est la nature de l’univers.
Que dois-je faire si le code que je reçois en retour est erroné ?
Je recommande de considérer le chatbot comme un étudiant ou un employé subalterne peu coopératif. Que feriez-vous si cette personne vous renvoyait un code qui ne fonctionne pas ? Vous le renverriez avec des instructions pour qu’il recommence et qu’il obtienne de bons résultats. C’est à peu près ce que vous devriez faire avec ChatGPT (j’ai testé cela avec ChatGPT 4 et 4o). Lorsque les choses ne fonctionnent pas, je dis : « Cela n’a pas fonctionné. Veuillez réessayer. »
C’est ce que fait l’IA. Elle me renvoie souvent différentes variantes du même problème. Il m’est arrivé de répéter ce processus quatre ou cinq fois jusqu’à ce que j’obtienne une réponse satisfaisante. Parfois, cependant, l’IA est à court d’idées. D’autres fois, la réponse que l’on essaie d’obtenir n’a aucun rapport avec ce que vous avez demandé.
Lorsqu’il devient évident que vous avez atteint les limites de la capacité de l’IA, vous devez vous atteler à la tâche et coder vous-même. Mais 9 fois sur 10, en particulier pour les problèmes de codage ou d’écriture d’interface de base, l’IA fait son travail avec succès.
Dans quelle mesure la description d’un problème de programmation doit-elle être détaillée lorsque je fais appel à ChatGPT ?
Plus vous laissez de place à l’interprétation, plus l’IA suivra sa propre voie. Lorsque je demande à ChatGPT de m’aider à programmer, j’imagine donc que je confie une tâche de programmation à l’un de mes étudiants ou à l’un de mes collaborateurs.
Ai-je donné à cette personne suffisamment de détails pour qu’elle puisse créer un premier projet ou devra-t-elle me poser des questions supplémentaires ?
Pire encore, cette personne sera-t-elle si peu guidée qu’elle partira dans la mauvaise direction ? Ne soyez pas paresseux. ChatGPT peut vous épargner des heures, voire des jours de programmation. Mais seulement si vous lui donnez des instructions utiles dès le départ.
Si j’utilise ChatGPT pour écrire mon code, à qui appartient-il ?
Il s’avère qu’il n’y a pas encore beaucoup de jurisprudence pour répondre à cette question. Les États-Unis, le Canada et le Royaume-Uni exigent qu’un objet protégé par le droit d’auteur ait été créé par la main de l’homme.
Le code généré par un outil d’IA peut ne pas être protégé par le droit d’auteur.
Des questions de responsabilité se posent également en fonction de l’origine du code d’entraînement et de la manière dont le code résultant est utilisé.
Quels langages de programmation ChatGPT connaît-il ?
La réponse est la plupart des langages. J’ai testé des langages modernes courants, comme PHP, Python, Java, Kotlin, Swift, C#, etc. Mais j’ai aussi demandé à l’outil d’écrire du code dans d’obscurs langages de l’âge des ténèbres comme COBOL, Fortran, Forth, LISP, ALGOL, RPG (le générateur de programmes de rapports, pas le jeu de rôle), et même le langage d’assemblage IBM/360.
Cerise sur le gâteau, je lui ai donné ce prompt : « Écrire une séquence qui affiche « Hello, world » en ascii en faisant clignoter des lumières sur le panneau avant d’un PDP 8/e. »
Le PDP 8/e était mon premier ordinateur. Et ChatGPT m’a donné des instructions pour basculer dans un programme en utilisant des interrupteurs. J’étais impressionné, jubilatoire et légèrement effrayé.