Dr. Estelle Delouche
Dans le domaine de la recherche, la programmation informatique est une composante essentielle pour résoudre des problèmes complexes, tester des hypothèses et explorer de nouvelles approches. Une des principales difficultés est d’arriver à transcrire ce qu’on souhaite tester sous une nouvelle forme de langage : le code informatique. Toutes personnes ayant souhaitées se former à la programmation a déjà consacré de nombreuses heures à parcourir les forums pour trouver des solutions aux erreurs affichées ou pour déterminer quelles fonctions seraient optimales pour le problème à résoudre. C’est ici qu’on se demande alors si les NLP (Natural Language Processing) peuvent améliorer les expériences utilisateurs en fournissant des explications et codes de qualité. L’émergence d’assistants virtuels tels que ChatGPT ou Copilot pourraient offrir une aide précieuse sur la manière dont les développeurs accèdent à l’information sur les langages de programmation. Dans cet article, je vous propose un aperçu des avantages à utiliser un modèle de langage (ChatGPT version 4o en l’occurrence) pour aider à développer du code en langage Python.
1- Un apprentissage actif
L’un des avantages majeurs de l’assistant virtuel réside dans sa flexibilité et sa capacité à fournir rapidement un code fonctionnel (quelques secondes) avec des explications détaillées. Ainsi, en générant du code tout en expliquant le rôle de chaque fonction ou bibliothèque employée, l’assistant offre une réelle valeur pédagogique.
Erreur de mon code :
L’erreur ValueError: could not convert string to float: ‘2018-08-23’ signifie que l’algorithme essaie de traiter une colonne contenant des dates (‘2018-08-23’) comme si c’était une valeur numérique, ce qui n’est pas possible.
Explication de ChatGPT :
La colonne de dates doit être supprimée avant d’entraîner les modèles, mais nous pouvons la conserver pour l’analyse et la visualisation après les prédictions.
Ainsi qu’il s’agisse d’un développeur débutant souhaitant comprendre des concepts de base ou d’un expert cherchant des solutions avancées, tout le monde y trouve son compte. Par exemple, lors de la création d’une application ou de l’optimisation d’un algorithme, ChatGPT détaille non seulement le processus, mais suggère aussi des alternatives et des améliorations.
Par exemple, j’ai demandé à ChatGPT un coup de main pour déployer des algorithmes de machine learning sur des données de vélo (Dataset disponible sur le site « Ile de France Mobilité »). L’objectif était de pouvoir prédire le nombre de passages de vélo à une localisation donnée. Le chatbot m’a naturellement conseillé d’utiliser plusieurs algorithmes de régression et d’optimiser les résultats en sélectionnant les meilleurs paramètres de chaque modèle à l’aide d’un « GridSearch ». Ainsi j’ai pu comparer les différents modèles mais également choisir le modèle le plus approprié en fonction de mes données et des paramètres.
2- Prise en main intuitive
Une des difficultés en programmation est d’arriver à transcrire ce que l’on souhaite obtenir en code fonctionnel. Pour des calculs ou faire une figure explicative détaillée mais la plus lisible possible, il faut parfois y consacrer beaucoup de temps… Et le résultat n’est pas toujours celui que l’on avait imaginé !
Dans le cadre de mes projets, j’ai trouvé que ChatGPT arrivait très bien à transcrire mes idées en code python, quitte à ce qu’il réécrive ma demande pour être sûr d’être en accord avec ce que je souhaitais.
Prompt :
« Est-ce que tu peux décaler un peu à droite l’annotation car elle empiète sur le graphique ? »
Réponse de ChatGPT :
Pour décaler l’annotation légèrement à droite pour éviter qu’elle ne chevauche le graphique, tu peux ajuster la position de l’annotation en modifiant les coordonnées de xytext. Cela te permettra de déplacer l’annotation horizontalement tout en gardant une bonne lisibilité.
Selon moi, un des points faibles de Python est son interface graphique que je ne trouve pas très pratique comparée à Matlab qui par exemple offre une grande liberté sur la création et modification de graphiques, basée sur une version interactive comme Illustrator. Sur Python, pour modifier un détail voire en ajouter, il faut refaire entièrement la figure. C’est-à-dire repenser la section du code afin que les éléments soient placés de façon stratégique. Avec l’aide de ChatGPT, j’ai pu non seulement créer des graphiques plus complexes, mais également plus jolis et plus compréhensibles. Ce qui est finalement plus pratique et plus rapide que de passer en revue les réponses d’utilisateurs sur Stack Overflow !
3- Quelques limitations
Attention toutefois : une personne sans connaissances approfondies en programmation peut rencontrer des difficultés en utilisant un assistant virtuel comme ChatGPT. En effet, ce type d’outil peut générer des erreurs dans certaines tâches : lors de la création de représentations graphiques, ce qui peut entraîner des erreurs d’interprétation (voir Figure 1). Ou encore, en ce qui concerne les algorithmes de Machine Learning, une personne expérimentée sait qu’il est impératif de ne pas entraîner un modèle et prédire sur le même jeu de données. Cette précaution n’est pas automatiquement prise en compte par le LLM qui peut parfois oublier comment ont été définies les variables. Cependant, si l’on souligne l’erreur, le modèle peut « comprendre » et ajuster le code en conséquence. Ainsi, un utilisateur non expérimenté pourrait commettre des erreurs en se fiant à un code qui fonctionne techniquement, mais qui est incorrect sur le plan méthodologique. À l’inverse, un programmeur expérimenté repérera rapidement ces incohérences et pourra les corriger facilement.
Mon conseil est donc de toujours visualiser vos variables, vérifier les dimensions des données, et comparer les résultats obtenus (pourquoi pas à l’aide de figures !). De plus, si vous avez déjà une idée du résultat attendu, vous augmentez vos chances d’obtenir un code correct.


Figure 1 : en haut : graphique représentant les valeurs réelles du nombre de vélos rangées par dates (courbe bleue), et la prédiction obtenue par le modèle (courbe rouge). D’après ce qu’on voit, le modèle ne converge pas vers une solution, et les résultats sont complètements aléatoires. En bas : Graphique montrant les valeurs de la prédiction ordonnée par date. La différence entre les deux graphiques réside dans le fait que ChatGPT n’a pas classé les valeurs de la prédiction en fonction de la date, ce qui induit en erreur l’utilisateur pensant que le modèle ne convergeait pas. Au final, les prédictions sont très bonnes (et la qualité du modèle peut toujours être vérifiée en calculant la RMSE (écart quadratique moyen) par exemple !)
En conclusion :
ChatGPT m’a agréablement surprise par la qualité et la pertinence de ses réponses. Il s’avère particulièrement performant pour l’écriture de codes complexes tout en offrant des explications claires et accessibles sur des algorithmes, même pour les débutants. Toutefois, comme évoqué dans la dernière partie de cet article, il est essentiel de surveiller les résultats et de tester les solutions proposées. Un programmeur expérimenté y verra un gain de temps significatif tandis qu’un débutant pourra commencer à apprendre la programmation !
Finalement, les techniques de prompt engineering, qui consistent à formuler des prompts efficaces, permettent d’explorer des sujets plus complexes. Par exemple, il devient possible de créer des graphiques plus détaillés, comme c’est le cas avec la figure 2 où on a pu changer la police du graphique, rajouter des légendes et même préciser le moment lié au premier confinement !
Ainsi, utiliser des assistants virtuels dans la création de code est un véritable avantage et permet d’explorer de nouvelles approches de programmation et de tester rapidement différents modèles. Ces outils offrent également la possibilité d’expérimenter des concepts plus avancés, d’optimiser des algorithmes, et d’automatiser certaines tâches répétitives. Grâce à cette assistance, les développeurs peuvent se concentrer davantage sur l’innovation et la résolution de problèmes complexes, plutôt que sur les aspects techniques.

Figure 2 : Graphique final montrant les données réelles (courbe grise) et celle prédite par un modèle de gradient boosting (courbe rouge). On peut voir que le minimum du nombre de vélo est dû au premier confinement, et que les augmentations en septembre sont dues à des utilisateurs qui utilisent plus le vélo au moment de la rentrée !