J’ai (un peu) appris à programmer en Python grâce à ChatGPT | Pèse sur start
/techno/gadgets

J’ai (un peu) appris à programmer en Python grâce à ChatGPT

Pourquoi ajouter manuellement une date à plus de 10 000 photos quand on peut demander à ChatGPT de créer un script pour travailler à notre place? C’est ce qu’a fait notre chroniqueur techno Maxime Johnson, même s’il ne sait pas programmer.

Même sans savoir coder, Maxime Johnson a créé un script Python fonctionnel, avec l’aide du robot conversationnel ChatGPT.
Capture d’écran : Maxime Johnson.

Même sans savoir coder, Maxime Johnson a créé un script Python fonctionnel, avec l’aide du robot conversationnel ChatGPT.

Je ne sais pas comment programmer. Je peux comprendre la structure d’une page web simple en HTML, et je n’ai pas l’impression que les symboles de la Matrice tombent autour de moi si je regarde une page de code. Mais je ne pourrais pas coder même si ma vie en dépendait.

C’est pourtant ce que j’ai fait au cours des derniers jours, après avoir eu un petit accident de métadonnées (ça arrive aux meilleurs d’entre nous, je vous le jure). Pour corriger la situation, j’aurais pu ajouter les informations manquantes à la mitaine dans un logiciel. En m’appliquant 20 minutes par jour (à peu près la limite de temps avant que mon cerveau se transforme en Jell-O à la pêche), l’opération aurait été complétée en novembre. 

Bref, il fallait trouver une autre solution. 

Comment j’ai programmé avec ChatGPT

Le problème que j’avais avec les métadonnées était spécifique, si bien qu’aucun logiciel existant ne pouvait le régler automatiquement. 

J’ai donc essayé ChatGPT, ce robot conversationnel qui a été entraîné sur à peu près tout ce que l’on peut lire sur le web, des recettes de Ricardo aux vieilles archives de pages Geocities, en passant par les codes sources de logiciels ouverts.

J’ai résumé le problème à ChatGPT en utilisant mes mots. J’ai expliqué ce que je voulais faire avec les photos, pourquoi certaines métadonnées avaient été perdues et où on pouvait les retrouver. Je lui ai demandé si un programme pouvait régler mon problème. 

Il suffit d’expliquer son problème à ChatGPT pour qu’il rédige le premier jet d’un script Python.

Capture d’écran : Maxime Johnson.

Il suffit d’expliquer son problème à ChatGPT pour qu’il rédige le premier jet d’un script Python.

La réponse de ChatGPT: oui! Et il l’a même codé pour moi, en Python, le langage de programmation le plus populaire en ce moment. 

Ce n’était toutefois que le début. J’ai aussi eu besoin de ChatGPT pour savoir comment télécharger et installer Python, comment m’en servir, comment installer d’autres logiciels qui me manquaient et qui étaient utilisés par le script, comment lancer le tout, etc. Je partais de loin.

Et puisque rien ne fonctionne du premier coup, j’ai aussi utilisé ChatGPT pour déboguer le script qu’il m’avait proposé. Parfois les erreurs provenaient de ChatGPT directement et parfois j’étais la source du problème. Plusieurs erreurs provenaient aussi de particularités propres à mes photos (les noms avec des caractères spéciaux, par exemple). 

À chaque fois, je copiais-collais les messages d’erreur que le script affichait, ou les problèmes que je voyais, et à chaque fois, ChatGPT me proposait une solution. 

En quelques heures seulement, j’ai été capable d’obtenir un premier script fonctionnel, que j’ai ensuite amélioré et optimisé – avec l’aide de ChatGPT – jusqu’à ce que je sois venu à bout de mes 10 000 fichiers sans métadonnées. 

Voici ce que j’ai appris en cours de route sur le Python, sur ChatGPT et aussi un peu sur moi. 

Constat 1: GPT4 vaut son prix si vous voulez coder

La version gratuite de ChatGPT a été entrainée avec le modèle de langage GPT3.5. La version payante (environ 30$ par mois avec les taxes), elle, permet d’utiliser un modèle plus avancé, GPT4.

Si vous avez quelque chose de complexe à créer, comme ici, l’investissement vaut vraiment la peine. Le script créé par ChatGPT avec GPT3.5 ne tenait par exemple pas compte du fait que certaines photos pouvaient être différentes, mais avoir le même nom. Celui créé avec GPT4 a pris cette réalité en considération du premier coup. 

s

Après plusieurs itérations, le script créé par ChatGPT fonctionne. Capture d’écran : Maxime Johnson.

GPT3.5 m’aurait peut-être permis d’arriver au même résultat, mais il m’aurait fallu plus d’essais et d’erreurs, et j’aurais perdu beaucoup de temps. 

D’ailleurs, il est bon de noter que ChatGPT, peu importe la version, se trompe souvent. La majorité du temps, les corrections qu’il me proposait étaient incomplètes. « Désolé pour la confusion, j’ai fait une erreur dans ma dernière modification » est probablement la phrase que le logiciel a le plus souvent écrite dans nos échanges. Très souvent, il s’agissait d’erreurs qu’un programmeur aurait décelées tout de suite, mais pas un néophyte comme moi. 

 Pour les curieux, j’ai aussi essayé avec StableLM, le nouveau modèle de langage ouvert de Stability AI (l’entreprise derrière le générateur d’images Stable Diffusion). Le résultat était très loin derrière ce que ChatGPT avait à offrir, peu importe la version.  

Constat 2: ChatGPT sait ce qu’il ne sait pas, et comment aller chercher l’info qui lui manque

Un échange avec ChatGPT m’a particulièrement impressionné. C’était alors que le script était assez avancé. Dans mes tests, celui-ci était capable de modifier les métadonnées de deux photos, mais pas d’une troisième. 

Jusqu’ici, à chaque problème soumis, ChatGPT avait proposé des modifications au code. Il avançait à tâtons. 

Dans cette interaction, ChatGPT propose un changement au script et me demande de le lancer et de lui dire ensuite ce qui sera affiché à l’écran, ce qui lui permettra de mieux comprendre ce qui se passe avec mes fichiers.

Capture d’écran : Maxime Johnson.

Dans cette interaction, ChatGPT propose un changement au script et me demande de le lancer et de lui dire ensuite ce qui sera affiché à l’écran, ce qui lui permettra de mieux comprendre ce qui se passe avec mes fichiers.

Dans l’exemple ci-haut, il a plutôt proposé des modifications au code qui allaient nous permettre d’en savoir plus sur le problème, ce qui lui permettrait ensuite de trouver une solution. Comme quelqu’un qui planifie ses coups aux échecs.

Je comprends que ChatGPT ne pense pas vraiment. Mais dans ce cas-ci, c’est vraiment l’impression que cela donnait. Notez d’ailleurs ma réponse par la suite : on dirait que je parle à un collègue, beaucoup plus qu’à un outil. 

Constat 3: toutes les instances de ChatGPT ne se valent pas

ChatGPT se souvient de ses échanges précédents. Quand vous commencez une conversation avec lui, celui-ci peut donc garder en mémoire les différentes itérations qui ont été effectuées dans le code, ce qui a déjà été essayé, et ce qui a échoué. Il est donc important de toujours poursuivre la même conversation. 

J’ai toutefois été forcé d’en lancer de nouvelles à quelques reprises, notamment après avoir effacé ma conversation par erreur pendant que je travaillais en pleine nuit, alors que j’aurais clairement été mieux d’aller me coucher. 

Lancer différentes conversations m’a toutefois permis de réaliser quelque chose. J’ignore pourquoi, mais l’efficacité de ChatGPT varie beaucoup d’une fois à l’autre. Certaines instances semblaient par exemple faire beaucoup plus d’erreurs que d’autres. 

Les solutions proposées variaient aussi beaucoup d’une conversation à l’autre. Si vous avez un jour à programmer quelque chose avec ChatGPT, n’hésitez pas à créer plusieurs conversations différentes et à expliquer votre problème à plusieurs instances différentes, puis à poser des questions pour savoir quel script vous convient le mieux. Vous pourriez même proposer à ChatGPT d’analyser les scripts créés par d’autres ChatGPT. 

Constat 4: il est facile de tomber dans l’anthropomorphisme

Il est facile de tomber dans l’anthropomorphisme avec ChatGPT lorsqu’on l’utilise pour résoudre un problème complexe. 

Ce n’était pas la première fois que j’utilisais ChatGPT, mais c’était la première fois que je m’en servais d’une manière aussi intensive. C’était aussi la première fois que je m’en servais pour régler un véritable problème, et non seulement pour faire des tests ou par curiosité.

Après une centaine d’échanges sur un même sujet, où une véritable conversation se forme, on vient qu’à percevoir le robot conversationnel plus comme un assistant que comme un simple outil. C’est ridicule, mais j’ai carrément eu un petit pincement au cœur quand j’ai effacé ma conversation principale avec lui (je le répète : il était temps que j’aille me coucher). 

Cette impression de discuter avec un assistant contribue à faire ressortir des traits qu’on associe à un humain. Je n’ai jamais été fasciné par le fait que Word accepte de sauvegarder mes documents sans broncher. Pourtant, on dirait que je m’attendais à ce que ChatGPT finisse par me dire « écoute vieux, ça ne marche pas ton affaire ». 

C’est certainement ce que j’aurais dit si j’avais été à sa place.

Constat 5: sans chercher à apprendre, je me suis amélioré

Heureusement que je n’ai pas abandonné. Car à force de déboguer et de faire des séances de remue-méninges avec ChatGPT pour résoudre différents problèmes (le premier script fonctionnel ralentissait par exemple beaucoup avec le temps, et ne pouvait traiter plus de 5000 images sur 100 000 à la fois), j’ai fini par retrouver toutes les métadonnées de mes photos. 

J’ai demandé à ChatGPT d’évaluer mes compétences comme codeur. Heureusement, il est un meilleur programmeur que gestionnaire en ressources humaines.

Capture d’écran : Maxime Johnson.

J’ai demandé à ChatGPT d’évaluer mes compétences comme codeur. Heureusement, il est un meilleur programmeur que gestionnaire en ressources humaines.

Et, détail intéressant, plus le processus avançait, plus j’étais autonome. J’étais même capable de déboguer certains problèmes sans en parler à ChatGPT. À force de répétition, j’ai appris par exemple ce qu’était l’indentation (en gros, la mise en page du programme est importante en Python), où devaient être placées les fonctions, et beaucoup plus.

Bien que ChatGPT croit que j’ai « une solide base en programmation » (c’est ce qu’il m’a répondu quand je lui ai posé la question), ce n’est évidemment pas le cas. Je ne pourrais toujours rien coder en partant d’une page blanche. Mais si j’avais à créer un autre script avec ChatGPT, je pourrais le faire plus rapidement et plus efficacement. 

Pour quelqu’un qui n’avait jamais vu une ligne de code en Python au début de la semaine et qui n’a jamais suivi aucun cours, c’est quand même un bon début.