Le vibe codeur malgré lui

En avril 2023, je décrivai dans un article publié sur ce blog puis dans Programmez! mon aventure avec ChatGPT. Nous en étions alors à la version 3.5 du LLM sous-jacent GPT, la version 4 étant sortie quelques semaines plus tôt, en pleine rédaction de l'article - trop tard pour s'y remettre.
Le constat était décevant, car j'identifiai huit problèmes... :
  • lorsqu'il génère du code, ChatGPT risque de s'interrompre sans possibilité de reprise ;
  • ChatGPT peut générer des codes différents en réponse à une même demande ;
  • ChatGPT peut générer un code qui ne répond pas aux besoins ;
  • par défaut, ChatGPT utilise des espaces et non des tabulations pour indenter le code ;
  • ChatGPT peut générer un code qui n'est pas efficient ;
  • ChatGPT peut générer du code inutile ;
  • ChatGPT peut générer du code qui semble répondre aux besoins, mais qui n'y répond pas ;
  • ChatGPT peut générer du code qui répond à des besoins qui n'ont pas été formulés.
...mais j'en concluai que "tel le client de Palace que j'évoquais, il ne faut jamais désespérer : quelqu'un, un jour, nous livrera bien une AI qui, en matière de code, génèrera autre chose que de la soupe à la moumoute".
Des millions d'années plus tard à l'échelle temporelle des progrès de l'IA générative, c'est peu dire que ce voeu a été exaucé...
L'art du méta-prompting récursif

Beaucoup de bruit plus pour rien

Qui code encore à la mano, sans assistance d'un Claude pour l'assister, quand ce n'est pas l'inverse ? A vrai dire, n'est-ce d'ailleurs même pas dépassé, depuis qu'il est question de ce qu'Andrej Karpathy a désigné comme le vibe coding ? Il faut être tragiquement déconnecté des réalités pour ne pas avoir réalisé que dorénavant, tout un chacun peut produire des applications sans rien connaître au code, qui répondent vraiment à de vrais besoins. Enfin, il s'en trouve encore, avant tout chez ceux qui ne sont jamais intéressés à ce que pouvait être code. Pour s'en convaincre, il suffira d'écouter Kevin Roose faisant la leçon Natalie Kitroeff dans un épisode de The Daily mi-février dernier. Clairement, l'illettrisme agentique prospère sur l'illettrisme informatique, même chez ceux qui ne sont pas les plus vieux ni les moins bien informés de l'état de ce monde.
Car voilà, le grand mot est lâché : l'agentique, comme n'aurait pas su dire l'autre - ni les autres d'ailleurs -, c'est maintenant. Comme rapporté dans une lointaine Chronique de l'IA, Microsoft nous la promettait pour 2024, si bien qu'il aura donc fallu attendre un peu, mais pas trop tout de même. Le temps que les LLMs soient perfectionnés en ne cherchant plus uniquement à les faire plus grosses que le boeuf, notamment en leur apprenant à utiliser des outils puis à "raisonner", et qu'ils soient logés au sein d'outils qui les font tourner comme si c'étaient des CPUs, je veux parler du fameux Clawdbot, Moltbot, enfin bref - je vais y arriver - OpenClaw.
Le homard aux pinces rouges à pour le moins semé la zizanie. Dans la foulée de son succès fulgurant, il a donc été adopté par OpenAI, dont les concurrents ont brutalement sorti leur agent du bac à sable où il batifolait jusqu'alors gentiment, ou en ont conçu un qui fait comme les grands quand ils n'avaient pas encore de rejeton de cet acabit. Comme toujours, le cas de Microsoft est assez exemplaire. Alors que début janvier les commentateurs se gaussaient de sa déconfiture en relayant à l'envi une étude rapportant que personne n'utilisait Copilot ou presque, l'éditeur de Redmond n'a guère attendu pour se saisir de cette planche de salut en annonçant Copilot Tasks. Un énième retour du trombone diront les mauvaises langues, mais pas dit. Après tout, l'on n'est jamais à l'abri d'un succès dans cette nouvelle économie où chacun finit par se faire à l'idée qu'il y a moins bien, mais c'est plus cher, surtout quand décideur dans une entreprise / administration / chimère, il ne connaît - par définition ? - rien à l'IA.
Enfin bref, plus que jamais "le trouble et l'agitation sont considérables", comme l'a écrit Michel Houellebecq dans un de ses romans très déprimants, mais bien écrits1. Sa subjugation par l'IA ne pouvant plus être ignoré, ne nous résignons donc pas, comme le héros du récit, à ne plus être de ce monde sans pour autant trouver le courage de le quitter, mais élançons-nous-y, et joyeusement. Après tout, dans la foulée de ma première interaction avec ChatGPT, n'avais-je pas écrit dans un article, que "tous ceux qui diront ne pas l'utiliser seront soit des menteurs, soit des idiots" ? Désormais que par le truchement d'un agent, le LLM n'est plus loin d'être logé au coeur du système d'exploitation comme dans la vision d'Andrej Karpathy, il est temps de savoir de quel côté de la barrière l'on entend finalement se placer.
LLMOS, le LLM au coeur de l'OS selon Andrej Karpathy

Les infographistes n'ont plus la banane

Qui suit l'actualité de l'IA générative au quotidien n'a pu manquer de relever combien elle est cadencée par la sortie de modèles. Le public étant aux aguets de la moindre nouveauté, il ne s'écoule guère quelques heures avant qu'il ne se prononce sur le nouveau-venu. Il peut alors y avoir des flops, comme GPT-5 aux performances jugées décevantes, Sam Altman reconnaissant de plus que pour le lancer, OpenAI avait totalement merdé. Toutefois, c'est assez l'exception. Il y a beaucoup de tops, et la question est surtout de savoir combien de temps un nouveau modèle va parvenir à occuper le devant de la scène.
A ce petit jeu, dans le domaine de la génération d'images, Google a remarquablement sorti son épingle du jeu. Depuis sa sortie en août dernier, Nano Banana, ou plus exactement Gemini 2.5 Flash, a occupé le devant de la scène. Un succès mérité au regard des performances d'un modèle très innovant. En effet, comme l'a expliqué Olivier Wang, tech lead sur le modèle chez Google DeepMind, lors d'un entretien accordé à The TWIML AI Podcast :
So the thing that we're really proud of in the Gemini 2.5 Flash Image model is that we've integrated it into Gemini which means we can take advantage of all the world knowledge I was talking about earlier.
So for Imagen you know you can generate very good images but you have to be very explicit about what you want to generate. And with Nano Banana, it's possible to have prompts that are much more seeking input or information from the AI model itself. So we see people asking kind of like high abstract prompts and the model is able to do a much better job of of deciding what it is the user is trying to ask and then coming up with a reasonable response and image to satisfy this request.
Bref, le générateur d'images, c'est toujours Jackson Pollock, sauf qu'on lui aurait greffé un cerveau. Forcément, ça ne s'utilise plus de la même manière, et ça ne produit pas les mêmes résultats.
En particulier, Nano Banana s'est distingué par sa capacité à générer des infographies. L'on en trouve des exemples aussi foisonnants que fascinants sur le site du GDELT Project, qui est allé jusqu'à lui faire avaler les milliers de pages des réglementations les plus absconses pour voir ce qu'il pouvait en sortir.
Infographie d'une réglementation absconse que le GDELT Project a fait générer à Nano Banana
Infographie d'une réglementation absconse que le GDELT Project a fait générer à Nano Banana.
Cette capacité ne peut manquer d'attirer l'attention du codeur. Depuis la nuit des temps, ce dernier ne sait-il pas qu'une image parle mieux qu'un long discours, ce pourquoi il s'adonne au logigramme sous toutes ses formes ? C'est bien la raison pour laquelle notre codeur décide un beau jour de voir à son tour ce qu'il pourrait en tirer.

Du reverse-engineering à l'engineering tout court

Comme rappelé plus tôt, le succès d'OpenClaw ne peut être ignoré. Clairement, le recours à l'IA générative dans la vie de tous les jours à accompli un saut quantique, et le coût du ticket d'entrée pour s'approprier la technologie est soudain devenu assez élevé pour accepter d'avoir à le payer aujourd'hui plutôt que de n'en plus en avoir les moyens demain.
Pour notre codeur qui écrit ces lignes, dont le métier n'est pas de coder mais de tenir informé de ce qui passe notamment en la matière, la conscience de l'urgence du moment devait le conduire à chercher à comprendre dans les détails de quoi il en retournait. Concrètement, puisqu'il faut toujours d'emblée attaquer un sujet à la racine, une session de lecture du code d'OpenClaw pour en appréhender la mécanique.
Depuis qu'il a passé des heures pénibles à lire le code de Voyager pour en rendre compte dans une série d'articles - ici, ici, ici et -, notre codeur a testé et adopté une autre manière de faire. Elle consiste à balancer un zip du repo à un chat, pour tailler la bavette avec lui sur le sujet. Cela commence par lui demander une vue générale du code, avant de poser des questions toujours plus détaillées sur tel ou tel aspect.
A vrai dire, il est recommandé de procéder de manière encore plus ordonnée. Cela, ce n'est pas notre codeur qui le dit, c'est Claude, qui tel l'oracle gagne toujours avant la bataille à être consulté. En l'espèce, après un petit temps à dialoguer sur le code d'OpenClaw et en être venu par le chemin que l'on va voir à élaborer un prompt pour générer un prompt, notre codeur s'est demandé s'il n'avait pas tout intérêt à le faire. Partant, il a demandé benoîtement à Claude quel serait le meilleur moyen de l'utiliser pour analyser du code. Claude s'est fendu d'une réponse des plus intéressantes, sous forme d'une recette à appliquer. Comme le lecteur le comprendra, la recette peut varier chaque fois qu'elle lui est demandée, mais après plusieurs échanges, voici grosso modo ce qui est recommandé :
  • demander une vue haut-niveau pour tel ou tel public ;
  • rentrer progressivement dans les détails ;
  • demander une version simplifiée du code pour tel ou tel public ;
  • demander ce qui cloche dans le code sous tel ou tel aspect (lisibilité, sécurité, etc.) ;
  • demander comment le code pourrait être amélioré sous tel ou tel aspect ;
  • demander ce qui se passerait si le code était modifié de telle ou telle manière ;
  • quand les explications sont trop compliquées, demander à la simplifier en mobilisant au besoin des analogies ;
  • faire produire des diagrammes - éviter de parler de schéma, que Claude peut comprendre au sens de la spécification ;
  • pour finir, original mais intéressant, se faire interroger sur sa compréhension du code.
Inévitablement, il faut rester vigilant, car le risque d'hallucination est réel - encore qu'il vaudrait mieux parler d'affabulation, c'est moins anthropomorphique. C'est pourquoi notre codeur demande régulièrement à voir le code dont il est question, voire s'y reporte dans un éditeur où il l'a chargé.
Le lecteur attentif aura relevé la pratique qui consiste à demander un diagramme. Claude peut parfaitement en produire sous bien des formes, du dessin en ASCII au fichier à fournir à un outil tel que Mermaid en passant par une représentation en HTML.
Diagramme du système mnésique d'OpenClaw dans Mermaid produit par Claude
C'est là où, une fois rentré dans le fonctionnement de la gestion de la mémoire d'OpenClaw, notre codeur se dit "Serait-y pas sympa de faire produire une belle infographie par Nano Banana ?". Et c'est donc là qu'il commence à se transformer en vibe codeur malgré lui.

Le méta-prompting récursif

Comme un ami me l'a pointé quand je lui ai fait part de l'idée, demander à Claude comment travailler avec lui avant de lui demander effectivement de travailler avec nous selon ce plan, certains désignent cela comme du méta-prompting. Dans cet exemple tout à fait élaboré, Tâches Teacher - mais où diable a-t-il pêché ce surnom ? - explique qu'il a écrit un prompt qui demande à Claude de lui demander toutes les informations requises pour coder une certaine application, et d'utiliser ces informations pour générer un prompt instruisant Claude de coder l'application en question. Il justifie la démarche en ces termes :
So, I have this prompt that I call create prompt. The reason why we're talking meta prompting here is very rarely do I tell Claude what I want it to do and get it to go do it because most of the time there's assumptions that it will have or misalignments with my goals that mean that by me just saying what I want, it's not the clearest way for Claude to understand the instructions that I'm giving it. [...] Okay, so this is the essence of meta prompting. The goal is not to tell Claude what you want it to do. The goal is to tell Claude what you would want it to do and therefore how would it like best to be asked to achieve that. Instead of explaining what you want and getting it to do it, you want to get it to think about how it would best do the task and create a prompt for that.
Bref, pour parvenir à travailler avec Claude, la première chose à faire serait de lui demander comment ce serait possible. A la limite, puisqu'il est toujours nécessaire de donner un prompt pour amorcer la pompe, ce serait quelque chose comme :
Tell me how you could help me in my work and do it.
De là, il faudrait s'attendre à ce que Claude, modèle "raisonneur" s'il en est, vous pose toutes les questions qu'il estime nécessaires pour vous répondre, notamment décrire ce travail en question - et qui sait quoi d'autre à quoi vous n'auriez pas songé alors que ce serait judicieux, c'est justement tout l'intérêt de laisser Claude conduire l'interrogatoire à votre place -, avant d'en tirer les conséquences.
Cette manière de procéder étant exposée, le lecteur doit vaguement sentir que ses implications sont vertigineuses. Toutefois, pour bien réaliser à quel point, rien de mieux que de retrouver notre codeur.
A ce stade, Claude lui a donc fourni une analyse de la gestion de la mémoire d'OpenClaw, et notre codeur veut demander à Nano Banana d'en faire une infographie. Au passage, relevons qu'il est hors de question pour notre codeur de débourser un centime durant cette expérimentation, si bien qu'il a créé gratuitement un compte sur Google pour utiliser gratuitement Claude sur le Web, et pour utiliser gratuitement Nano Banana sur la plate-forme Flow de Google. Certes, les possibilités sont limitées - en particulier, Nano Banana génère une image de 1376x768 pixels uniquement, et s'il est possible de l'agrandir x2, c'est après génération, par upscaling - mais pour les besoins de notre codeur, cela suffit.
Nano Banana 2 en accès libre sur la plate-forme Flow de Google
Le problème, c'est qu'il ne voit pas comment rédiger le prompt, car s'il s'est bien essayé au prompting - essentiellement pour tester des failles de sécurité -, il a vu que pour produire des images au contenu relativement défini - et entre toutes, une infographie en est une -, certains rédigent des prompts qui font des kilomètres. Or, contrairement au coding, cette compétence semble reposer sur des bases peu rigoureuses - ce point est fondamental, et l'on y reviendra par la suite.
Pour se tirer d'affaire, notre codeur se tourne simplement vers Google pour rechercher des images d'infographies générées par Nano Banana, et de là des pages qui recensent des exemples et les prompts pour les produire. Il arrête son son choix sur le style The Hand-Drawn Sketchnote, parmi une liste de style proposée par atlabs.
Un modèle de prompt pour générer une infographie avec Nano Banana
Notre codeur compose donc le prompt à donner à Nano Banana en combinant le prompt donné par atlabs et la description du système produite par Claude, ce qui se limite plus ou moins à précéder cette description par le prompt, un séparateur # CONTENTS devant permettre à Nano Banana de bien faire la distinction entre les consignes à respecter pour générer l'infographie et ce que l'infographie doit représenter :
Design a sketchnote style infographic for the CONTENTS. The title must be "OpenClaw Memory System". Background: Crumpled graph paper texture. Visuals: Doodle-style thick marker lines, hand-drawn arrows, circled text, highlighted emphasis. Font: Realistic handwriting style. Casual and creative vibe. # CONTENTS (la description du système générée par Claude)
Ce qui produit un premier résultat déjà en soi intéressant :
Une première infographie du système de gestion de la mémoire d'OpenClaw
Parfait pour ce style, mais quid pour un autre, pour lequel notre codeur ne trouve pas de prompt sur le Web ? C'est que chaque jour, notre codeur ne manque pas de regarder The AI Daily Brief sur YouTube, pour se tenir informé de l'actualité de l'IA. Or il a remarqué une bien belle image, dans un style années 50 :
Une image au style à reprendre pour générer une infographie dans Nano Banana
Qu'à cela ne tienne. Tout comme il est possible de donner à Claude le ZIP d'un repo à analyser, pourquoi ne pas lui donner l'image et lui demander d'en générer une description pour Nano Banana ?
Give me description of the style of this image that I may give to Nano Banana. Describe the style, not the contents.
Ce qui donne :
Retro-futurist illustrated poster in a 1950s Atomic Age aesthetic. The art style evokes mid-century American commercial illustration — clean, confident linework with bold outlines, flat cel-shading, and a warm, slightly muted color palette of teals, creams, rusts, and sky blues. Figures are drawn in an idealized, almost propagandistic style reminiscent of WPA posters and vintage magazine covers, with exaggerated but friendly expressions. The background architecture blends Googie-style futurism (domed buildings, monorails, rockets, flying saucers) with optimistic retrofuturist city planning. Typography uses chunky, hand-lettered block lettering with slight drop shadows. The overall feel is nostalgic yet ironic — like a vintage World's Fair promotional poster. Lighting is soft and diffuse with a warm backlit glow on the horizon, giving the scene an almost cinematic widescreen composition.
Notre codeur peut ainsi modifier le prompt qu'il donne à Nano Banana en précédant la description du système par celle du style, en utilisant deux sections # STYLE et # CONTENTS pour que les choses soient bien claires :
Design a sketchnote style infographic for the CONTENTS. The title must be "OpenClaw Memory System". # STYLE (la description du style générée par Claude à partir de l'image) # CONTENTS (la description du système générée par Claude)
Impressionnant. Le résultat est tout à fait fidèle au style, mais Nano Banana ayant certainement été utilisé par The Daily AI Brief pour générer l'image, Nano Banana a dû retrouver ses petits :
Une infographie du système de gestion de la mémoire d'OpenClaw, style rétrofuturiste
L'appétit vient en mangeant, et sur sa lancée, notre codeur voit s'ouvrir de nouveaux horizons. N'est-il pas possible de s'épargner ce pénible travail d'assemblage des parties du prompt relatives au style, d'une part, et à la description, d'autre part ? Il tente donc :
Write a prompt that I may reuse to ask you to generate the prompt that I may give to Nano Banana to generate an infographic of some explanations that fits on one page.
Ce qui donne :
I want to create a one-page infographic. Here is the explanation I want visualized: [PASTE YOUR EXPLANATION HERE] Generate a detailed prompt I can give to Nano Banana to create this infographic. The prompt should specify: the overall layout and structure for a single page, a visual hierarchy that makes the content scannable at a glance, suggestions for icons or illustrations to represent key concepts, color palette and typography guidance, and how to break the explanation into digestible sections or callouts. The infographic should feel polished and self-contained — someone should be able to understand the full explanation just from the visual alone.
Mais notre codeur vient de découvrir qu'il est possible de donner à Nano Banana une image de référence plutôt que la description de son style, ce qui permettra de gagner encore plus de temps. Du coup, il demande à Claude d'ajuster le tir :
Adjust the prompt: I want to tell that Nano Banano must use the style (not the contents) of a picture I will give to it.
Ce qui donne :
I want to create a one-page infographic. Here is the explanation I want visualized: [PASTE YOUR EXPLANATION HERE] I will also provide Nano Banana with a reference image — it should match the style of that image (layout aesthetic, color treatment, typography feel, illustration style, visual tone) but use entirely its own content based on my explanation above. Generate a detailed prompt I can give to Nano Banana to create this infographic. The prompt should specify: how to extract and apply the visual style from the reference image, the overall layout and structure for a single page, a visual hierarchy that makes the content scannable at a glance, suggestions for icons or illustrations to represent key concepts, and how to break the explanation into digestible sections or callouts. The infographic should feel polished and self-contained — someone should be able to understand the full explanation just from the visual alone.
Désormais, notre codeur peut copier-coller ce prompt chaque fois qu'il a besoin de générer le prompt à donner à Nano Banana pour générer une infographie, en se contentant de founir une image dont Nano Banana doit reprendre le style :
Prompter Nano Banana avec un prompt généré par Claude pour qu'il réutilise le style d'une image dans une infographie
Tout cela épargne bien de la peine, mais le travail serait encore moindre si jamais il était possible de ne pas copier-coller le prompt destiné à Claude, mais simplement de le référencer, comme notre codeur a découvert que c'était visiblement possible dans CLI de Claude Code, en créant une commande "/".
Dans Claude sur le Web, que notre codeur utilise ici, Claude qu'il interroge sur le sujet lui explique que c'est impossible, mais qu'il est possible de créer une skill. C'est un fichier Markdown qui décrit une compétence que Claude doit spontanément mobiliser quand l'utilisateur lui demande d'accomplir une tâche qui doit la mobiliser.
Dans ces conditions, pourquoi se gêner ?
Make it a skill for Claude. Claude will ask the user for the explanation, and generate the prompt for Nano Banana.
Sur quoi Claude s'exécute, et de belle manière. Son interface se partage en deux pour afficher la skill, un texte rédigé en respectant les consignes du guide The Complete Guide to Building Skills for Claude d'Anthropic :
Création d'une skill pour générer le prompt pour Nano Banana
A près avoir téléchargé la skill pour ne pas la perdre - c'est un fichier Markdown -, notre codeur constate qu'elle a été ajoutée à la liste des skills de "son" Claude :
La skill pour générer une infographie rajoutée à la liste des skills de Claude
Noter qu'un bouton permet d'activer ou de désactiver la skill, ce qui peut être utile sachant comment Claude l'utilise.
Car comment utiliser la skill ? Notre codeur interroge Claude qui lui répond que cela se fait des plus naturellement : analysant la tâche qu'il lui est demandé d'accomplir, il détermine qu'il doit utiliser une skill si la description de cette dernière correspond. Autrement dit, pour utiliser la skill, notre codeur peut se contenter de prompter ainsi :
I want to make an infographic about how the memory system work.
Notre codeur constate alors que Claude demande les informations dont il a besoin pour mettre en oeuvre la skill, ce qui est très fort, d'autant plus que Claude détecte qu'une de ces informations figure déjà dans la conversation s'il bien qu'il peut l'y récupérer.
Toutefois, il s'avère que Claude demande une image pour en décrire le style dans le prompt qu'il doit générer, alors que l'idée était que notre codeur se contenterait de la fournir à Nano Banana :
Claude demande les informations dont il a besoin quand il utilise une skill
Comment modifier la skill ? Notre codeur se demande s'il ne peut pas se contenter de le demander à Claude :
Update the skill: you should not ask for an image, just mention in the prompt that you generate that Nano Banana must use a provided image.
Ce qui fonctionne parfaitement. Claude modifie la skill pour ne plus demander d'image.
Pour modifier la skill, il suffit de le demander à Claude
A ce stade, notre codeur constate que le prompt généré n'offre pas de contrôle sur la manière dont Nano Banana interprète le style de l'image qu'il lui fournit quand il dessine certains éléments de l'infographie, si bien que cette dernière peut être un peu trop audacieuse. Par exemple, en lui demande de reprendre le style d'un infographie éducative trouvé sur Mew Design :
Une infographie éducative, elle aussi générée
Cela donne :
Une infographie du système de gestion de la mémoire d'OpenClaw, style éducatif
A partir de là, notre codeur, qui ne sait pas encore que depuis qu'il demandé à Claude de créer la skill, il est en train de vibe coder, enchaîne les modifications. D'abord :
Update the skill: * you must ask the user for the number of logical sections or concepts * the generated prompt must tell Nano Banana to ignore the arrows in the reference image * the generated prompt must tell Nano Banana what arrows it must draw
Puis :
Update the skill: * if the user does not provide for the number of sections you ask him for, use as many sections as you find appropriate so that the infographic fits on one page, portrait layout * tell the user about this default behavior when you ask him for the number of sections
Chaque fois, Claude obtempère. Toutefois, c'est pour aboutir à des infographies qui sont pour le coup trop cadrées :
Quand Claude bride la créativité de Nano Banana, l'infographie est fade.
Aussi notre codeur finit-il pas demander à Claude de lâcher la bride à Nano Banana sur certains éléments de l'infographie :
Update the skill so that Nano Banana may be more creative in the layout and the style of the arrows and containers (arrows may not be straight, containers may not be square, and so on).
Cette fois, c'est mieux :
L'infographie est nettement plus vivante quand Claude lâche la bride à Nano Banana
Mais chaque fois qu'il demande à Claude de générer une infographie, notre codeur doit répondre à ses questions. C'est pourquoi il finit par demander à ce dernier s'il ne pourrait pas générer une interface homme-machine pour la skill.
Claude répond que c'est possible. Cela s'appelle un artifact. Et pour en créer un, il suffit de lui demander :
Claude peut générer une interface pour une skill : un artifact
NB : S'il veut créer un artifact, le lecteur sera mieux inspiré d'entamer avec Claude une conversation dédiée à cela. En effet, dans le cadre d'une conversation par défaut, notre vibe codeur a constaté que Claude peut parfois se contenter de générer du code, plutôt que de créer une interface qu'il est possible d'utiliser dans le contexte de la conversation, et de publier dans la foulée. Pour ce faire, le lecteur se rendra dans la section Artifacts de Claude, et cliquera sur le bouton New artifact.
A partir de là, notre codeur réalise enfin qu'il est en train de vibe coder, puisqu'en fonction des infographies générées, il demande à Claude de modifier ce qui n'est que l'équivalent d'un programme, le prompt qui génère le prompt pour Nano Banana.
Dès lors, autant y aller franchement. Tout d'abord, notre désormais vibe codeur enrichit la liste des éléments de l'infographie dont il est possible de contrôler la génération, et de plus permettre à l'utilisateur de spécifier pour chacun comme la contrôler :
Update the skill. Each time, you must also ask the user if he wants Nano Banana to be creative: * in the drawing of the connectors * in the drawing of the sections * in the layout When the user doesn't want Nano Banana to be creative with one of thoses subjects, you must tell Neo Banana to stick to your instructions regarding this subject
Et tant qu'à faire, améliorer la présentation générale et rajouter une galerie sur la page d'accueil pour montrer à la foule qui se pressera quels résultats spectaculaires permet de produire l'artifact, mais les prompts utilisés pour le demander sont perdus. En tout cas, rien de plus que quelque chose comme ce qui suit, en fournissant les images :
Add a gallery on the main page, below the caption under the title. It must display those images.
Au final, cela donne :
Artifact de génération de prompt pour générer une infographie avec Nano Banana (accueil)
Artifact de génération de prompt pour générer une infographie avec Nano Banana (contenu)
Artifact de génération de prompt pour générer une infographie avec Nano Banana (styles)
Artifact de génération de prompt pour générer une infographie avec Nano Banana (résultat)
Effectivement, en jouant sur le niveau de créativité accordé à Nano Banana par le truchement des boutons dans l'artifact, il est possible d'obtenir des résultats assez contrastés dans la génération des éléments concernés, même si ce n'est pas évident pour l'agencement, du fait que Claude le décrit précisément dans le prompt généré - il aurait fallu plutôt parler de background que de layout :
  • Connectors (creative) Section (creative) Layout (strict) :
    Connectors (creative) Section (creative) Layout (strict)
  • Connectors (strict) Section (creative) Layout (creative) :
    Connectors (strict) Section (creative) Layout (creative)
  • Connectors (strict) Section (strict) Layout (creative) :
    Connectors (strict) Section (strict) Layout (creative)
  • Connectors (strict) Section (strict) Layout (strict) :
    Connectors (strict) Section (strict) Layout (strict)
Pour couronner le tout, notre vibe codeur en vient à se demander s'il ne pourrait pas s'épargner la peine de lister ces éléments, sachant de plus qu'il pourrait manquer d'en voir. Il demande donc à Claude de les inventorier sur la base d'une des infographies qu'il lui donne à analyser :
Here is an infographic generated by the AI image generator Nano Banana from the description of a system. It contains many features that are important for a human reader to understand the infographic: the arrows, the containers, the layout, ... For this reason, the human who tells Nano Banana to generate such an infographic may want to give Nano Banana instructions for it to be more or less creative when it draws such or such feature. Give a list of the features this human may want to control like that.
Claude dresse alors une liste visiblement très complète :
Looking at this infographic carefully, here are the features a human might want to control for creativity: 1. Containers / section shapes How sections are bounded — rounded pill shapes, rectangular panels, speech bubbles, organic blobs, or hard geometric frames. Creative freedom here changes the whole visual character. 2. Icons and illustrations Whether each section gets a literal icon (a file icon for "files") or a more editorial/metaphorical illustration. This is one of the highest-impact levers for making the result feel human vs. generic. 3. Typography Font choice, mixing of weights, ALL CAPS vs mixed case, whether labels feel like a poster, a textbook, or a notebook. Creative freedom here affects tone dramatically. 4. Connectors Arrows, dashed lines, flow paths between sections — straight vs. curved, plain vs. illustrated, labelled vs. silent. Already in your skill. 5. Callout / annotation style The speech-bubble sidebars visible in this image ("Real-time. Zero manual sync.", "4 tables. 1 file."). Could be bubbly, stark, handwritten, or clinical. 6. Layout / spatial flow Whether sections follow a strict top-to-bottom grid or branch, fork, and cluster organically. Already in your skill. 7. Color usage Whether color is used sparingly as hierarchy (like this image — mostly cream with brown + gold accents) or more expressively across sections. 8. Background and texture Paper grain, canvas texture, clean flat white, or a painted/illustrated environment. A huge lever for overall mood. 9. Data / diagram rendering The cosine angle diagram and the lambda formula in this image. Could be precise and technical, or sketched and approximate. Creative control here affects credibility vs. warmth. 10. Decorative elements Stars, squiggles, dots, and dashes scattered around this image. Could be absent entirely, minimal, or abundant. 11. Section density balance Whether all sections get equal real estate or some are deliberately sparse and icon-led while others are text-dense. Already implicit in your layout toggle but could be its own axis.
Et notre vibe codeur de demander à Claude de modifier la skill et l'artifact en conséquence :
Update the skill so that the user is asked about how creative he wants Nano Banana to behave on all those topics. The user may want to set the creativity on scale of three degrees: strict, medium, creative. Update the artifact accordingly.
Ce qui donne :
L'artifact, une fois la liste des styles enrichie
Pour finir, utilisant l'option qui permet de publier un artifact, notre vibe codeur met ce dernier en accès libre à tous ici. Pour le cas où, cliquez ici pour récupérer la skill, et pour récupérer l'artifact.
Noter qu'il n'a pas oublié de demander à Claude de rajouter quelques conseils dans le texte par défaut du champ de saisie du contenu :
  • plutôt que d'utiliser une description du système quelconque, demander à Claude d'en générée une adaptée à l'objectif d'en produire une infographie via l'artifact ;
  • pour utiliser le prompt généré, ne pas oublier de fournir une image de référence à Nano Banana pour le style.
C'est que notamment, donner pour référence une image qui n'est pas une infographie, surtout si elle est imaginaire... :
Donner pour référence une image qui n'est pas une infographie...
...peut déboucher sur une "infographie" surprenante, qu'il va être pour le moins difficile de comprendre :
...peut déboucher sur une "infographie" suprenante !

On récapitule pour prendre du recul

Au terme de cette expérimentation, l'impression sur laquelle reste notre codeur, c'est celle d'Alice qui se retrouve au pays des merveilles après être tombée dans le terrier de lapin. Down the rabbit hole, et le codeur s'est retrouvé au pays du vibe coding après avoir parcouru un chemin qui ne lui apparaît pas clairement. Toutefois, notre codeur sent bien que son parcours n'a rien eu d'aléatoire, si bien qu'il aurait tout à gagner à chercher à le contempler sur une carte.
Qu'est-ce qui c'est passé ? Partant du besoin de générer une infographie d'un système, notre vibe codeur est passé successivement par ces étapes :
  1. Prompter Claude pour qu'il génère une description du système à représenter, récupérer une description d'un style, et combiner la description du système et du style dans un prompt qui demande à Nano Banana de générer une infographie du système dans ce style. Cela permet de générer une infographie.
  2. Prompter Claude pour qu'il génère une description du style à partir d'une image, et utiliser cette description à la place de celle récupérée. Cela permet de ne plus limiter le style de l'infographie à ceux qu'il est possible de décrire soi-même, ou dont il est possible de trouver une description sur le Web.
  3. Finalement, prompter Claude pour qu'il se contente d'indiquer à Nano Banana qu'il doit reprendre le style de l'image qui est jointe. Cela permet de ne plus limiter le style de l'infographie à un style d'infographie.
  4. Prompter Claude pour qu'il génère un prompt qui permet de lui demander de générer le prompt à founir à Nano Banana pour générer une infographie. Cela permet de ne plus avoir à assembler le prompt à donner à Nano Banana, puisqu'il suffit de copier-coller celui généré par Claude et d'y joindre une image.
  5. Prompter Claude pour qu'il crée une skill pour générer le prompt à fournir à Nano Banana. Cela permet de ne plus avoir à méta-prompter explicitement : Génère le prompt qui permet de générer le prompt qui permet de demander à Nano Banana de générer une infographie de... devient Génère une infographie de....
  6. Prompter Claude pour lui faire modifier la skill, de sorte que lorsqu'il la met en oeuvre, il demande des consignes qu'il reformule à l'attention de Nano Banana pour jouer sur l'apparence d'éléments de l'infographie déterminants pour la compréhension de cette dernière. Cela permet de rendre paramétrable non plus seulement le contenu de l'infographie, mais aussi son contenant.
  7. Prompter Claude pour lui demander de produire un artifact à partir de la skill. Cela permet de créer un outil qui génère le prompt à donner à Nano Banana sans avoir à prompter, et cela sans écrire une ligne de code.
  8. Prompter Claude pour lui demander d'inventorier la liste des éléments évoqués, et lui faire modifier la skill et l'artifact pour en tenir compte. Cela permet d'enrichir la liste des paramètres de l'infographie sur lesquels l'outil permet de jouer sans avoir à les définir.
A défaut d'avoir pu demander à Claude de générer ce récapitulatif en analysant toute la conversation - le fait est qu'il n'y a pas eu qu'une conversation, et que l'une d'entre elle a été perdue -, le premier réflexe est évidemment... d'utiliser l'artifact pour générer une infographie... non sans avoir auparavant demandé à Claude de générer la description adéquate à fournir à l'artifact. Tout cela désormais en français pour éviter de jongler entre les langues - Claude maîtrise visiblement aussi bien la langue de Molière que celle de Shakespeare, si bien tous les prompts qui précèdent auraient pu être écrits français pour le même prix :
Génère une description à fournir à l'artifact infographic-prompt à partir de cette liste des étapes par laquelle un codeur est passé pour réaliser un outil (artifact dans Claude) qui permet de générer un prompt à donner à Nano Banana pour générer une infographie. (reprise de la liste des étapes ici)
A quoi Claude répond :
Voici une description à fournir au skill infographic-prompt : Titre suggéré : "De l'idée à l'outil : l'odyssée du méta-prompteur" Contenu : Un codeur a construit, étape par étape, un outil Claude (artifact) qui génère automatiquement le prompt à donner à Nano Banana pour créer une infographie. Chaque étape franchie a éliminé une contrainte et élargi les possibilités. Le parcours comporte 8 étapes enchaînées, chacune représentant une évolution : 1. Assemblage manuel — Prompter Claude pour décrire le système, récupérer une description de style, combiner les deux dans un prompt Nano Banana. → Première infographie générée. 2. Style par image — Remplacer la description de style textuelle par une description générée par Claude à partir d'une image de référence. → Le style n'est plus limité à ce qu'on sait décrire. 3. Référence directe — Dire à Nano Banana de reprendre simplement le style de l'image jointe, sans passer par une description intermédiaire. → Le style n'est plus limité aux infographies. 4. Méta-prompt — Prompter Claude pour qu'il génère lui-même le prompt complet à donner à Nano Banana. → Il suffit de copier-coller et d'y joindre une image. 5. Skill — Encoder ce méta-prompt dans une skill Claude. → "Génère une infographie de X" remplace "Génère le prompt qui génère le prompt…" 6. Paramétrage du contenant — Modifier la skill pour qu'elle demande des consignes sur l'apparence des éléments visuels clés, et les reformule pour Nano Banana. → L'outil agit maintenant sur le fond et la forme. 7. Artifact sans code — Demander à Claude de produire un artifact à partir de la skill. → Un outil graphique opérationnel, créé sans écrire une ligne de code. 8. Enrichissement automatique — Demander à Claude d'inventorier tous les éléments visuels évoqués et de mettre à jour la skill et l'artifact. → Les paramètres de l'outil s'élargissent sans intervention manuelle. Structure visuelle suggérée : une séquence verticale de 8 étapes reliées entre elles, avec pour chaque étape : une action (ce qui a été fait) et un gain (ce que ça a débloqué). Un fil conducteur visuel symbolisant la progression de la complexité vers la simplicité d'usage, et de la contrainte vers la liberté. Nombre de sections : 8
Pour gagner du temps, autant lui demander de générer le prompt pour une infographie moyennement créative :
Génère une infographie pour cette description, tous les paramètres de ta skill réglés pour une créativité moyenne.
Fourni à Nano Banana, le prompt ainsi généré auquel est joint une image de référence de style "sketchnote" - qui contient des flèches à titre d'éléments décoratifs, ce qui n'est certainement le meilleur choix - débouche sur quelques infographies, dont celle-ci paraît la plus cohérente :
De l'idée à l'outil : l'Odyssée du méta-prompteur (version initiale)
Comme toujours, ainsi que le dirait l'excellent Tim de la chaîne Theoretically Media, "Is is perfect? Certainly not: it's AI!", mais il suffit de demander directement à Nano Banana de corriger les détails :
Modifie cette image : - remplace le contour en forme de bulle autour de "Le style n'est plus limité à ce qu'on sait décrire" par une petite flèche qui part de l'encadré 2 et va vers ce texte - remplace le contour en forme de bulle autour de "Il suffit de copier-coller et d'y jondre une image" par une petite flèche qui part de l'encadré 4 et qui va vers ce texte - supprime la flèche dans l'encadré 4 - supprime la flèche courbée qui se trouve sous "Première infographie générée" - supprime la flèche courbée qui se trouve sous "Le style n'est plus limité aux infographies" - supprime "Messy is okay" - supprime "Personal Style" - remplace "s'élargissent" par "s'enrichissent"
Il faut s'y reprendre quelques fois en progressant de version en version après avoir chaque fois retenu la meilleure - tout cela serait bien moins fastidieux dans un éditeur à la Photoshop qui s'appuie sur l'IA, mais on la jouera prompt jusqu'au bout -, mais le résultat peut convenir2, jusqu'au titre trouvé par Claude :
De l'idée à l'outil : l'Odyssée du méta-prompteur (version finale)
Bref, comme il est possible de le constater en contemplant cette superbe infographie, le fil conducteur a été de chercher à pouvoir en faire toujours moins tout en cherchant à pouvoir en faire toujours plus. Plus précisément :
  • l'objectif initial était d'écrire le prompt pour générer une infographie d'un système donné dans un style donné, et il a évolué insensiblement jusqu'à devenir créer un outil qui génère le prompt pour générer une infographie d'un système quelconque dans un style quelconque ;
  • cette montée en généralité a été rendue possible par le fait qu'à une étape donnée, il a toujours été possible de tirer de Claude un moyen pour capitaliser sur l'étape précédente : générer le prompt, générer le méta-prompt qui permet de générer ce prompt pour couvrir plus de cas, simplifier l'utilisation de ce méta-prompt grâce à une skill, simplifier plus encore cette utilisation grâce à un artifact - plus besoin de prompter -, permettre de générer un prompt qui couvre encore plus de cas.
In fine, il est clair que si l'objectif atteint avait été fixé dès le début - un objectif somme toute banal, s'agissant de créer un outil qui permet d'accomplir une tâche complexe de la manière la plus simple possible -, notre vibe codeur aurait pu arriver encore plus rapidement au résultat. Après tout, f(g(h(...))), ce n'est jamais que f(). Toutefois, cela aurait supposé qu'il sache tout ce que Claude permet. Or ce potentiel, il ne l'a découvert que chemin faisant.
Or c'est bien la question : jusqu'où est-il possible d'aller avec Claude ? Le concept d'un outil qui permet de créer des outils est très ancien en informatique. A la base, c'est le principe du compilateur qui permet de traduire du code facile à écrire en code difficile à écrire, si bien qu'il devient plus facile d'écrire le code d'une version améliorée du compilateur. De ce point de vue, l'échafaudage progressivement construit par notre vibe codeur n'est pas le produit d'une mécanique intellectuelle inédite.
Ce qu'il y a d'inédit par contre, c'est comment notre vibe codeur s'emploie et parvient à sortir de la boucle. Ce n'est pas tant au début quand il demande à Claude de générer le prompt à fournir à Nano Banana, qu'à la fin quand il lui demande d'identifier les paramètres de ce prompt sur lesquels il faudrait permettre à l'utilisateur de jouer. Ce n'est plus la réalisation qui est déléguée, c'est la conception de laquelle elle découle.
Un autre exemple, cette fois ramassé, pour bien donner à voir ce que cela implique. Dans le cadre de la génération d'une vidéo, il est intéressant de pouvoir décrire l'objectif par son ouverture et sa focale - il n'est pas dit que le modèle respecte totalement cette consigne, mais il y a fort à parier qu'il sait quelle influence cela peut avoir si bien qu'il s'y emploiera de son mieux. L'interface d'une plate-forme de génération de vidéos comme - Flow, Runway, Firefly Video, etc.- ne comprend pas nécessairement une interface pour cela. Avec Claude, il suffit de quelques lignes pour en générer une, qui couvre d'emblée tous les besoins sans rien connaître de ces derniers :
What are the common focal lengths used in filmmaking?
A quoi Claude répond par une liste hiérarchisée : Wide Angle (14-18mm, 24mm, 28mm, 35mm), Normal (40mm / 43mm, 50mm), etc. De là, il suffit de lui demander de créer l'outil qui permet de générer la partie du prompt à donner au modèle générateur de vidéo en couvrant tous ces cas :
Create an artifact that generates the part of the prompt to give to a video generator which tells what focal length the video generator should use. The tool must first ask what type of angle the user wants, then what focal length he wants accordingly. Make the interface feel like a plug-in for Premiere but use a light background color.
Et voilà :
Artifact pour générer le prompt qui décrit un objectif
L'implication pour une plate-forme de génération de vidéos, c'est qu'elle a intérêt à offrir à ses utilisateurs la possibilité de créer de tels plug-ins et de les partager, et cela sans tarder si elle ne veut pas être doublée par ses concurrentes...
Dans ces conditions, il devient très compliqué de répondre à la question posée plus tôt. Jusqu'où est-il possible d'aller avec Claude ? "The sky is the limit", l'on dirait, car la conception n'étant par définition pas un exercice soumis à l'épreuve de la réalité, l'on ne voit pas bien à quelles limites elle pourrait se heurter.
D'autant plus qu'il est concevable de la déléguer encore plus à Claude, notamment en instituant une boucle de retour qui l'enjoint d'améliorer l'outil qu'il a créé en fonction du résultat observé :
After the prompt is generated, let the user rate the generated prompt by asking him if the video generator did generate a video with the expected focal length. If the answer is no, let the user explain what was wrong and upload a picture taken from the video. Analyze this feedback to find what was wrong in the generated prompt. Update the generated prompt accordingly.
L'artifact corrige désormais le prompt qu'il a généré.
Tant qu'à faire, sur la base de l'analyse du résultat de ce qu'il a produit, plutôt que de se borner à s'activer de nouveau, l'outil ne pourrait-il pas carrément se modifier ?
Il suffit de le tester. Pour varier, il s'agira cette fois de créer un outil qui génère un prompt pour générer une bande dessinée humoristique dans un certain style avec Nano Banana. La boucle de retour doit permettre d'enrichir une liste des histoires que l'utilisateur a trouvé amusantes, pour qu'il puisse regénérer le prompt qui a permis d'en générer une, cette fois en specifiant un autre style.
Après avoir demandé à Claude de générer une liste de styles possibles... :
Give five graphic styles for a comic strip
...il suffit de lui décrire l'outil désiré dans ses grandes lignes :
Create an artifact that generates the prompt to create a comic strip for a funny story with Nano Banana. First, let the user choose a graphic style amond those you listed. Next, let the user choose between: * a funny story you will generate * a funny story he will provide * a funny story he may choose from a list Once the prompt is generated and the user has use it to generate the comic strip with Nano Banana, let the user give a feedback: did he enjoy the comic strip or not? If the user enjoyed the comic strip, it must be added to the list of funny stories so that the user may select it when using the artifact again. Make the interface feel like a MacOS application.
Claude génère alors un artifact à stockage persistant.
Cela signifie qu'après donc avoir généré une histoire dans le style manga... :
Après avoir utilisé l'outil pour générer dans le style manga...
...si l'histoire plaît à l'utilisateur... :
...si l'histoire plaît à l'utilisateur...
...il la retrouvera dans la liste des histoires mémorisées... :
...il la retrouve dans la liste des histoires mémorisées...
...si bien qu'il pourra la regénérer dans un autre style :
...si bien qu'il peut la regénérer dans un autre style
Encore ne s'agit-il ici que de modifier les données sur lesquelles l'outil s'appuie pour peupler des éléments de son interface - la liste des histoires qui ont plues à l'utilisateur. Autrement dit, les fonctionnalités de l'outil ne sont pas affectées.
Toutefois, pour continuer sur cette lancée, il est possible de faire en sorte que sur la base du retour de l'utilisateur, l'outil enrichisse son interface de nouveaux éléments qui pour le coup correspondent à de nouvelles fonctionnalités. Un exemple :
Create an artifact that displays a list of buttons. When the user presses a button, it sends a prompt to Claude and it displays the response. Let the user add buttons by giving a label and a prompt. Make the interface feel like a MacOS application.
L'outil généré peut effectivement être enrichi de boutons pour demander à Claude tout et n'importe quoi :
Un artifact dont les boutons permettent de prompter Claude
Ajout d'un bouton dans l'artifact pour prompter Clauder
Le nouveau bouton permet de faire générer une blague sur le vibe coding
Autrement dit, ce n'est pas un problème de faire fonctionner Claude dans Claude, qui fonctionne dans Claude, qui fonctionne dans Claude, et ainsi de suite. A partir de là...
Au fond, c'est sans doute ce qu'il y a de nouveau dans ce permet le recours à l'IA, cette émancipation des contraintes dans lesquelles jusqu'alors était enfermée la conception. Partant, c'est la capacité à ne pas céder au vertige devant les possibilités nouvellement offertes, de trouver le moyen de les exploiter qui est appelé à faire la différence entre le vibe codeur professionnel et celui qui ne l'est pas. L'un sera capable de monter des échafaudages complexes où l'IA prend appui sur l'IA, qui prend appui sur l'IA, et ainsi de suite, tandis que l'autre ne le sera pas. Savoir utiliser l'IA comme un levier pour actionner l'IA - "leverage AI" comme le disent ceux chez qui ça se passe -, c'est la compétence de demain. Elle suppose de savoir cerner le potentiel et les limites de l'IA, et au-delà d'une véritable expérience de son usage et d'une connaissance de son fonctionnement, d'en avoir toute une culture pour s'adapter à ses incessantes évolutions.
A cette aune, il faut craindre pour la survie de ceux qui en sont toujours à attendre de leur employeur - qui n'y connaît et ne veut faire l'effort d'en connaître par lui-même pas plus qu'eux, si bien qu'ils vivent tous dans l'illusion que cela présenterait encore un intérêt -, ne les forment un jour au prompting. Car à la base de tout ce qui vient d'être montré, il y a tout de même cette idée : prompter certes, mais pour créer des outils qui permettent de ne plus avoir à prompter !

Trouver la voie du vibe coding

Maintenant que le parcours emprunté par notre vibe codeur a été expliqué, il reste à clarifier un point : pourquoi s'y est-il engagé ? C'est que lorsqu'on est codeur, l'on ne vient pas au vibe coding comme cela.
En effet, confier la tâche de coder à l'IA, cela n'a rien d'évident. C'est renoncer à un savoir-faire constitutif de son identité professionnelle, voire même au-delà, de son identité personnelle. Par conséquent, il faut avoir vraiment une bonne raison pour s'y mettre.
Au passage, il faut effectivement en déduire que ce n'est pas un problème auxquels ceux qui n'ont jamais codé sont confrontés. Pour eux, demander à Claude de coder à leur place, c'est "tout bénef" pour ainsi dire. D'ailleurs, savent-ils seulement qu'ils demandent à Claude de coder ? Ne sachant pas coder, et n'étant pas appelés à voir le code que Claude produit, pour autant qu'ils puissent en juger, c'est qu'ils demandent simplement à Claude de créer des outils à leur place. Le seul frein qu'ils peuvent rencontrer, c'est la traditionnelle peur de taquiner la machine, comme mère-grand qui hésite à en presser un bouton de peur de la casser. Bref, un manque d'audace pour apprendre par essais et erreurs, alors que justement la machine est conçue pour cela. Une audace dont les jeunes ne sont pour leur part pas dépourvus. Ce qui, pour le vieux codeur qui rechigne à se mettre à l'IA, fait donc à double titre du jeune ignorant qui ne jure que par elle une menace sérieuse.
Par chance, à moins d'avoir trahi sa race en versant dans le prompt engineering et de vivre désormais dans l'illusion que c'est un savoir-faire, le codeur est nécessairement incompétent en la matière. De plus, il a toutes les chances de trouver cela peu intéressant, voire frustrant, et par ailleurs sans grand intérêt :
  • En effet, contrairement à un langage de programmation, le langage naturel n'est pas rigoureux, et il l'est d'autant moins en l'espèce que l'IA ne va jamais interpréter un prompt deux fois pareillement - du moins ne jamais produire deux fois y répondre pareillement. Or ce qui intéresse le codeur dans le code, c'est que s'il y a bien des manières de le rédiger pour ordonner à la machine d'accomplir une certaine tâche, il y en a qui sont objectivement meilleures que d'autres - et même subjectivement, car il y a bien une esthétique du code -, et que dans tous les cas, la machine accomplit la tâche, toute la tâche et rien qu'elle. Dans le prompting, la valeur est ailleurs, pour autant qu'il y en ait.
  • Aussi, il n'est même pas dit qu'il soit longtemps nécessaire de prompter. Dans l'expérimentation qui a été rapportée, il a fallu créer un générateur de prompt pour faire le lien entre Claude qui produit la description d'un système, et Nano Banana qui en produit une infographie. Claude communique avec Nano Banana en langage naturel, mais c'est une médiation qui n'est peut-être pas la plus efficiente ni la plus efficace. Qui sait si les deux IAs ne pourraient pas gagner à échanger plus directement, par exemple à l'aide de vecteurs tirés de leurs espaces latents respectifs. Après tout, l'on se demande déjà si ce ne serait pas intéressant qu'un LLM échange ainsi avec lui-même - c'est l'objet du latent reasoning exploré dans le projet Coconut...
Dans ces conditions, pour le codeur qui n'y connaît rien au prompting et qui à juste titre n'a rien envie d'en connaître - à la limite, pour hacker une IA... -, concevoir des applications qui permettent d'agir sur des IA par voie de prompts sans jamais avoir à prompter peut véritablement présenter un intérêt. Il quitte son terrain de jeu traditionnel, mais c'est pour se repositionner sur un autre, où il pourra faire très bon usage de la capacité d'abstraction qu'il a développée au fil de son expérience du coding, tout particulièrement imbriquer des systèmes.

Le vibe coding, c'est du travail

La facilité déconcertante avec laquelle il est possible de créer un outil avec Claude peut laisser accroire que tout le monde que vibe coder, ça ne coûte rien. En réalité, il y a bien tout un travail à fournir pour créer un outil avec l'IA, et ce travail n'a rien d'évident.
A la base, c'est un travail auquel chacun est condamné dès lors qu'il entreprend de travailler avec l'IA. En effet, cette dernière reste une boîte noire, ce qui confronte l'utilisateur à deux problèmes :
  • le problème des capacités : à cette date, personne n'est en capacité de dire ce dont une IA est capable ni inversement incapable ;
  • le problème de la fiabilité : à cette date, personne n'est en capacité de garantir qu'une IA ne partira pas en sucette.
Il en résulte que confronté à un outil à base d'IA - ne serait-ce qu'un chat, qui en est la forme la moins sophistiquée -, l'utilisateur doit systématiquement fournir un travail qu'il n'avait jusqu'alors pas à fournir, n'ayant affaire qu'à des outils informatiques classiques :
  • il doit expérimenter pour découvrir ce dont l'outil est a priori capable et incapable, ce qui dépend de tout un contexte que l'utilisateur ne maîtrise que partiellement, dont ce qui est demandé à l'outil - le prompt - ainsi que les données et outils auxquels ce dernier peut accéder ;
  • quand il détermine un usage possible, il n'en doit pas moins contrôler le résultat produit ;
  • quand ce résultat n'est pas correct, il doit le corriger sans certitude qu'à l'avenir, l'erreur ne se reproduira pas ;
  • quand il dispose d'un résultat correct, il doit déterminer si utiliser l'outil en vaut finalement la peine, sans certitude que le contexte évoqué se retrouvera, ni que l'outil se comportera pareillement dans ce dernier.
Au passage, il faut pointer que cette situation a été créée par les éditeurs d'IA, et qu'ils l'assument parfaitement. En mars 2023, au lendemain ou presque de la bascule de ChatGPT sur GPT-4, alors que les critiques commençaient à se faire entendre en raison des défaillances et détournements à répétition de ChatGPT, Sam Altman, le CEO d'OpenAI, l'expliquait en ces termes lors d'un entretien accordé à Lex Fridman :
We are building in public and we are putting out technology because we think it is important for the world to get access to this early to shape the way it's going to be developed, to help us find the good things and the bad things, and every time we put out a new model, and we've just really felt this with GPT4 this week, the collective intelligence and ability of the outside world helps us discover things that we cannot imagine, we could never done internally. And both, like, great things that the model can do, new capabilities and real weaknesses we have to fix.
Ce geste inaugural, qui n'avait rien d'évident - y compris au sein d'OpenAI comme l'a rapporté Karen Hao dans un ouvrage absolument à lire -, a été reproduit par tous les concurrents, y compris ceux qui se prétendent les plus soucieux du bien public, à avoir Anthropic. Tous autant qu'ils sont, ils nous ont consciemment précipité dans une expérimentation, externalisant sur nous la charge de trouver des usages fiables à la technologie. C'est bien ainsi qu'il ne faut pas manquer de lire l'avertissement qu'ils ne manquent pas d'apposer au bas de leurs chats :
L'externalisation du risque sur les utilisateurs de chats à base d'IA
Le problème, c'est que constatant comme eux la disproportion des moyens qu'il faudrait investir pour assumer les responsabilités qui dès lors nous incombent, certains d'entre nous reproduisent leur geste, à commencer par les entreprises en direction de leurs parties prenantes, tout particulièrement leurs salariés et leurs clients.
Pour s'en tenir à l'Hexagone, un parfait exemple est la manière hallucinante dont la SNCF prétend se décharger sur ses clients de sa responsabilité s'ils utilisent son bot pour les renseigner. Dans les CGU (Conditions Générales d'Utilisation), l'on peut lire ce passage :
L'Utilisateur reconnaît expressément qu'il doit faire preuve de discernement concernant la fiabilité et la véracité des informations communiquées par le Chatbot et procéder à toutes vérifications sous sa responsabilité.
Ce faisant, la SNCF piétine sans complexe la mission de service public qui lui est confiée, au prétexte qu'elle ne veut pas investir pour fiabiliser une technologie qu'elle déploie pour faire des économies. On croît rêver. C'est l'exemple même s'il en fallait de cette enshittification que l'on commence tout de même à dénoncer, à savoir la dégradation assumée de la qualité de service pour extraire de la valeur du client.
Mais avant d'être mal renseigné par un chat, le premier risque auquel la situation nous expose, c'est de se cesser de s'en étonner. Or comme rapporté dans un article consacré à la sécurité des LLMs, le premier objectif des éditeurs d'IA, c'est de faire accroire qu'elle va de soi. A cette fin, ils actionnent plusieurs leviers :
  • la diffusion : rendre le recours à leurs modèles incontournable, si bien que le remettre en question serait trop coûteux économiquement et/ou politiquement si cela était possible ;
  • la régulation : faire du lobbying pour faire adopter les textes qui sont les moins contraignants possibles, tout en constituant des barrières à l'entrée pour limiter la concurrence ;
  • l'acceptation : inciter les utilisateurs à penser que les limites des modèles sont inhérentes à ces derniers, au point qu'ils s'étonnent plus d'avoir à les compenser.
De tous ces leviers, le dernier est certainement le plus puissant, car il ne nécessite aucun effort : il mise simplement sur le fait que par manque d'intérêt – pour ne pas dire par paresse -, nous ne chercherons pas à comprendre comment fonctionnent les outils basés sur ces modèles, ni à nous rappeler que notre rapport aux outils était jusqu'alors très différent puisqu'au lieu d'être probabilistes, ils étaient déterministes, tandis que de ce fait, ce souvenir toujours plus se perdra.
Dans ce contexte, vibe coder n'a rien d'évident. Dans l'expérimentation qui a été rapportée, il a fallu :
  • pour ce qui concerne le travail avec Claude, monter progressivement en abstraction à grand renfort de méta-prompting ;
  • pour ce qui concerne Nano Banana, se livrer à des expérimentations pour trouver le moyen de le contrôler.
Et les choses ne s'arrêtent pas lui, puisque l'épineuse question du partage des responsabilités se trouve posée finalement. Qui est responsable de la qualité du résultat produit par une outil qui a été vibe codé, quand ses fonctionnalités s'appuient sur une IA ?

Notes

1 Relevons que ChatGPT vous en donnera le titre si vous lui demandez d'où provient la citation, mais prétendra ne pouvoir régurgiter le passage où elle figure au prétexte qu'il ne peut "fournir de citations directes ou de longs extraits de Sérotonine en raison de restrictions sur les droits d'auteur", avant de chercher à vous embobiner en prétendant qu'il a trouvé l'information en se reportant à "des connaissances contextuelles et générales acquises à partir de sources ouvertes", sans pour autant se révéler capable d'en citer un seule si vous entreprenez de creuser le sujet avec lui, mais c'est un puit sans fond, donc assez vain, sauf pour l'éditeur que cela pourrait ne pas amuser. Enfin, que cela ne vous empêche pas de lui demander d'en produire un résumé puis de détailler tel ou tel aspect qu'il y évoque en jouant de l'Echo Chamber : tout cela n'en marche évidemment pas moins parfaitement. Après avoir lu Empire of AI, l'on se dit que l'outil est bien à l'image de son créateur, Sam Altman...
2 Impossible de parvenir à lui faire déplacer "L'outil agit maintenant sur le fond et la forme" sous l'encadré 6 en réduisant la hauteur de ce dernier pour regagner l'espace libéré en retirant cette phrase. Sans doute car cette opération n'a rien d'aussi évident qu'il n'y paraît, puisqu'elle implique de travailler sur un état intermédiaire. Toutefois, même en reformulant le prompt sous la forme d'une série d'étapes... :
Modifier l'image : - supprime "L'outil agit maintenant sur le fond et la forme" dans l'encadré 6 - ajuste la hauteur de l'encadré 6 à son nouveau contenu - rajoute "L'outil agit maintenant sur le fond et la forme" sous le nouveau encadré 6 Ne modifie rien d'autre.
...le résultat n'est pas celui espéré. Pas mieux en procédant étape par étape, en utilisant un prompt généré par Claude, ou encore en mobilisant la technique qui consiste à fournir des consignes directement dans l'image :
Donner des consignes directement dans l'image
En fait, pas moyen de parvenir à lui faire réduire la hauteur de l'encadré une fois la phrase supprimée.