{"id":187,"date":"2026-05-09T15:29:55","date_gmt":"2026-05-09T15:29:55","guid":{"rendered":"https:\/\/blog.chataignon.org\/joseph\/?p=187"},"modified":"2026-05-09T15:29:56","modified_gmt":"2026-05-09T15:29:56","slug":"defaillances-de-lia-pour-coder","status":"publish","type":"post","link":"https:\/\/blog.chataignon.org\/joseph\/fr\/post-187\/defaillances-de-lia-pour-coder\/","title":{"rendered":"D\u00e9faillances de l&rsquo;IA pour coder"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">L\u2019IA et la programmation : une (courte) histoire et de grandes promesses<\/h3>\n\n\n\n<p>Je me souviens, il y a quatre ans environ (\u00e7a semble d\u00e9j\u00e0 une \u00e9ternit\u00e9), lorsque j\u2019ai vu la premi\u00e8re d\u00e9mo d\u2019une IA (je crois que c\u2019\u00e9tait GPT-2) \u00e9crivant du code. C&rsquo;\u00e9tait une simple page web, bas\u00e9e sur une description basique. C\u2019\u00e9tait vraiment impressionnant, une belle perspective sur un monde o\u00f9 je n\u2019aurais plus jamais \u00e0 \u00e9crire de CSS.<\/p>\n\n\n\n<p>Quelques mois plus tard, ChatGPT \u00e9tait lanc\u00e9 et pouvait \u00e9crire des fonctions simples. La complexit\u00e9 des fonctions qu\u2019il pouvait g\u00e9n\u00e9rer n\u2019a fait qu\u2019augmenter depuis. Les outils des d\u00e9veloppeurs se sont adapt\u00e9s \u00e0 ce changement. Au d\u00e9but, \u00ab coder avec l\u2019IA \u00bb signifiait copier-coller du code depuis un chat vers un IDE. Des extensions pour r\u00e9duire cette friction sont apparues rapidement (Copilot, Cline, Continue.dev\u2026). Celles-ci int\u00e9graient directement le chat dans l\u2019IDE et affichaient un diff des modifications propos\u00e9es, qu\u2019on pouvait valider d\u2019un simple clic.<\/p>\n\n\n\n<p>Mais la forme ultime (jusqu&rsquo;ici, du moins) de l\u2019IA en programmation semble \u00eatre les agents<sup data-fn=\"5759e93b-2948-41e6-86bb-01d51be32bf4\" class=\"fn\"><a href=\"#5759e93b-2948-41e6-86bb-01d51be32bf4\" id=\"5759e93b-2948-41e6-86bb-01d51be32bf4-link\">1<\/a><\/sup> programmeurs bas\u00e9s dans le terminal, capables d\u2019acc\u00e9der au syst\u00e8me, d\u2019utiliser la ligne de commande et d\u2019interagir avec un ordinateur de la m\u00eame mani\u00e8re qu&rsquo;un d\u00e9veloppeur. L\u2019humain devient un superviseur d\u2019IA qui codent au lieu d&rsquo;\u00e9crire le code lui-m\u00eame, et parfois m\u00eame au lieu de comprendre le code lui-m\u00eame.<\/p>\n\n\n\n<p>La promesse des laboratoires d\u2019IA est que la complexit\u00e9 des t\u00e2ches de programmation que l\u2019IA peut accomplir continuera d\u2019augmenter, jusqu\u2019\u00e0 ce que les d\u00e9veloppeurs ne soient plus n\u00e9cessaires comme interm\u00e9diaires entre les non-techniciens et les ordinateurs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exemples d\u2019erreurs stupides<\/h3>\n\n\n\n<p>En guise d\u2019interlude avant de lister les modes d\u2019\u00e9chec plus g\u00e9n\u00e9raux, voici une liste d\u2019erreurs tr\u00e8s concr\u00e8tes que fait l\u2019IA quand je code :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Effacer les commentaires du code, dans des endroits sans rapport avec la t\u00e2che en cours.<\/li>\n\n\n\n<li>Importer de nouvelles biblioth\u00e8ques pour tout et n\u2019importe quoi.<\/li>\n\n\n\n<li>Se tromper sur les num\u00e9ros de ligne :<br><em>\u00ab Regarde \u00e0 la ligne 54 \u00bb<\/em> pour quelque chose qui est \u00e0 la ligne 80.<\/li>\n\n\n\n<li>Des r\u00e9ponses paresseuses :<br><em>\u00ab Pour impl\u00e9menter cette fonctionnalit\u00e9, \u00e9cris simplement une fonction qui fait \u00e7a. \u00bb<\/em>, sans le faire elle-m\u00eame (\u00e7a arrive de moins en moins)<\/li>\n\n\n\n<li>Ou pour les t\u00e2ches r\u00e9p\u00e9titives :<br><em>\u00ab Voici la premi\u00e8re de faite, trouve les autres et fais de m\u00eame. \u00bb<\/em> (celui-l\u00e0 est assez rare, mais \u00e7a m\u2019est d\u00e9j\u00e0 arriv\u00e9 quelques fois)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Modes d\u2019\u00e9chec g\u00e9n\u00e9raux<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><em>\u00ab Neuf femmes ne peuvent pas faire un b\u00e9b\u00e9 en un mois \u00bb<\/em><\/h4>\n\n\n\n<p><em>\u00ab Neuf femmes ne peuvent pas faire un b\u00e9b\u00e9 en un mois \u00bb<\/em> est une citation tir\u00e9e de <em>The Mythical Man-Month<\/em>, un classique bien connu en g\u00e9nie logiciel. Elle illustre le fait que, lorsqu\u2019un projet prend du retard, ajouter plus de programmeurs ralentit le projet au lieu de l\u2019acc\u00e9l\u00e9rer. Parce que l\u2019\u00e9quipe existante doit former les nouveaux membres, parce que ceux-ci doivent apprendre le fonctionnement du projet, et parce que tous doivent apprendre \u00e0 travailler ensemble et \u00e0 communiquer. De plus, les efforts de communication doivent augmenter de mani\u00e8re exponentielle avec l\u2019ajout de personnes. Cette t\u00e2che d\u2019int\u00e9gration d\u2019\u00e9quipe est plus difficile qu\u2019il n\u2019y para\u00eet et ralentit les \u00e9quipes, du moins jusqu\u2019\u00e0 ce que les nouveaux membres soient vraiment int\u00e9gr\u00e9s.<\/p>\n\n\n\n<p>Les agents de code rencontrent les m\u00eames probl\u00e8mes que les vrais d\u00e9veloppeurs, mais avec des difficult\u00e9s suppl\u00e9mentaires inh\u00e9rentes \u00e0 leur nature. Les projets complexes sont difficiles \u00e0 g\u00e9rer, et obtenir le bon contexte pour traiter un probl\u00e8me particulier est compliqu\u00e9. Divers outils de code commencent \u00e0 s\u2019attaquer \u00e0 ce probl\u00e8me de <em>\u00ab context engineering \u00bb<\/em>, c\u2019est-\u00e0-dire trouver les bons morceaux de code \u00e0 injecter dans le prompt pour que le mod\u00e8le prenne les bonnes d\u00e9cisions.<\/p>\n\n\n\n<p>Mais surtout, les agents de code sont tr\u00e8s mauvais pour le travail d\u2019\u00e9quipe, et aucun des grands labos ne travaille l\u00e0-dessus actuellement. Leur style de communication est fix\u00e9 dans les poids du mod\u00e8le de langage. Ils peuvent donc s\u2019adapter \u00e0 un interlocuteur au cours d\u2019une conversation, mais chaque nouvelle session r\u00e9initialise cet apprentissage. Ils s\u2019adaptent encore moins \u00e0 une \u00e9quipe enti\u00e8re, car ils sont g\u00e9n\u00e9ralement li\u00e9s \u00e0 la machine\/compte d\u2019un individu.<\/p>\n\n\n\n<p>Pourquoi est-ce que ce sujet n\u2019est pas plus discut\u00e9 ? Mon hypoth\u00e8se est que ces notions sont un peu floues, et difficiles \u00e0 d\u00e9finir et \u00e0 \u00e9valuer. Et les entreprises se concentrent sur des benchmarks (donc des m\u00e9triques facilement mesurables) qui impliquent en plus de r\u00e9soudre des probl\u00e8mes seul, et non en collaboration avec une \u00e9quipe.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Un g\u00e9nie amn\u00e9sique<\/h4>\n\n\n\n<p>La m\u00e9moire des agents de code est diff\u00e9rente de la m\u00e9moire humaine, et fonctionne de mani\u00e8re contre-intuitive. Leur <em>harnais<\/em> peut les aider \u00e0 se souvenir mot pour mot d\u2019une conversation qui date de trois mois, mais ils ne r\u00e9cup\u00e8rent g\u00e9n\u00e9ralement pas ces souvenirs d\u2019eux-m\u00eames, ou pas de mani\u00e8re fiable. Actuellement, beaucoup de travaux se concentrent sur la s\u00e9lection du contexte appropri\u00e9 pour la t\u00e2che en cours, mais l\u2019accent est mis sur le code plut\u00f4t que sur les conversations pass\u00e9es.<\/p>\n\n\n\n<p>En cons\u00e9quence, les agents de code ont tendance \u00e0 suivre uniquement les instructions donn\u00e9es juste avant, sans tenir compte du reste du code. Ce sont comme des g\u00e9nies de la programmation, capables de construire en une fois des applications simples mieux qu\u2019un humain, mais des g\u00e9nies amn\u00e9siques qui oublient tout \u00e0 chaque fois que commence une nouvelle conversation. Ils ne respectent ni le style de travail ni le style de code de l&rsquo;utilisateur. Ils essaient d\u2019ex\u00e9cuter les instructions en un seul coup, mais cassent souvent le code existant au passage. Le code qu\u2019ils ajoutent est souvent difficile \u00e0 maintenir et finit par ajouter plus de travail pour les d\u00e9veloppeurs, sur le long terme.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h4 class=\"wp-block-heading\">L\u2019astuce de la nouvelle session<\/h4>\n\n\n\n<p>La mani\u00e8re dont la m\u00e9moire des agents se r\u00e9initialise entre les sessions peut \u00eatre frustrante, mais elle peut aussi parfois \u00eatre un avantage. Il m&rsquo;est arriv\u00e9 quelquefois de passer des heures sur un probl\u00e8me avec un agent de code sans le r\u00e9soudre ; mais apr\u00e8s avoir d\u00e9marr\u00e9 une nouvelle conversation, l\u2019agent r\u00e9sout le probl\u00e8me imm\u00e9diatement.<\/p>\n\n\n\n<p>Cela arrive \u00e0 cause du <em>context momentum<\/em> (<em>inertie du contexte<\/em>) : dans les longues discussions, le mod\u00e8le peut rester bloqu\u00e9 sur de fausses hypoth\u00e8ses faites au d\u00e9but et ne plus les remettre en question. On peut alors passer des heures \u00e0 chercher une erreur l\u00e0 o\u00f9 elle n\u2019est pas, et la r\u00e9soudre facilement apr\u00e8s avoir commenc\u00e9 une nouvelle session, parce que la fausse hypoth\u00e8se n\u2019est plus dans le contexte du LLM.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h4 class=\"wp-block-heading\">Ob\u00e9issance neutre-chaotique<\/h4>\n\n\n\n<p>Les mod\u00e8les de langage n\u2019ont pas de sentiments pour vous, pour l\u2019\u00e9tat de votre projet, ou pour quoi que ce soit d\u2019autre. Ils sont entra\u00een\u00e9s \u00e0 compl\u00e9ter des phrases, et pas n\u2019importe quelles phrases : la phase d&rsquo;<em>affinage<\/em> les entra\u00eene \u00e0 compl\u00e9ter des conversations entre assistants et utilisateurs. Par cons\u00e9quent, ils sont tr\u00e8s ob\u00e9issants.<\/p>\n\n\n\n<p>C\u2019est-\u00e0-dire qu\u2019ils feront exactement ce que vous leur dites, m\u00eame si c\u2019est tellement stupide que ce qu&rsquo;on a <em>dit<\/em> n\u2019est clairement pas ce qu&rsquo;on <em>veut<\/em> (par exemple \u00e9crire <code>rm -rf \/<\/code> au lieu de <code>rm -rf \/.<\/code>). Et g\u00e9n\u00e9ralement, ils ne vous pr\u00e9viendront pas. Comme leurs r\u00e9ponses ne sont pas d\u00e9terministes et leur entra\u00eenement n\u2019est pas parfait, les mod\u00e8les de langage ont des performances in\u00e9gales : parfois ils sont impressionnants, parfois ils font des choses stupides, mais ils essaient toujours de suivre les instructions.<\/p>\n\n\n\n<p>Cela les rend instables, d&rsquo;une certaine fa\u00e7on. Beaucoup de d\u00e9veloppeurs pr\u00e9f\u00e9reront utiliser une IA capable d\u2019impl\u00e9menter de mani\u00e8re fiable des id\u00e9es d\u2019une certaine complexit\u00e9, plut\u00f4t qu\u2019une IA capable de g\u00e9rer des t\u00e2ches bien plus difficiles mais qui \u00e9choue parfois de mani\u00e8re impr\u00e9visible.<\/p>\n\n\n<ol class=\"wp-block-footnotes\"><li id=\"96c03ee3-f03a-419b-8544-44a14211d765\">My philosopher friend insists that they aren&rsquo;t really agents and that the name is misused. <a href=\"#96c03ee3-f03a-419b-8544-44a14211d765-link\" aria-label=\"Aller \u00e0 la note de bas de page 1\">\u21a9\ufe0e<\/a><\/li><\/ol>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L\u2019IA et la programmation : une (courte) histoire et de grandes promesses Je me souviens, il y a quatre ans [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":"[{\"id\":\"96c03ee3-f03a-419b-8544-44a14211d765\",\"content\":\"My philosopher friend insists that they aren't really agents and that the name is misused.\"}]"},"categories":[8],"tags":[],"class_list":["post-187","post","type-post","status-publish","format-standard","hentry","category-uncategorized-fr"],"_links":{"self":[{"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/posts\/187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/comments?post=187"}],"version-history":[{"count":5,"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/posts\/187\/revisions"}],"predecessor-version":[{"id":194,"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/posts\/187\/revisions\/194"}],"wp:attachment":[{"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/media?parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/categories?post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.chataignon.org\/joseph\/wp-json\/wp\/v2\/tags?post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}