Surya Narreddi, avec Cameron Franz et Alex Wang, décrit en mars 2026 un projet d'entraînement d'un modèle de langage à peindre avec du code. Le point de départ est un constat : avec un modèle d'images, la seule façon de participer est le prompt, et l'image ne s'édite pas directement. Ici, le modèle écrit un programme p5.brush en JavaScript qui rend une aquarelle ; le code est l'artefact, modifiable plus finement qu'un prompt. La question de fond est de faire de l'apprentissage par renforcement sur des tâches créatives : le RL fonctionne quand la récompense est vérifiable, ce que l'esthétique n'est pas.

La boucle est répétée des milliers de fois. Le modèle (Qwen 3.5 35B) reçoit un prompt, par exemple un hibiscus pêche à l'aquarelle, écrit le sketch complet ; celui-ci est rendu en PNG dans un environnement Puppeteer isolé ; un modèle juge compare le rendu à deux références tirées d'un pool noté à la main ; le jugement devient une récompense ; GRPO met à jour le modèle.

love

— Surya Narreddi — designer et développeur , surya.website

La première grille comptait neuf signaux : portillon de compilation, usage de p5.brush, rampe de longueur autour de 3 000 jetons, HPSv3 (modèle de préférence humaine), adhérence au prompt jugée par GPT-5.4 et Gemini, et quatre juges de qualité. Le modèle a plafonné à 0,65, toutes les sorties étant des fleurs plates de style clip-art. L'examen isolé des sous-récompenses a montré que cinq juges étaient corrélés entre 0,85 et 0,95, que la longueur (un tiers du total) était saturée à l'étape 30 et que HPSv3, seul signal variable, ne pesait que 0,10.

Le correctif : un jugement par paires (le juge choisit la meilleure aquarelle entre le rendu et deux références ; la récompense est la fraction de comparaisons gagnées), plus étalé qu'un score absolu compressé, et un pool de références de 581 images, issu de 1 664 générations notées « love », « okay » ou « nope » (117 « love »). La grille passe à quatre composantes : portillon de compilation et d'usage du pinceau (0,05), longueur (0,05), HPSv3 (0,30), juge par paires (0,60). Avec le même modèle et les mêmes données, l'ancien plateau est atteint trois fois plus vite, la progression continue et le code passe de 13 500 à moins de 2 000 jetons. Toutes les images du pool sont des sorties de modèles, faute d'exemples humains.

Le prompt système a aussi été retravaillé avec GEPA : une référence d'API de 400 lignes faisait inventer des méthodes inexistantes ; après 200 itérations contre un juge à sept exemples, la meilleure version est une liste fermée de huit méthodes, sans documentation. L'auteur en tire que de longues références dans un prompt favorisent l'hallucination et qu'une liste courte et tranchée contraint mieux.

En conclusion, l'auteur écrit que le RL subjectif oblige à rédiger la récompense à la main : trop spécifique, le modèle copie les exemples ; trop lâche, il n'apprend rien. Il ne présente pas la méthode comme meilleure pour produire des images, plutôt comme un moyen d'agir sur le prompt, le modèle et l'artefact. Une dernière passe et un rapport technique sont annoncés pour juin 2026.