Langues: English · Nederlands · Deutsch · Español · Français · Italiano · Português · Papiamentu · Frysk

Index / Articles / Générer du code avec l'IA

Générer du code avec l'IA

Programmer avec des super-pouvoirs

Publié
Mis à jour
(créé )
Écrit par
Willem L. Middelkoop
Sujets
AI · cloud · données · programmation · serveur · travail
Version humaine de cet article
https://willem.com/fr/2023-05-03_generer-du-code-avec-l-ia/
English
Using AI to generate code
Nederlands
AI gebruiken om code te genereren
Deutsch
KI-gestützte Codegenerierung
Español
Usando IA para generar código
Italiano
Usare l'AI per generare codice
Português
Usar IA para gerar código
Papiamentu
Usa AI pa generá kòdigo
Frysk
AI brûke om koade te generearjen
Langues
Traduit de l’original anglais par un modèle de langage en deux passes (traduction et relecture) avec un glossaire et un correcteur orthographique ; pas encore relu par un lecteur de langue maternelle.

Résumé

Dans le cadre de mes efforts d'optimisation logicielle pour réduire les coûts du cloud, je devais remplacer un logiciel serveur inefficace par quelque chose qui s'appuie sur des outils plus robustes (mais éparpillés) disponibles dans Debian GNU/Linux. Le modèle de langage GPT4 pouvait-il me servir un peu de magie IA ? Lis la suite !

Texte intégral

Parmi les services cloud de mon entreprise, il y a le « Lemmid Manager », un système de gestion de contenu intégré qui prend des données brutes (textes, vidéos, images) et génère de beaux sites web statiques à hautes performances. Face à l'explosion des coûts du cloud, je réécris certaines parties du logiciel pour les rendre plus efficaces : utiliser moins de puissance de calcul pour obtenir les mêmes résultats.

Rotation des images

Tu ne t'en rends peut-être pas compte, mais chaque fois que tu prends une photo avec ton téléphone, elle est toujours enregistrée en paysage (ou en format large). Quand tu prends une photo en portrait (à la verticale), ton téléphone ajoute simplement un peu d'information supplémentaire qui mémorise la façon dont tu tenais l'appareil, pour que la photo s'affiche dans le bon sens quand tu la regardes plus tard. Il est plus rapide d'écrire un petit bout d'information (en plus) que de faire pivoter les bits et les octets qui composent ton image.

Tout va bien tant que la photo ne quitte pas ton téléphone, mais quand on la met en ligne sur un site web, elle doit être optimisée pour le web. Les bits et les octets de l'image doivent alors refléter le contenu réel de la photo. L'image peut ensuite être encore mieux optimisée pour la vitesse de chargement et pour différentes tailles d'écran.

Rotation automatique basée sur l'EXIF

Les appareils photo (de smartphone) modernes enregistrent l'orientation dans ce qu'on appelle l'EXIF, qui accompagne les données de l'image. Pour que l'image (ses bits et ses octets) reflète correctement l'orientation de l'appareil, il faut lire les données EXIF et, selon l'orientation, appliquer un algorithme de rotation aux bits et aux octets de l'image.

Implémentation actuelle

L'implémentation d'origine (écrite à la main) utilise NodeJS et un module appelé « lwip » (LightWeight ImageProcessor). Ça marche bien dans la plupart des cas, mais comme les images ont grossi (avec plus de mégapixels), les besoins en mémoire ont fortement augmenté. L'inconvénient de tout faire dans un seul processus NodeJS, c'est que l'ensemble devient un peu glouton en mémoire : tout le backend NodeJS souffre quand on le pousse dans ses derniers retranchements en traitant des milliers de photos.

Une stratégie courante pour optimiser les goulots d'étranglement d'un logiciel consiste à les sortir du programme principal. Au lieu de traiter les images directement depuis NodeJS, je veux utiliser des outils Debian GNU/Linux courants (qui ont fait leurs preuves) pour la rotation automatique. Depuis NodeJS, je peux alors appeler l'outil externe « auto_rotator » et attendre qu'il ait terminé. Quand un processus NodeJS attend un résultat asynchrone (un callback), il redevient disponible pour d'autres requêtes.

GPT4 comme générateur de code

Ce qui est génial avec le logiciel libre, c'est qu'il existe plein de briques que tu peux utiliser pour construire tes propres programmes. Je savais que Debian GNU/Linux propose des outils capables de faire pivoter des images d'après les données EXIF. Le défi, c'est de créer un seul script qui combine ces différents outils pour faire le travail, tout en gérant les exceptions de façon robuste.

Au lieu de me plonger moi-même dans toutes les commandes et options disponibles, j'ai décidé de demander à GPT4 de me générer un script qui fait précisément ce que je voulais, avec les outils standard de Debian GNU/Linux :

Générer du code, c'est aussi simple que de taper une consigne descriptive
Générer du code, c'est aussi simple que de taper une consigne descriptive

En quelques secondes, GPT4 d'OpenAI a généré un script bash qui utilise ImageMagick (un outil graphique courant) pour modifier l'image d'après les données EXIF d'un fichier donné. L'IA a choisi « exiftool » pour lire l'orientation et, selon le résultat de cet outil, lance la commande « convert » d'ImageMagick pour appliquer la bonne rotation.

Le code généré par GPT4, « auto_rotate.sh », qui fait pivoter les images avec ImageMagick d'après l'orientation EXIF
Le code généré par GPT4, « auto_rotate.sh », qui fait pivoter les images avec ImageMagick d'après l'orientation EXIF

Le code complet (généré en quelques secondes) est joliment commenté, ce qui permet de bien comprendre ce qui se passe. Il est structuré et optimisé pour être lu par des humains.

Documentation

En plus du code qui fonctionne, l'IA a livré une documentation expliquant comment utiliser le nouveau logiciel, avec les instructions d'installation. C'est quelque chose que la plupart des programmeurs négligent, je le sais (la documentation technique passe souvent après tout le reste).

Les instructions de l'IA pour utiliser le code généré : la plupart des vrais programmeurs peuvent apprendre de sa clarté de communication
Les instructions de l'IA pour utiliser le code généré : la plupart des vrais programmeurs peuvent apprendre de sa clarté de communication

Conclusion

En quelques minutes, j'avais un morceau de code qui fonctionne, documenté, et qui m'aide à résoudre un goulot d'étranglement dans un logiciel cloud. C'est tout simplement incroyable : ça m'a fait gagner du temps (que j'ai ensuite utilisé pour écrire cet article de blog).

On ne peut que se demander quels effets les grands modèles de langage comme ChatGPT/GPT4 auront sur notre façon de travailler. J'adopte pleinement les outils d'IA : savoir s'en servir sera essentiel dans un futur proche (je pense) !

Un programmeur du futur, imaginé par DALL-E d'OpenAI
Un programmeur du futur, imaginé par DALL-E d'OpenAI

Formats lisibles par machine de cette page