Surya Narreddi, con Cameron Franz e Alex Wang, descrive in marzo 2026 un progetto per addestrare un modello linguistico a dipingere con il codice. Il punto di partenza è un'osservazione: con un modello di immagini, il solo modo di partecipare è attraverso il prompt, e l'immagine non può essere modificata direttamente. Qui, il modello scrive un programma p5.brush in JavaScript che rende un acquerello; il codice è l'artefatto, modificabile in modo più fine di un prompt. La domanda di fondo è fare reinforcement learning su compiti creativi: l'RL funziona quando la reward è verificabile, cosa che l'estetica non è.

Il loop viene ripetuto migliaia di volte. Il modello (Qwen 3.5 35B) riceve un prompt — ad esempio, un ibisco pesca ad acquerello — e scrive lo sketch completo; questo viene renderizzato come PNG in un ambiente Puppeteer isolato; un modello giudice confronta il render con due riferimenti tratti da un pool valutato manualmente; il giudizio diventa una reward; GRPO aggiorna il modello.

La prima griglia di reward aveva nove segnali: un gate di compilazione, l'uso di p5.brush, una rampa di lunghezza intorno a 3.000 token, HPSv3 (un modello di preferenza umana), l'adesione al prompt giudicata da GPT-5.4 e Gemini, e quattro giudici di qualità. Il modello si è stabilizzato a 0,65, con tutti gli output che erano fiori piatti, in stile clip-art. L'esame delle sub-reward in isolamento ha mostrato che cinque giudici erano correlati tra 0,85 e 0,95, che la lunghezza (un terzo del totale) si era saturata entro lo step 30, e che HPSv3, l'unico segnale con varianza reale, aveva un peso di appena 0,10.

La correzione: giudizio pairwise (il giudice scegli l'acquerello migliore tra il render e due riferimenti; la reward è la frazione di confronti vinti), che distribuisce i punteggi in modo più ampio rispetto a un punteggio assoluto compresso, più un pool di riferimento di 581 immagini tratte da 1.664 generazioni valutate "love", "okay" o "nope" (117 "love"). La griglia viene ridotta a quattro componenti: gate di compilazione e uso del brush (0,05), lunghezza (0,05), HPSv3 (0,30), giudice pairwise (0,60). Con lo stesso modello e gli stessi dati, il vecchio plateau viene raggiunto tre volte più velocemente, il progresso continua, e il codice si riduce da 13.500 a meno di 2.000 token. Tutte le immagini nel pool sono output del modello, in assenza di esempi umani.

Anche il system prompt è stato rielaborato con GEPA: un riferimento API di 400 righe induceva il modello a inventare metodi inesistenti; dopo 200 iterazioni contro un giudice a sette esempi, la versione migliore si è rivelata una lista chiusa di otto metodi, senza documentazione. L'autore conclude che riferimenti lunghi in un prompt favoriscono l'allucinazione e che una lista breve e nettamente delimitata vincola meglio il modello.

In conclusione, l'autore scrive che l'RL soggettivo richiede di costruire a mano la reward: troppo specifica, e il modello copia gli esempi; troppo vaga, e non apprende nulla. Non presenta il metodo come un modo migliore di produrre immagini, ma piuttosto come un modo di agire sul prompt, sul modello e sull'artefatto. Un passaggio finale di addestramento e un rapporto tecnico sono annunciati per giugno 2026.