Rendre l' IA accessible à tous

Utilisation des modèles conversationnels V : Génération de code

1. Introduction

Un des compétences les plus intéressantes des modèles conversationnels est qu’ ils sont assez doués pour l’écriture de code informatique.

A la base, ceci peut sembler surprenant car ces modèles ont plutôt été développés dans le but de converser naturellement avec nous dans nos propres langues. En réalité, les développeurs de ces modèles ont cherché dès le début à rendre ces modèles capables de coder, et leurs jeux de données d’entraînement comprennent une grande quantité de code informatique.

Ceci transforme en pratique un programme comme ChatGPT en une sorte « programmeur conversationnel », et des modèles similaires sont intégrés dans certains sites web à destination de programmeurs chevronnés comme GitHub (qui offre GitHub Copilot, un assistant de programmation dont l’accès est payant).

Ce texte sera organisé en deux parties. Dans la première partie, nous regarderons comment utiliser ChatGPT dans des tâches de programmation élémentaires. Dans la seconde partie, nous réfléchirons aux cas d’utilisation appropriés, les avantages et les limitations de ces nouveaux assistants de programmation.

2. Quelques cas d’utilisation

Les modèles générationnels ont des compétences suffisantes pour rédiger des codes simples mais leur avantage est surtout qu’ils peuvent assister un programmeur dans la création de programmes élémentaires ou de fonctions et routines bien circonscrites, à condition de bien décrire l’algorithme dans le texte de la question, ainsi que le langage de programmation souhaité.

Ces modèles peuvent aussi servir à automatiser des codes de nature répétitifs dont la rédaction à la main est fastidieuse (par exemple pour les interfaces utilisateur graphiques), ou encore proposer des améliorations à un code préalablement fourni, voire identifier des erreurs dedans. Finalement, si vous expliquez le comportement attendu d’un programme, vous pouvez demander la génération automatisée de code de test unitaires (ce qui tombe en général dans la catégorie « barbant »!). Quoi que vous fassiez, attention de toujours rester critiques quant aux propositions qui vous sont faites.

Nous allons passer ces différents cas en revue, en illustrant avec le langage Python :

2.1. Rédiger du code exécutant un algorithme élémentaire

Il suffit de bien décrire ce que l’on veut, y compris le langage et la forme (programme autonome, fonction avec ses arguments…). Nous allons ici demander à ChatGPT le code pour une fonction Python qui retourne une liste de nombres premiers :

Dialogue 1 : Génération d’une fonction de calcul des nombres premiers

Cela semble bien correct. Le modèle en a profité pour créer une autre fonction qui indique si un nombre est premier ou pas. Très bien. Il ne reste qu’à copier le code et le placer dans un fichier source puis l’exploiter.

2.2. Commenter le code

Vous pouvez utiliser le modèle à la fois pour ajouter des commentaires en ligne dans un code que vous lui fournissez, ou encore pour générer des fichiers de documentation séparés (README, description d’interface..).

Commençons par demander à ChatGPT de commenter le code qui a été généré au point précédent.

Dialogue 2 : Insertion de commentaires dans le code

Et voici le fichier README qui décrit succinctement le code:

Dialogue 3 : Génération d’un fichier README

Pas grand chose à redire, cela semble fonctionner correctement. A noter que le modèle à utilisé un format Markdown sans que cela lui ait été demandé.

2.3. Demander la génération d’une batterie de tests unitaires

La bonne pratique de la programmation veut que chaque fonctionnalité codée se voie accompagnée d’une fonction de test unitaire qui s’intègre dans un environnement de test/validation qui va être exécuté à chaque mise à jour du code afin d’éviter toute régression. Demandons donc à ChatGPT de générer un code de ce type pour nos deux fonctions :

Dialogue 4 : Génération de fichiers de test

Ici encore, cela semble correct. Néanmoins, il serait intéressant d’ajouter des tests pour voir comment le programme se comporte si on lui donne en argument une valeur nulle ou négative, voire non-numérique, pour voir la robustesse de la fonction en cas d’argument incorrect. Bien sûr vous pouvez lui demander interactivement de le faire ou bien l’ajouter vous-même à la main.

2.4. Traduire du code d’un langage à l’autre

A titre d’exemple, nous allons traduire la fonction décrite ci-dessus de Python vers Go.

Dialogue 5 : Traduction du code de Python vers Go

Je n’ai pas testé ce code mais ici encore le code semble tenir la route. Il serait néanmoins judicieux de le tester, éventuellement en demandant au modèle de fournir des fonctions de test comme il le suggère par ailleurs lui-même.

2.5. Faire générer un code fastidieux

Pour garder cet exemple simple, nous allons momentanément quitter le monde du Python pour passer au HTML, qui contient souvent des tas de répétitions pénibles à encoder.

Dialogue 6 : Génération d’un texte HTML fastidieux

Ici aussi, c’est correct. Il suffit de sauvegarder le texte dans un fichier à l’extension .htm ou .html et vous pouvez l’ouvrir dans un navigateur.

2.6. Demander des informations sur les librairies appropriées à un projet

Identifier les librairies disponibles les plus utiles à un projet est souvent une des tâches les plus importantes de la rédaction d’un programme. Supposons que je cherche à faire de l’analyse linguistique en python. Il existe des librairies qui vont offrir une série de fonctions de traitement pour me faciliter la tâche. Demandons à ChatGPT ce qu’il peut proposer :

Dialogue 7 : Recherche de librairies

Cela semble un bon point de départ. Bien sûr, vous pouvez approfondir le dialogue et demander des détails sur l’une ou l’autre librairie afin d’orienter votre choix.

3. Réflexions

Les modèles conversationnels ne sont pas (encore ?) en mesure de remplacer un programmeur. Le code qu’ils rédigent est susceptible de contenir des erreurs et il ne faut pas attendre d’eux la création d’une application complexe à partir de rien. Il ne faut pas oublier que ces modèles sont « dressés » à répéter ce qu’ ils ont vu ailleurs – y compris les erreurs éventuelles -, pas à raisonner de manière abstraite…

Cela veut aussi dire que les personnes n’ayant aucune expérience en programmation ne pourront pas recourir à ces modèles pour pallier à leur ignorance. Par contre, le programmeur « occasionnel », celui qui connaît les bases du langage sans être plongé dedans quotidiennement, verra le gain le plus important. Le programmeur expert pourra l’utliser pour confronter ses propres idées mais le gain sera probablement moindre.

Leur autre grande valeur ajoutée est qu’ils ont un bon niveau de connaissance des différentes librairies et packages existants qui sont souvent d’une grande aide à la programmation. Et pour cela, il suffit d’entamer un dialogue avec le modèle en lui demandant ce qu’on cherche et dans quel contexte. Comme pour les autres utilisations de ces modèles, il ne faut pas hésiter à remettre en cause ses propositions ou lui demander de changer d’approche.

Et d’ailleurs, quels langages de programmation ces modèles maîtrisent-ils ? Eh bien la plupart d’entre eux, soit non seulement les suspects habituels (Python, Java, C++, Go, PHP…) mais aussi des langages moins répandus comme le Fortran, le Cobol ou le Lisp. Et si vous hésitez sur le choix d’un langage, vous pouvez lui poser la question…

Une dernière remarque pour mentionner le plugin code interpreter qui est disponible si vous avez l’abonnement ChatGPT+. Je ne l’ ai volontairement pas utilisé dans cet article pour rester généraliste. Ce plugin va permettre à ChatGPT d’exécuter automatiquement du code qu’il génère et de vous montrer le résultat, au lieu de devoir le recopier manuellement dans un éditeur puis l’exécuter. C’est un avantage intéressant si vos scénarios d’utilisation sont fortement orientés vers la programmation ou si vous devez souvent analyser des données.

33 Comments

  1. b"asta binance h"anvisningskod

    Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.

  2. Binance推荐代码

    I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article. https://www.binance.info/bg/register?ref=V2H9AFPY

  3. goperya

    Goperya caught my eye with its promise of something different. and I was not disappointed! Its fun, fair, and full of possibilities. goperya.

  4. phdreamvip1

    Just tried phdreamvip1, and it’s actually pretty cool. The interface is smooth, and I won a little bit. Worth checking out if you’re looking for something different phdreamvip1.

  5. gogamebet

    Alright, had a go at gogamebet and it’s got a good selection! Easy to navigate, and seems legit. Give it a try for fun! gogamebet.

  6. Binance注册

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.

  7. xoso66appapk

    Downloaded the Xoso66appapk! So far so good, seems pretty snappy. Gonna give it a whirl tonight. Def worth a download if you’re into this kinda thing: xoso66appapk

  8. jolibetph

    Jolibetph, my go-to spot for some quick games! Always a good selection and easy to deposit. Hope I win big today! Play the awesome games here: jolibetph

  9. epicwingaming

    Yo, Epicwingaming! Been hitting your site lately. Gotta say, the slots are pretty 🔥. Just wish there were more free spins, you know? But overall, good vibes! Check out epicwingaming.

  10. 注册Binance

    I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article. https://www.binance.com/cs/register?ref=OMM3XK51

  11. binance sign up

    I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  12. binance

    I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  13. registrarse en Binance

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you. https://accounts.binance.com/uk-UA/register?ref=XZNNWTW7

  14. binance referral bonus

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.

  15. Registrera dig

    Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.

  16. binance

    Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.

  17. Utwórz darmowe konto

    I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  18. Anonyme

    I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

  19. iv88login

    Just logged into iv88login and feeling good about this site. The login process was smooth, and the games look promising. Let’s see if my luck’s on my side tonight! You can login at iv88login to give it a try.

  20. scv388

    If you’re looking for somewhere new to play, try scv388. Lots of options to choose from and it’s a very user-friendly site scv388.

  21. x7777game

    Yo, x7777game is where it’s at! Been spinning those slots there for a while now and it’s always a good time. Solid platform, easy to use, and payouts are legit. Check it out! x7777game

  22. binance акаунтын ашу

    Thanks for sharing. I read many of your blog posts, cool, your blog is very good.

  23. open binance account

    Your article helped me a lot, is there any more related content? Thanks!

  24. binance anm"alningsbonus

    Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me? https://www.binance.com/register?ref=IXBIAFVY

  25. 开设Binance账户

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.

  26. www.binance.com registrera dig

    Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  27. Binance注册

    Your article helped me a lot, is there any more related content? Thanks!

  28. binance registrering

    Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.

  29. yy567game

    Spotted yy567game and decided to give a shot. Seems like they have a decent selection and good promotions. Gotta test my luck. You should too yy567game.

  30. 922betapp

    Just downloaded the 922betapp. Let’s see what all the fuss is about. Ready to roll the dice! Download 922betapp here: 922betapp

  31. bet669app

    Yo! Checked out bet669app and it’s pretty solid. Easy to navigate and the mobile site works great. Definitely worth a look. Check it out here: bet669app

  32. Регистриране

    Your article helped me a lot, is there any more related content? Thanks!

  33. Binance账户

    Your article helped me a lot, is there any more related content? Thanks! https://www.binance.com/join?ref=QCGZMHR6

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *