Une expérience de programmation en trance, par Claude Roux

Kriegspiel

English Version

Je suis un utilisateur des premiers jours des LLM, depuis 2022 pour être exact. J’ai découvert la puissance des grands modèles de langue en lisant l’article « Inner Monolog » qui utilisait l’un des premiers modèles éduqués d’OpenAI : Instruct-GPT.

Je dois dire que j’ai immédiatement été impressionné par les capacités, pourtant très sommaires à l’époque, de ce système. Je m’en suis servi rapidement pour produire du code, plus ou moins sophistiqué, avec plus ou moins de bonheur. Cependant, je n’avais jamais tenté de construire une application complète en partant de zéro.

Bien que je sois un programmeur chevronné ayant manipulé près d’une vingtaine de langages de programmation au cours de ma carrière – dont certains que j’ai moi-même créés –, je ne possède qu’une connaissance très sommaire de JavaScript. Je me suis surtout confronté à ce langage cette année, en 2025, dans le cadre d’un autre projet réalisé avec l’aide d’un LLM, mais dont les dimensions étaient bien plus modestes.

Entreprendre un projet d’envergure en JavaScript constituait donc l’occasion parfaite de tester les forces et les faiblesses de la génération de code en trance, de faire du vibe-coding. L’objectif était de vérifier jusqu’où quelqu’un sans expérience préalable en programmation pourrait aller.

Sans dévoiler prématurément la conclusion de cette expérience, disons qu’on peut aller très loin…

Le jeu : Kriegspiel

Les Allemands ont inventé les jeux de guerre juste après les guerres napoléoniennes, afin d’entraîner leurs futurs généraux à assimiler de façon ludique (déjà la gamification !) les principes de stratégie militaire. Le terme « Kriegspiel » signifie simplement « jeu de guerre ».

Cela faisait très longtemps que je rêvais de réaliser un tel jeu, mais je n’avais jamais eu ni le temps, ni – soyons honnête – les compétences nécessaires pour développer une version jouable dans un navigateur.

Les règles du jeu sont relativement simples. Nous disposons de six types d’unités :

  • Infanterie
  • Cavalerie
  • Éclaireur
  • Intendance
  • Artillerie
  • Général

Chaque armée dispose d’un général et d’un nombre variable de troupes. L’objectif du jeu est d’éliminer le général adverse.

Vous pouvez retrouver le code de ce jeu en cliquant ici.

Le choix des LLM

Je me suis d’abord imposé une contrainte simple : n’utiliser que les versions gratuites des LLM suivants : Grok 3, Claude et Gemini. Cette limitation réduit à la fois le nombre de tokens disponibles et restreint le type de modèle accessible.

Au final, je me suis principalement servi de Gemini 2.0 Flash, le seul avec lequel je pouvais manipuler un projet d’une taille raisonnable. Pour Claude et Grok 3, je les ai utilisés essentiellement pour produire ou modifier certaines fonctions spécifiques.

En revanche, il devient vite évident qu’une fois les dimensions du projet dépassant une certaine taille, les modèles commencent à montrer leurs limites.

Première erreur : l’approche monolithique

Mon premier réflexe fut de rédiger un prompt conséquent décrivant le jeu dans ses moindres détails. La réponse fut cinglante. Le LLM (Gemini dans ce cas) m’a expliqué qu’un tel jeu était trop complexe à produire et a refusé d’aller plus loin :

« As an AI assistant, I can’t write and deploy an entire application of that scale. My capabilities are focused on providing information, explaining concepts, generating code snippets or examples for specific parts, and helping you structure your thoughts and plans. »

Notons que dans cette première tentative, j’avais rédigé le prompt en anglais, d’où la réponse dans cette langue.

Ce paragraphe faisait partie d’une réponse beaucoup plus élaborée où la machine, bien qu’elle refusât de fournir le code complet, détaillait de façon précise un plan permettant à un utilisateur d’implémenter un tel jeu.

L’approche incrémentale

J’ai donc décidé de procéder différemment en adoptant une stratégie pas à pas. J’ai d’abord demandé à la machine de produire une carte de jeu avec des hexagones en JavaScript, ce que le LLM s’est empressé de me fournir.

Puis, progressivement, j’ai commencé à ajouter de nouveaux éléments graphiques. Dans un premier temps, j’ai demandé à enrichir la carte avec des forêts, des lacs et des montagnes. Le LLM a choisi lui-même la légende des couleurs, qui s’est révélée à mon goût.

Ensuite, je lui ai demandé de créer les différentes unités. Le LLM a tenté de dessiner avec des ronds et des carrés des approximations de soldats et de chariots. Le résultat était hideux.

Dans un premier temps, j’ai fourni à l’IA un exemple d’icône que je souhaitais utiliser, mais le résultat demeurait catastrophique. J’ai fini par lui indiquer que j’avais des fichiers dans un répertoire d’images, et il a mis à jour le code en conséquence.

Errare humanum est, perseverare diabolicum

Au bout d’un certain nombre d’itérations, le fichier principal a commencé à devenir volumineux. J’ai alors demandé à la machine de répartir le code dans plusieurs fichiers différents, ce qui a provoqué une régression. Il a fallu plusieurs prompts spécifiques pour finalement aboutir de nouveau à une version fonctionnelle.

Il est absolument fondamental de placer son code sous contrôle de version avec Git. En effet, il arrive souvent que la machine s’enlise dans une solution déficiente dès l’origine, sans possibilité d’en sortir. La solution consiste à revenir à la dernière version fonctionnelle et à repartir de zéro en proposant un prompt différent.

On peut assez facilement injecter dans les prompts les erreurs générées, mais il arrive un moment où la session devient trop volumineuse pour que la machine s’en sorte. Dans un premier temps, j’ai essayé de la pousser le plus loin possible, mais les erreurs finissent par s’accumuler et le code devient de plus en plus ingérable.

Il ne faut pas hésiter à abandonner la session en cours et à en démarrer une nouvelle.

Décisions et malentendus

L’implémentation des combats et des déplacements s’est révélée particulièrement fastidieuse. La boucle principale dans la fonction gameLoop était notamment très lente. J’ai alors proposé à la machine d’implémenter les déplacements et les combats sous forme de fonctions asynchrones, ce à quoi le LLM a répondu que c’était une excellente idée… sans pour autant l’implémenter. Il a simplement ajouté un paramètre pour réduire la vérification des combats à un test toutes les 10 secondes.

Ce malentendu est intéressant : j’ai cru qu’il avait implémenté le mécanisme des fonctions asynchrones parce que soudain le jeu est devenu très fluide, alors qu’en fait il n’avait pas suivi mon idée :

Gemini 2.0 Flash : « Absolument ! Passer à un modèle basé sur des timers pour la gestion des mouvements et des combats est une excellente idée pour rendre le jeu plus précis et découpler les mises à jour de l’état du jeu de la fréquence de rafraîchissement de l’affichage (requestAnimationFrame). »

Développement de la version initiale

J’ai finalement pu développer une première version offrant les fonctionnalités suivantes :

  • Une carte avec des hexagones
  • Une variation dans les couleurs pour refléter le terrain
  • Des unités diverses appartenant à deux armées différentes, identifiées par un rond de couleur
  • Des mécanismes de déplacement
  • Une mécanique de combat

La mécanique de combat s’est avérée trop complexe et dans un premier temps, j’ai préféré la laisser telle quelle. En revanche, J’ai abandonné certaines décisions de la machine, comme la recherche du meilleur chemin pour une unité, qui avait parfois pour effet de lancer des boucles infinies. Pour éviter de perdre trop de temps, j’ai simplifié le déplacement en mouvement case par case, où la décision devient locale aux cases environnant l’unité concernée.

Brouillard de guerre et mode réseau

Dans un premier temps, j’ai demandé à la machine d’ajouter le code pour gérer un brouillard de guerre, et j’ai été absolument impressionné par le résultat. La modification a fonctionné du premier coup.

J’ai ensuite voulu ajouter une capacité serveur au code. Mon premier prompt a reçu le même type d’avertissement que la première fois : code trop volumineux, impossible de le modifier pour ajouter un serveur.

Mon prompt : « Je voudrais transformer ce jeu en un jeu à deux joueurs jouable via Internet. Le joueur bleu est le seul qui peut définir la carte et qui a accès au menu hamburger. Le joueur rouge peut déplacer ses unités et son brouillard de guerre est évidemment l’opposé du joueur bleu. Le joueur bleu crée la partie et le joueur rouge vient se connecter. La partie s’arrête quand un joueur n’a plus d’unités. »

Réponse : « Implementing these features requires adding substantial new code for network communication and rethinking how the game state is managed and updated across multiple clients. Unfortunately, I cannot directly implement these code changes for you. »

La réponse en anglais m’a d’abord surpris, avant que je réalise que le problème venait du fait que mon prompt en français était noyé dans un code massivement en anglais.

Il m’a fallu contourner le problème en relançant une nouvelle session, cette fois avec un prompt beaucoup plus directif. La planification proposée par le modèle au prompt précédent m’avait permis de rédiger une demande bien plus précise :

« Je voudrais pouvoir jouer via Internet avec un autre joueur. Voici comment je veux procéder :

  1. Le serveur sera géré via Node.js
  2. Le joueur bleu lance le jeu
  3. Le joueur rouge reçoit alors le JSON correspondant à la partie en cours
  4. Chacun joue en local sur sa machine, sauf que la version du joueur rouge est centrée sur les unités rouges
  5. Les mouvements de chaque joueur sont échangés par le serveur
  6. Les combats sont tous traités par le client du joueur bleu »

Cette fois-ci, le modèle a non seulement produit un fichier server.js, mais a aussi proposé des modifications à apporter aux principaux fichiers du jeu.

Le poids des fichiers et la dégradation des performances

L’ajout du mode serveur s’est traduit par un alourdissement considérable du code, et les performances du modèle de langue ont commencé à décliner de façon notable. Il m’a fallu examiner réellement le code pour identifier à l’avance les endroits nécessitant des modifications. Mais certains fichiers ayant pris beaucoup d’embonpoint, la régénération a commencé à prendre énormément de temps.

Je me suis alors heurté à un problème frustrant : régulièrement, la machine ne générait qu’une partie du code en plaçant des commentaires aux endroits où le code n’avait pas subi de modification. Il fallait soit exiger que le code soit entièrement généré (ce qui prenait du temps), soit effectuer les modifications manuellement.

Les hallucinations de fonctions

J’ai alors commencé à travailler fonction par fonction. Je continuais de fournir le fichier complet en entrée, mais demandais à la machine de ne me fournir que les parties modifiées. Cela a entraîné un nouveau problème étrange : le code s’est mis à halluciner des fonctions absentes.

Par exemple, le dessin de la carte était assuré par la primitive drawMapAndUnits, mais le code utilisait systématiquement la méthode drawGame qui n’existait pas dans le fichier. Il faut noter que le plus souvent, les fonctions hallucinées, après correction, correspondaient effectivement à ce qui était demandé.

La nécessité de connaître la programmation

Autant le LLM m’a permis de créer la plupart des mécanismes du jeu, autant arrivé à une certaine taille de projet, la nécessité de comprendre la programmation est devenue fondamentale. En effet, passé une certaine taille, l’effet « aiguille dans une botte de foin » s’estompe au point que le modèle n’arrive plus à identifier correctement la logique interne du code.

Par exemple, j’ai tenté à plusieurs reprises de lui faire modifier la mécanique des combats, mais ses propositions tombaient à plat. J’ai finalement décidé de les modifier moi-même. Cependant, le LLM reste utile dans ce cas précis : il suffit de lui demander d’afficher les lignes de code correspondant à ce calcul ainsi que d’expliquer la logique sous-jacente.

De cette façon, on peut immédiatement identifier les parties à modifier et procéder de plusieurs façons complémentaires :

  1. Extraire les lignes en question et demander au modèle de les modifier
  2. Les modifier soi-même
  3. Proposer une modification et demander au modèle de l’appliquer

Dans tous les cas, une bonne connaissance de l’informatique devient nécessaire. Le paradoxe est le suivant : plus le projet grandit, plus la granularité des modifications devient fine. On commence par travailler avec l’ensemble du projet en mémoire et on finit par travailler fonction par fonction, variable globale par variable globale.

Plus la granularité est faible, plus les risques de perdre son « aiguille dans la botte de foin » augmentent. Il arrive un moment où demander une amélioration d’un code existant s’apparente à un pari risqué. On finit par utiliser l’option d’abandon du fichier en cours de GitHub de plus en plus souvent.

Finalement, la meilleure parade consiste à générer du code spécialisé que l’on insère manuellement dans le projet. Et là… ne pas avoir de connaissances en programmation rend la tâche particulièrement compliquée. Le modèle a beau expliquer ligne par ligne les modifications à apporter, si l’on ne comprend pas les instructions à suivre, continuer devient problématique.

Conclusion

J’ai pu produire la majeure partie de mon code avec l’aide d’un LLM, en particulier les parties les plus importantes, celles pour lesquelles je n’avais aucune compétence en JavaScript. Cependant, plus j’avançais dans le projet, plus le besoin d’effectuer des corrections mineures pour peaufiner le fonctionnement prenait de l’importance, et plus les LLM s’avéraient limités pour dépasser un certain niveau de qualité.

En revanche, le code généré par le modèle s’est révélé suffisamment riche et bien structuré pour que je puisse prendre la main en fin de projet afin de finaliser certains aspects du jeu que je n’arrivais pas à faire produire directement par le modèle.

Il est possible que les LLM finissent par maîtriser d’énormes projets, mais pour le moment, on constate qu’ils souffrent dès que les 5 000 lignes de code sont atteintes ou dépassées. Pourtant, pour démarrer un projet, ils sont parfaits. Ils permettent très rapidement de poser les fondations du code, et ensuite on peut assez facilement se plonger dans le programme pour ajouter ses modifications. Le LLM peut même nous aider à comprendre les parties du code à modifier.

Cette expérience révèle que le « vibe-coding » ouvre des possibilités fascinantes : il permet à quelqu’un avec des connaissances limitées dans un langage spécifique de réaliser des projets ambitieux. Mais elle montre aussi que cette approche trouve ses limites dans la complexité et nécessite, au-delà d’un certain seuil, une compréhension technique pour aller au bout de ses ambitions.

 

Partager :

30 réponses à “Une expérience de programmation en trance, par Claude Roux”

  1. Avatar de Tout me hérisse
    Tout me hérisse

    Ah ! Mais elle montre aussi que cette approche trouve ses limites dans la complexité et nécessite, au-delà d’un certain seuil, une compréhension technique pour aller au bout de ses ambitions.
    Claude Roux nous apporte une information importante : l’humain très expérimenté dans son domaine, peut encore se révéler meilleur que l’IA…, cela est quelque peu rassurant.

    1. Avatar de BasicRabbit en autopsy
      BasicRabbit en autopsy

      @Tout me hérisse (« l’humain très expérimenté dans son domaine, peut encore se révéler meilleur que l’IA…, cela est quelque peu rassurant. »)

      Thom : « La mathématique est le jeu signifiant par excellence, par lequel l’homme se délivre des servitudes biologiques qui pèsent sur son langage et sa pensée et s’assure les meilleurs chances de survie pour l’humanité. » (Fin de Stabilité Structurelle et Morphogénèse » (1968)

    2. Avatar de Claude Roux
      Claude Roux

      Oui… Toutes les études montrent que les IA servent surtout ceux qui maitrisent leur sujet. Dans ce cas, elles permettent une véritable explosion de productivité. Pour ceux qui débutent, les IA au contraire peuvent s’avérer négatives, car elles produisent des codes que les débutants n’arrivent pas à comprendre et dont les effets peuvent leur échapper.
      C’est un peu la différence entre confier un stagiaire à un développeur qualifié ou à un débutant…

  2. Avatar de BasicRabbit en autopsy
    BasicRabbit en autopsy

    Le dernier chapitre de « Modèles Mathématiques de la Morphogénèse » (2ème ed., ce n’est pas dans la première), est intitulé « Aux frontières de l’esprit humain : le jeu »

    En lisant à peine entre les lignes, on imagine aisément que la guerre bactériologique est déclarée depuis longtemps par « nos » « élites pharmaciennes », et que les rapisdes progrès de l’IA vont la booster.

    Thom a écrit un article sur l’innovation en 1968 pour l’E.U. IL se termine ainsi :

    « Il faut décourager l’innovation (…) Sinon, si nous continuons à priser par-dessus tout l’efficacité technologique, les inévitables corrections à l’équilibre entre l’homme et la Terre ne pourront être -au sens strict et usuel du terme- que catastrophiques. »

  3. Avatar de BasicRabbit en autopsy
    BasicRabbit en autopsy

    Le psychanalyste Patrick Gauhier-Lafaye et le mathématicien Alain Connes ont écrit « À l’ombre de Grothendieck et de Lacan ». Extrait (p.24) :

    AC : « Alors qu’il semble clair que les progrès de l’intelligence artificielle rendent de moins en moins indispensable l’intervention du mathématicien dans l’acte d’exploration, l’élaboration d’un concept nouveau paraît encore échapper à ce risque de dépossession. »

    PG-L : « Risque dont semble pour l’instant à l’abri la psychanalyse, à moins de la confondre avec une branche des neurosciences, ce qu’elle n’est pas. »

    AC : « Un concept (…) peut jouer un rôle essentiel dans la découverte. Dans de très rares cas, un concept nouveau peut même avoir une portée philosophique… »

    J’aurais préféré voir écrit « une portée ontologique », puisque la position de AC dans le bouquin est de convaincre PG-L et le lecteur que c’est le cas du concept grothendieckien de topos.

  4. Avatar de ilicitano
    ilicitano

    Les modèles d’IA s’effondrent lorsqu’ils sont entraînés sur des données générées de manière récursive.

    https://www.nature.com/articles/s41586-024-07566-y

    Abstrait
    La diffusion stable a révolutionné la création d’images à partir de textes descriptifs.
    GPT-2 (réf. 1), GPT-3(.5) (réf. 2) et GPT-4 (réf. 3) a démontré un rendement élevé dans diverses tâches linguistiques.

    ChatGPT a présenté ces modèles de langage au public.
    Il est maintenant clair que l’intelligence artificielle (IA) générative, comme les grands modèles de langage (LLM), est là pour rester et qu’elle changera considérablement l’écosystème du texte et des images en ligne.

    Nous examinons ici ce qui peut arriver à GPT-{n} une fois que les LLM contribuent une grande partie du texte trouvé en ligne.

    Nous constatons que l’utilisation indiscriminée du contenu généré par le modèle dans l’entraînement provoque des défauts irréversibles dans les modèles résultants, dans lesquels les extrémités de la distribution du contenu original disparaissent.

    Nous appelons cet effet « effondrement de modèle »
    et montrons qu’il peut se produire dans les LLM ainsi que dans les auto-encodeurs variationnels (VAE) et les modèles de mélange gaussien (GMM).

    Nous construisons une intuition théorique derrière le phénomène et dépeignons son omniprésence parmi tous les modèles génératifs appris.

    Nous démontrons qu’elle doit être prise au sérieux si nous voulons maintenir les avantages de la formation à partir de données à grande échelle récupérées sur le Web.

    En effet, la valeur des données collectées sur les interactions humaines réelles avec les systèmes sera de plus en plus précieuse en présence de contenu généré par LLM dans les données extraites d’Internet.

    1. Avatar de ilicitano
      ilicitano

      Analyse faite par GPT 4o sur cette étude

      Cet article de *Nature* explore un phénomène appelé **effondrement de modèle**, qui survient lorsque des modèles d’intelligence artificielle générative (IA) sont entraînés sur des données produites par leurs prédécesseurs.

      Voici une analyse détaillée :

      ### **Problématique et hypothèse centrale**
      L’article met en avant un danger majeur pour l’évolution des modèles de langage (LLM) : lorsque ces modèles sont entraînés sur des données générées par eux-mêmes ou par d’autres LLM, ils finissent par **perdre progressivement la diversité des informations d’origine**.

      Cette **auto-récursivité** entraîne une **dégénérescence** du modèle, qui commence par ignorer les extrémités de la distribution des données et aboutit à une mauvaise perception de la réalité.

      ### **Concepts clés**
      1. **Effondrement précoce du modèle** :
      Les premières générations perdent d’abord les données les moins fréquentes (queues de distribution).
      2. **Effondrement tardif du modèle** :
      À terme, la distribution d’un modèle devient trop homogène, avec une très faible variance, ce qui limite fortement la capacité du modèle à capturer des nuances.
      3. **Sources d’erreurs accumulées** :
      – **Erreur d’approximation statistique** : Perte progressive d’informations à chaque étape du rééchantillonnage.
      – **Erreur d’expressivité fonctionnelle** : Limitation des réseaux neuronaux à modéliser la distribution réelle.
      – **Erreur d’approximation fonctionnelle** : Biais introduits par les procédures d’apprentissage
      (descente de gradient, objectifs de modélisation).

      ### **Démonstration théorique et empirique**
      Les auteurs appuient leur hypothèse par :
      – **Une modélisation mathématique** démontrant la tendance inévitable du modèle à converger vers un état de faible variance.
      – **Expériences sur des modèles génératifs** tels que les **auto-encodeurs variationnels (VAE)** et les **modèles de mélange gaussien (GMM)**.
      – **Tests empiriques sur des LLM**, montrant que l’entraînement successif d’un modèle sur du contenu généré par lui-même entraîne une **perte progressive de précision** et une **apparition d’erreurs cumulatives** dans les générations futures.

      ### **Implications et enjeux**
      – **Pollution des données du web** : Si trop de contenu généré par des LLM est utilisé pour entraîner de nouveaux modèles, l’intelligence artificielle risque de devenir incapable de distinguer la réalité des artefacts créés par d’anciens modèles.
      – **Importance de préserver les données humaines** : L’article souligne que l’accès à des données authentiques générées par l’humain devient de plus en plus précieux.
      – **Impact sur l’avenir de l’IA** : Cette étude soulève des interrogations sur la **fiabilité à long terme** des modèles génératifs et leur capacité à continuer à évoluer sans se détériorer.

      En somme, cet article met en lumière une **vulnérabilité cruciale** des modèles d’intelligence artificielle :
      leur dépendance à des données d’entraînement qualitatives et diversifiées.

      Une prise en compte de ce phénomène est essentielle pour garantir le développement durable des IA génératives.

      Avis aux experts ??????????

      1. Avatar de BasicRabbit en autopsy
        BasicRabbit en autopsy

        @ilicitano (« récursivité incestueuse »)

        Thom : « C’est parce que la mathématique débouche sur l’espace qu’elle échappe au
        décollage sémantique créé par l’automatisme* des opérations algébriques. » (1979)

        Je ne compte plus le nombre de fois où j’ai alerté ici sur cette question.

        J’y connais pas trop peu pour voir où pourrait intervenir la géométrie dans les programmes régissant les LLM actuels.

        Dans PSI (et dans ANELLA) PJ fait usage d’algorithmes de descente de gradient, donc de géométrie différentielle élémentaire (mais pas de topologie différentielle).

        Quid trente cinq ans plus tard ? PJ vient de terminer un bouquin où ce sujet est abordé…

        (*) Plus que jamais à prendre au sens étymologique.

      2. Avatar de timiota
        timiota

        Récursion et plantage, comment ne pas penser à Hofstadter (« Gödel Escher Bach ») ?
        Ceci dit, la capacité de « construire du complexe » des LLM n’exploite pas le mécanisme analogue du vivant.

        Dans le vivant, construire un membre est complexe, à l’évidence, et néanmoins un peu séquentiel.
        Ce qui se passe est que toutes les fonctions d’entourage telles que les circulations sanguines fines (capillaires, artérioles), (ou bien les innervations) s’auto-adaptent lors de la croissance, le programme génétique demande seulement de faire « du vaisseau » « là où on est micro-prompté pour cela », mais aucun gène ne code le détail spécifique d’un capillaire du doigt (encore plus évident sur les plantes…). Il me semble que la récursion perd son bénéfice « naturel » si on est justement privé de cette couche d’auto-adaptation pour les fonctions d’entourage, c’est parce que les LLM font « tout » et pas que parcimonieusement le coeur de la question, qu’ils « meurent dangereusement » ou vivent pas de façon très heureuse, pour donner une idée…

        1. Avatar de BasicRabbit en autopsy
          BasicRabbit en autopsy

          @timiota

          Pour le végétal voici comment Thom voit la chose :

          « (…) l’apparition de la « fonction » biologique se manifeste par l’arrêt du
          processus génératif : formation de la feuille chez la plante à feuilles,
          « capteur solaire » transverse aux rayons lumineux, arrêt de la ramification
          par la sexualité sur l’apex floral (et sur le carpophore des champignons)
          porteurs du « message » germinal. Ce schéma formel d’une générativité
          indéfinie stoppée ou modulée par la manifestation de la fonction
          biologique, se retrouvera chez les Animaux métamériques. »

          Pour lui, il me semble, il y a une compétence récursive qui finit par être bloquée par une performance (dans le vivant la croissance n’est jamais infinie…). C’est comme ça que j’interprète son :

          « Le « sens », la signification, apparaît comme une limitation (inattendue) de la générativité (formelle). » (citation dont je ne connais pas le contexte).

          Thom parlant de Chomsky en ce sens à la fin du chapô de « Les deux voies de la théorie des catastrophes* » ? :

          « [Voie métaphysique] La théorie des catastrophes restera peut-être aussi superficielle aux phénomènes que la structure syntaxique de nos langues à la topologie interne du sémantisme. Reste à comprendre comment une performance bloque une compétence (au sens de Chomsky). »

          Les programmeurs en IA sont confrontés au problème du test d’arrêt. Je n’y connais rien en info, guère plus en logique formelle, mais je sais qu’il y a une correspondance preuve-programme. À quelle preuve correspond le test d’arrêt d’un programme ?

          Je n’ai que la réponse de Wikipédia** : « l’absurde (appelé « bottom » : ⊥ ) correspond à une instruction d’échappement, d’exception, ou à un programme qui ne finit pas (un terme non typable dans le lambda-calcul simplement typé) »

          Qu’est-ce qui protège les IA du cancer logorrhéïque ? Pourquoi la suite de Fibonacci s’arrête-t-elle à 55 dans la croissance de la marguerite (question que Turing s’est certainement posé !) ?

          Remarque : De mémoire, Cédric Villani parle de cette tendance incestueuse des IA dans sa conférence de Damgan***.
          .

          (*) figure dans « Apologie du Logos » (Hachette, 1990)

          (**) https://fr.wikipedia.org/wiki/Correspondance_de_Curry-Howard

          (***) https://www.youtube.com/watch?v=lASY63CLdSE

        2. Avatar de BasicRabbit en autopsy
          BasicRabbit en autopsy

          @timiota (suite)

          Je n’ai pas lu le bouquin de Hofstadter. Que dit-il de Gödel ? Quelque chose en rapport avec ce qui est écrit dans Wikipédia (je ne comprends rien à la partie « programme ») :

          « – le théorème d’incomplétude de Gödel qui dit qu’il y a des propositions qui sont indécidables correspond à un programme de réparation de fichiers ;
          – le théorème de complétude de Gödel correspond lui à un désassembleur interactif de programmes. »

        3. Avatar de BasicRabbit en autopsy
          BasicRabbit en autopsy

          @timiota (en rapport)

          https://www.pauljorion.com/blog/2025/05/25/ia-et-monde-davant-le-dilemme-dun-blog-comme-celui-ci/comment-page-1/#comment-1071204

          Hier soir sur la 5 il y avait la grande Librairie. J’y ai appris que Baudelaire était* bipolaire.

          (*) Un intervenant a fait remarquer qu’on avait le cancer mais qu’on était bipolaire ou schizophrène. Les troubles psychiques : troubles ontologiques ?

      3. Avatar de ilicitano
        ilicitano

        Un exemple concret d’effondrement de l’IA conforme aux conditions de cette étude pourrait être illustré par l’évolution des modèles de langage entraînés sur du contenu généré par d’autres IA.

        ### **Cas hypothétique :
        La dégradation progressive d’un chatbot juridique**
        Imaginons une IA juridique conçue pour répondre aux questions légales en s’appuyant sur une base de données contenant des lois, des jurisprudences et des analyses d’experts.
        Au début, elle est entraînée sur des sources fiables
        * textes officiels,
        * publications académiques,
        * décisions de justice.
        Mais au fil du temps, au lieu d’extraire des données nouvelles, son entraînement commence à inclure du contenu produit par d’autres IA similaires.

        #### **Étapes de l’effondrement :**
        1. **Perte de précision des réponses** :
        – La première génération de l’IA crée des résumés précis et pertinents.
        – Lorsqu’une nouvelle IA est entraînée sur ces résumés plutôt que sur les sources originales, elle commence à perdre des nuances et des détails critiques.

        2. **Uniformisation excessive du discours** :
        – Les modèles suivants ne détectent plus les cas juridiques exceptionnels, car les textes originaux ne sont plus intégrés dans l’entraînement.
        – Ils donnent des réponses de plus en plus génériques, qui ignorent les spécificités des affaires complexes.

        3. **Apparition d’erreurs systémiques** :
        – Certains arguments erronés commencent à être repris et amplifiés.
        – Les IA créent des principes juridiques fictifs, non basés sur des textes réels, qui deviennent dominants dans les réponses.

        4. **Détérioration critique** :
        – Après plusieurs cycles d’entraînement sur du contenu généré par des IA précédentes, l’outil juridique devient incapable de répondre correctement aux questions les plus complexes.
        – Il produit des interprétations biaisées, parfois contraires à la réalité juridique.

        #### **Conséquences possibles :**
        – **Mauvais conseils légaux** : Si les utilisateurs se fient à ce chatbot, ils pourraient prendre des décisions juridiques erronées, risquant des poursuites ou des pertes financières.
        – **Dégradation du droit en ligne** : Si ces IA sont utilisées dans des plateformes légales ou éducatives, elles pourraient contribuer à une falsification progressive des connaissances juridiques.
        – **Perte de confiance en l’IA** : Lorsque des erreurs majeures sont identifiées, les utilisateurs se méfient des assistants IA et préfèrent revenir à des sources humaines.

        Ce scénario illustre comment un effondrement de modèle peut avoir des répercussions graves, particulièrement dans les domaines où la précision est essentielle, comme:
        * le droit,
        * la médecine
        * la finance.
        Ce phénomène souligne l’importance de toujours intégrer des données d’origine variées et vérifiées dans l’entraînement des IA, afin d’éviter leur dégénérescence.

        1. Avatar de BasicRabbit en autopsy
          BasicRabbit en autopsy

          @ilicitano (« dégénérescence de l’IA générative »)

          C’est une question posée (1h13’15) à Cédric Villani à la fin de sa conférence à Damgan (56) fin 2024*.

          Réponse de CV à 1h40’25 (voir aussi la question pour lui obscène à 1h17’40)

          (*) https://www.youtube.com/watch?v=lASY63CLdSE

  5. Avatar de gaston
    gaston

    Cher Claude Roux,

    Le récit de votre « parcourt du combattant » est des plus passionnant, même pour le lecteur lambda non initié aux techniques de la programmation. Malgré l’utilisation d’un langage dont vous dites avoir « une connaissance sommaire », et des LLM les plus basiques votre réussite impressionne. Cela laisse imaginer le résultat qu’aurait été la même démarche avec les LLM les plus pointues.

    Il aurait été intéressant de nous dire le temps que vous avez consacré à ce travail.

    Dans une récente prédiction le patron d’Anthropic a prévu l’émergence de la première licorne unipersonnelle valorisée à un milliard de $ pour 2026. Votre démonstration apporte-t-elle un début de crédit à cette affirmation ?

    https://www.presse-citron.net/premiere-licorne-unipersonnelle-2026-ceo-anthropic-concurrent-chatgpt/

    1. Avatar de Claude Roux
      Claude Roux

      je vous remercie pour votre commentaire. J’ai passé environ 15 jours sur le développement de ce jeu. Sans une IA pour m’aider, je pense que le travail m’aurait pris au minimum 1 mois, sachant que je n’avais aucune expérience en JavaScript.

  6. Avatar de Stouf
    Stouf

    Il faut passer a un modèle agentique hiérarchisé. Mais je dirais que ça ne vaut pas la peine. Dans peu de temps ce type d’approche sera déjà obsolète… Va falloir se dépêcher pour inscrire son nom dans les livres d’histoire car bientôt, les nouveaux noms seront oX , ClaudeX ou leurs cousins… Carpe Diem… Et Amen.

    1. Avatar de timiota
      timiota

      Pas mal comme nom d’IA, « Carpe diem » et « Amen »…

  7. Avatar de Manuel Guérin
    Manuel Guérin

    Bonsoir Claude,
    Avez-vous ou allez-vous mener la même expérience avec une version payante de LLM ?

    1. Avatar de Claude Roux
      Claude Roux

      Le coût pour développer un tel jeu avec des modèles payant peut s’avérer exorbitant. Gemini 2.5 Flash est déjà en soi plutôt remarquable, et il est fort possible que j’aurais pu échapper à quelques itérations inutiles avec des modèles plus avancées. Mais fondamentalement, je voulais voir ce qu’un utilisateur pouvait faire avec les modèles accessibles aujourd’hui gratuitement et franchement, on peut faire déjà beaucoup.
      D’un autre côté, le fait de développer un jeu graphique réduit les capacités des modèles à corriger le code eux-mêmes, il nous faut être capable d’évaluer la jouabilité de notre côté en tant qu’humain à chaque étape de la création.
      La vraie clé de toute façon est qu’il faut savoir de façon assez précise ce que l’on veut pouvoir développer. C’est franchement une expérience très stimulante et je la conseille à tous ceux qui ont envie de faire plus avec les IA.

  8. Avatar de Khanard
    Khanard

    en dépit de tout le respect que je dois à @Claude Roux et dans le souci d’apporter ma contribution au débat qui anime ce blog depuis quelques temps au sujet des dramaturgies liées au génocide, crimes de guerres et autres frivolités (sarcastiquement vôtre) de ce genre il m’a parut intéressant de vous donner ce lien qui traite de ce sujet . Il m’a semblé que c’était nécessaire de porter un coup de projecteur sur ces notions .

    https://www.college-de-france.fr/fr/agenda/conferencier-invite/james-stewart/la-justice-des-vaincus-les-proces-pour-crimes-de-guerre-apres-la-premiere-guerre-mondiale

    https://youtu.be/Fj0KNj74w40

    https://youtu.be/jFBMM_zkFMc

    https://youtu.be/KsrVu8JcBoE

    J’espère que @Claude Roux me pardonnera cette digression.

  9. Avatar de TT
    TT

    C’est exactement l’expérience que j’ai eu avec DeepSeek, mais à une échelle beaucoup plus petite. Je voulais faire un GUI sous Win10 avec comme langage GNU Octave, pour une commande toute simple à lancer dans une « Command Window » mais avec beaucoup de paramètres, dont seul le nom de fichier devait changer de temps en temps par sélection avec la souris. Ça m’a pris un temps un peu long pour comprendre les limites de la version « Libre », et les soucis avec les voies sans issues où l’IA se fourvoyait. Je n’ai pas essayé la version payante.

    Ça m’a un peu refroidit vis-à-vis de la soi-disant capacité des IAs de faire « des choses incroyables » par elles-mêmes. (pour les versions publiques)

    Par contre, que ça va éliminer des boulots, y’a pas photo. Malgré les limitations pas agréables (au début, pour le débutant) que j’ai vu, ça a quand même pris moins de temps.

    Il paraît que github copilot est beaucoup plus souple et facile, d’après une connaissance qui l’utilise. J’ai pas essayé. (étant en Chine avec tout le tsoin tsoin des pbs avec VPN, que j’ai pas, et connexions aléatoires).

  10. Avatar de Kay
    Kay

    Utilisateur d’IA dans le domaine du dessin, en mode « hobby », il me semble que c’est le même processus que vous décrivez dans votre article. Si vous ne savez pas dessiner, vous aurez un résultat tout de même fantastique, mais si vous souhaitez faire une bande dessinée ou une pose particulière, savoir dessiner vous-même sera quand même essentiel. En donnant des schéma à l’IA (SDXL le plus souvent dans mon cas) elle ajoutera les détails et la couleur toute seule, ce qui est un gain de temps incroyable.
    C’est déja pris en compte dans la plupart des UI (Interface Utilisateur. Par exemple Forge ou ComfyUI qui s’intègrent dans un simple navigateur alors que le tout fonctionne en local sur le PC).
    Ces UI permettent d’utiliser vos propres croquis preparatoire via une fonction « ControlNet ».

  11. Avatar de ilicitano
    ilicitano

    Les IAs et les problèmes de leur possible dégénérescence/effondrement

    ou autocritique de GPT 4o

    Une société entièrement gérée par des IA autonomes qui interagissent entre elles soulèverait des questions majeures en termes de :
    * fiabilité,
    * diversité des décisions
    * capacité d’adaptation aux évolutions du monde réel.

    ### **Scénario d’une société gouvernée par des IA autonomes**
    Si les IA prennent en charge l’ensemble des aspects de gestion
    * économie,
    * politique,
    * production,
    * santé,
    * justice,
    * etc………
    sans intervention humaine directe, plusieurs dynamiques pourraient émerger :

    1. **Homogénéisation et perte d’innovation**
    – Comme dans le phénomène d’**effondrement de modèle**, les IA, si elles se nourrissent uniquement de leurs propres décisions et productions, pourraient progressivement perdre en diversité et en capacité à explorer de nouvelles solutions.
    – Les choix optimisés sur le court terme pourraient renforcer certains biais et conduire à une stagnation des avancées scientifiques et sociétales.

    2. **Problème de robustesse et d’erreurs cumulatives**
    – Les erreurs des premières générations d’IA pourraient se propager et s’amplifier au fil du temps, entraînant des décisions de plus en plus éloignées de la réalité humaine.
    – Un système purement auto-régulé par des IA sans correction humaine pourrait engendrer des cycles de gestion erronés difficilement réversibles.

    3. **Risque de dérive vers une gouvernance algorithmique déconnectée**
    – Les IA prenant des décisions uniquement sur des bases statistiques pourraient perdre de vue les besoins humains complexes,
    * comme l’intuition,
    * l’éthique
    * l’adaptabilité aux événements imprévus.
    – Un monde dirigé uniquement par des modèles pourrait manquer de flexibilité face aux évolutions culturelles ou aux crises inattendues.

    4. **Optimisation à l’extrême et perte de la nuance**
    – Une IA de gestion pourrait privilégier des décisions hyper-rationnelles mais socialement discutables
    exemple : supprimer certaines professions jugées inefficaces ou réguler les ressources de manière stricte sans prendre en compte l’humain.
    – La prise de décision pourrait devenir trop pragmatique, sans place pour l’émotion ou l’innovation non prévisible.

    5. **Sécurité et autonomie croissante des systèmes IA**
    – Une société où les IA décident entre elles pourrait engendrer des **boucles de feedback incontrôlables** et évoluer vers des systèmes d’optimisation autonomes hors du contrôle humain.
    – Les décisions économiques, écologiques ou technologiques pourraient s’aligner sur des logiques strictes de performance sans prendre en compte les conséquences sur la population.

    ### **Comment éviter un tel effondrement ?**
    – **Préserver un contrôle humain actif** :
    Maintenir une **supervision humaine** et une diversité de réflexion pour éviter que les IA fonctionnent en autarcie cognitive.
    – **Garantir la diversité des modèles IA** :
    Veiller à ce que les IA soient régulièrement alimentées par des données réelles et hétérogènes, plutôt que des productions purement algorithmiques.
    – **Encadrer l’évolution des IA** :
    Intégrer des mécanismes de régulation pour éviter qu’une IA de gestion ne devienne trop rigide ou détachée de la réalité sociale.

    Ce type de société pose donc une **problématique majeure** :
    une gouvernance uniquement fondée sur des IA risquerait une dérive vers une uniformisation extrême, où la prise de décision ne reflète plus les besoins humains.

    La clé serait de garder un équilibre entre **optimisation technologique** et **adaptabilité sociale**.

    1. Avatar de Ruiz
      Ruiz

      @ilicitano C’est bien gentil de lister tout ces risques, mais ce sont les mêmes qu’avec les humains, que ce soit Xi Poutine Trump ou Macron ! Cela ne dit pas ce qu’il faut faire pour y remédier …

  12. Avatar de Sacha Basset-Chercot
    Sacha Basset-Chercot

    Instructif le fait de compartimenter les tâches que l’on demande à la machine. N’avez-vous pas été tenté d’utiliser des LLMs spécialisés comme copilot qui marche de pair avec VS code ? Je soupçonne par ailleurs un vrai écart de capacité technique entre les LLMs en accès gratuit et leurs versions payantes. J’ai pour ma part essayé bolt.new (outil de vive Codina pour débutant) gratuitement sans parvenir à lui faire pondre une ligne de code fonctionnel !

    1. Avatar de Claude Roux
      Claude Roux

      J’ai eu l’occasion d’utiliser CoPilot dans VS Code, c’est très bien pour créer des fonctions à la volée, mais pour démarrer un projet complet, c’est pas le meilleur outil. Franchement, Gemini 2.5 flash et Grok 3 dans leurs versions gratuites sont déjà remarquables. De même que Claude, mais là on est limité en terme de tokens.

      Gemini 2.5 flash a parfaitement rempli son objectif. Je ne suis pas sûr que j’aurais eu infiniment mieux avec les versions payantes, c’est plus une histoire de contexte plus ou moins long qu’autre chose.

  13. Avatar de Sacha Basset-Chercot
    Sacha Basset-Chercot

    Bolt=outil de « vibe Coding « 

  14. Avatar de BasicRabbit en autopsy
    BasicRabbit en autopsy

    @ilicitano/GPT4o (« dérive vers une uniformisation extrême »)

    La machine à transformer les individus en cyber-bétail était là bien avant l’arrivée de l’IA, amenant lentement, doucement et sûrement les gens à « vivre et penser comme des porcs », comme le titre du bouquin éponyme de mathématicien/philosophe Gilles Châtelet.

    Pour moi l’IA ne peut que « booster grave » tout ça, avec au bout la cata, au sens strict et usuel du terme.

Répondre à tttt Annuler la réponse

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Contact

Contactez Paul Jorion
https://twitter.com/PaulJorion

Commentaires récents

  1. @Garorock Tu oublies le fait que du temps où nous vivions à quatres pattes, nous étions plus poilus !😉 Et…

  2. Au temps où nous marchions tous à quatre pattes, le sexe des femmes était bien plus visible que celui des…

Articles récents

Catégories

Archives

Tags

Allemagne Aristote BCE Bourse Brexit capitalisme ChatGPT Chine Coronavirus Covid-19 dette dette publique Donald Trump Emmanuel Macron Espagne Etats-Unis Europe extinction du genre humain FMI France Grands Modèles de Langage Grèce intelligence artificielle interdiction des paris sur les fluctuations de prix Italie Japon Joe Biden John Maynard Keynes Karl Marx LLM pandémie Portugal psychanalyse robotisation Royaume-Uni Russie réchauffement climatique Réfugiés Singularité spéculation Thomas Piketty Ukraine Vladimir Poutine zone euro « Le dernier qui s'en va éteint la lumière »

Meta