Contenu du billet
Au début du mois de Mars 2023 le concours du Meilleur Dev de France a été relancé après 3 ans d’absence. Le Grand Gagnant de cette année a battu tous les records de vitesse en résolvant tous les exercices de la finale en 12 minutes sur les 45 minutes données.
La semaine suivante, OpenAI a déployé en grande pompe : ChatGPT4, annoncé comme une version qui surpasserait son prédécesseur avec des millions de paramètres en plus.
Dans cet article nous avons fait coder ChatGPT4 face au Meilleur Dev de France ; et ça a été un carnage.
Contexte
Le jeudi 9 mars dernier s’est déroulé le hackathon du Meilleur Dev de France (MDF) à Paris. L’événement, qui a été interrompu à cause de la crise sanitaire, a été rebaptisé Master Dev France et a été organisé par DocaPoste.
Les règles pour cette compétition sont simples : coder le plus vite possible. Chaque programmeur choisit son langage favori et doit résoudre une série de 3 exercices en moins de 45 minutes. Naturellement, la difficulté des exercices augmente au fur et à mesure.
Le concours est composé d’une phase de qualification (5 sessions) et d’une finale qui suivent tous le format de 3 exercices. Près de 600 développeurs ont concouru et seulement 175 ont pu accéder à la finale (35 qualifiés par session). Le classement final est déterminé par la rapidité du développeur, mais aussi par le nombre d’exercices qu’il a pu résoudre.
Le règlement autorise toutes les ressources, même sur Internet. L’utilisation de ChatGPT est aussi autorisée, mais comme tous les outils, il faut savoir l’utiliser.
FAQ du MDF : ChatGPT ou autres IA générative sont-elles autorisées ?
Elles ne sont pas interdites. Bien qu’elles peuvent être une aide, elles ne pourront pas remplacer le savoir-faire d’un développeur.
Le concours se déroule sur une plateforme où les candidats peuvent accéder aux instructions, télécharger des exemples de jeux de données et soumettre leur code.
Plateforme du concours MDF
ChatGPT vs le Meilleur Dev de France
Théophane VALLAEYS est le Grand gagnant de cette édition 2023. Il a déjà remporté le MDF 2019, à 19 ans seulement, alors qu’il était étudiant en prépa à Lille. Aujourd’hui, il est étudiant en Master 2 en Intelligence Artificielle à l’ENS Ulm à Paris.
Nous allons faire participer ChatGPT au hackathon. La méthode de travail est la suivante :
- ChatGPT refera exactement le parcours de notre Grand Gagnant : d’abord la session de qualification n°2, puis la finale s’il est qualifié (35 premiers).
- Nous utiliserons ChatGPT sans assistance humaine, c’est à dire que nous vérifierons s’il est capable de résoudre les problèmes du premier coup en donnant uniquement les consignes des exercices, sans debugger.
- Puis nous utiliserons ChatGPT avec une assistance humaine, c’est à dire que nous l’aiderons à debugger, uniquement en fournissant les messages d’erreur.
- Nous ferons concourir ChatGPT 4 puis ChatGPT 3.5.
Les exercices de la session 2 et ceux de la final sont présentés en annexe en fin d’article. Nous fournissons également un visuel du classement de toutes les sessions de qualification dans l’annexe.
Pour information, l’auteur a participé à la session de qualification n°5, et a terminé 70 sur 153 participants, mais n’a malheureusement pas pu être dans les 35 premiers pour être en finale.
Classement de ChatGPT en qualification
Le résultat de la phase de qualification est résumé dans le tableau suivant.
En abscisse nous avons le classement et en ordonnée le temps mis pour résoudre l’exercice. Le graphique peut être divisé en 4 sections : ceux qui ont pu résoudre 3 exercices, 2 exercice, 1 seul exercice et aucun exercice. Pour chacune des sections le plus rapide est sur la gauche, et le moins rapide sur la droite.
Sur la phase de qualification, ChatGPT n’a pas pu battre le Meilleur Dev de France. Et à plus forte raison, s’il n’a pas reçu d’aide humaine, il a été disqualifié et non classé !
Sans le support d’un développeur humain, c’est-à-dire en ne fournissant que les énoncés des exercices, ni ChatGPT3.5 ni ChatGPT4 n’ont su résoudre les problèmes du premier coup. Avec la version 3.5, il arrive même qu’il ne parte pas du code donné par la compétition, ce qui empêche de soumettre correctement le code. Nous avons aussi utilisé plusieurs langages de programmation et même soumis les instructions en anglais (disponible dans la compétition) pour vérifier si cela pouvait aider dans sa compréhension, mais sans succès.
Lorsqu’il reçoit une aide humaine, ChatGPT peut faire des merveilles ; surtout ChatGPT4. Le chatbot ne fournit pas la solution du premier coup : certains tests unitaires ne passent pas, ou bien la solution proposée effectue trop d’exécutions (à cause de boucles imbriquée ou de while qui ne se termine pas), ce qui fait que la plateforme refuse la proposition.
ChatGPT4 a pu corriger ses erreurs après un certain nombre d’allers-retours, ce qui nous a permis de résoudre les 3 exercices et d’être qualifiés pour la finale. Par contre, ChatGPT3.5 n’a pas su corriger ses erreurs dans le temps imparti. Ce qui a été troublant également est que ChatGPT3.5 continuait parfois de proposer exactement le même code faux alors que le prompt précédent signalait une erreur. Par conséquent, ChatGPT3.5 n’a pas pu se qualifier en finale et n’a pu résoudre que les 2 premiers exercices.
Classement de ChatGPT en finale
Le résultat de la finale est résumé dans le tableau suivant. Notons la performance de notre Grand Gagnant : il a pu terminer les 3 exercices en 12min20s !!!
En finale, ChatGPT4 a pu résoudre le premier exercice très rapidement, mais il est resté bloqué sur le second. Ce problème était lié au calcul du plus court chemin sur un réseau, où il fallait faire appel à l’algorithme de Dijkstra / au BFS. A un certain moment ChatGPT4 a implémenté cet algorithme, mais pas de manière suffisamment optimisée car la plateforme refusait la proposition à cause du dépassement du nombre d’exécutions (nous avons vérifié que la solution était bien acceptée par la plateforme). Par conséquent, en finale ChatGPT4 n’a pu finir qu’un seul exercice mais a tout de même fini 44ème sur 175 finalistes.
C’est donc haut la main que Théophane VALLAEYS remporte l’édition 2023 du MDF.
Différences pratiques entre ChatGPT4 et ChatGPT3.5
ChatGPT4 est beaucoup plus lent dans l’écriture de la réponse que la ChatGPT3.5. Empiriquement la 3.5 écrit 3 à 4 fois plus vite. Si ChatGPT4 avait la vitesse de ChatGPT3.5, il aurait pu gagner quelques places au classement.
ChatGPT4 est payant et il y a actuellement une restriction sur le nombre de prompt : 25 maximum toutes les 3 heures. Tandis que ChatGPT3.5 est gratuit et n’a pas de limite en nombre de prompts. Néanmoins il peut ralentir beaucoup en période de pointe (en fin de journée, quand les Etats-Unis se réveillent).
Conclusion
ChatGPT est une technologie de pointe utilisant l’Intelligence Artificielle. Mais cela reste un outil, un outil incroyable mais qui a son utilité et ses failles.
Sans le support d’un développeur humain, c’est-à-dire en ne fournissant que les énoncés des exercices, ni ChatGPT3.5 ni ChatGPT4 n’ont su résoudre les problèmes du premier coup. Après une batterie de tests en essayant plusieurs langages de programmation et en faisant la compétition en anglais, la conclusion reste la même : le chatbot a besoin d’un humain pour debugger.
Avec un support humain, ChatGPT3.5 a pu résoudre 2 exercices sur 3 dans la session de qualification, mais n’a pas pu se qualifier pour la finale. Il a beaucoup de difficultés à corriger son propre code, et a plusieurs fois reproposé le même script sans le corriger.
En revanche, ChatGPT4 a bien mieux concouru dans cette compétition et a pu accéder à la finale. Cependant, il est toujours loin de pouvoir rivaliser contre le Meilleur Dev de France en arrivant 44ème / 175 finalistes.
Les développeurs sont donc loin de se faire remplacer par des IA. Par contre, ils risquent forts de se faire remplacer par des développeurs qui utilisent efficacement ces IA.
ANNEXE : 4 conseils du Meilleur Dev de France pour se préparer à la compétition
Suite à sa double victoire en 2019 et 2023, Théophane VALLAEYS nous partage – et nous le remercions encore – 4 conseils de préparation :
- Bien connaître les algorithmes classiques : les dynamiques, graphes, BFS, Dijkstra.
- Bien s’entraîner sur les plateformes en ligne : LeetCode, Coding Game, Code Forces.
- Bien choisir son langage de programmation : pour les compétitions basées sur la vitesse comme le MDF, il est préférable de choisir des langages efficaces et peu verbeux comme C++ ou Python. Mais surtout qu’importe le choix, il faut bien le connaître et savoir bien programmer avec. Il faut aussi éviter d’utiliser des classes : il faut les objets les plus simples possibles.
- Préparer du code à l’avance, avec par exemple les algorithmes classiques.
Théophane nous partageait aussi son point de vue sur ChatGPT et sur les LLM (Large Langage Model) en général. Pour lui, ChatGPT reste un outil très efficace pour fournir des petits blocs de code qui sont « vus et revus ». Par contre, il n’est pas encore possible de lui faire totalement confiance dès que ça sort de l’ordinaire.
À ce titre, un candidat a réussi à se qualifier en finale en utilisant ChatGPT3.5, avec un bon classement de vitesse, par contre il s’est « planté en finale » car le chatbot était perdu.
Entretien avec Théophane VALLAEYS, Grand Gagnant du MDF 2019 et 2023 (sur Zoom)
ANNEXE : Visuels des classements des sessions de qualifications et de la finale
ANNEXE : Comparaison du code pour l’exercice 2 de la finale