← Diario
Tecnica·12 mag 2026

Un'immagine per ogni scheda, e perché sbagliava

Un grande piatto da portata di choucroute garnie su un tavolo di legno chiaro, accanto un telefono con lo schermo sfocato, luce calda di fine pomeriggio in una cucina

Fino al 12 maggio, una scheda di ricetta si apriva su un disegno generico scelto in base al suo genere. Quel pomeriggio ha ricevuto una vera foto, generata pochi secondi dopo la creazione e spinta nella scheda aperta senza doverla riaprire. Per arrivarci è servito insegnare al generatore a mostrare il piatto intero, togliere al modello linguistico il diritto di avviare l'immagine da solo, e vietargli di dipingere persone dappertutto.

Un disegno che diceva «ricetta», non «crauti»

Dal giorno prima, ogni scheda dichiara il suo genere di illustrazione nei suoi campi: piatto caldo, piatto freddo, bevanda, dolce da forno, viaggio, idea, libro, luogo. In cima alla scheda veniva disegnata una composizione vettoriale a partire da quel genere: qualche forma, una sfumatura, un accenno. Diceva «questa è una ricetta». Non diceva quale.

La mattina era stata dedicata a rendere la scheda correggibile con un dito. Nel pomeriggio abbiamo voluto che la scheda somigliasse a ciò che contiene. Una ricetta di choucroute con una foto di choucroute. Un'idea regalo con l'oggetto. Una nota di viaggio con la città.

Quello che segue è il racconto di quel pomeriggio, e dei quattro modi in cui l'immagine ha sbagliato prima di azzeccarci.

Una foto, due strade per ottenerla

La prima versione si reggeva su due inneschi.

Il primo era affidato al modello linguistico. Dopo aver creato una scheda memo visiva, aveva a disposizione uno strumento in più: chiedere un'immagine, passando l'identificativo della scheda e un soggetto, una frase breve che descrive cosa deve mostrare la foto. La sua guida gli diceva quando usarlo, ricette, viaggi, regali, note di lettura, eventi in un luogo con un nome, e quando astenersi: promemoria, attività, contatti, fatti, verbali di riunione. Un verbale non ha una foto.

Il secondo era dato all'utente. Nel piccolo menu in alto a destra della scheda, accanto a «Modifica» ed «Elimina», una nuova voce: «Genera un'immagine». Se la prima foto sbagliava, se ne poteva chiedere un'altra senza ripassare dalla conversazione. Durante i pochi secondi di lavorazione compariva una riga discreta, «Foto in generazione…», in blu e non in rosso, perché non è un errore.

Dietro le due strade, la stessa catena lato server. Il soggetto viene avvolto in un'istruzione di stile fotografico, inviato a un generatore di immagini, e l'immagine torna sotto forma di byte. Quei byte vengono depositati in uno spazio di archiviazione con il nome della scheda, sovrascrivendo l'eventuale immagine precedente, con un numero di versione nell'indirizzo perché il telefono non ripeschi la vecchia dalla sua cache. Infine l'indirizzo viene scritto nei metadati della scheda, accanto al modello e alla lista, senza toccare il resto. Nel passaggio, il server verifica che la scheda appartenga davvero a chi la chiede, con account collegato o in anonimo.

Se manca la chiave del servizio, il server lo dice all'avvio e rifiuta lo strumento in modo pulito invece di andare in crash a metà di una conversazione. Se il generatore fallisce, la scheda tiene il suo disegno. L'immagine è un di più, mai una condizione.

Crauti senza crauti

Prima prova reale: una choucroute per sei persone. La foto mostrava salsicce, carote e patate, ben illuminate. Nemmeno una foglia di cavolo.

La causa stava nel soggetto trasmesso. Il modello linguistico aveva inviato qualcosa come «Choucroute, 6 persone, 2 h». Il generatore di immagini non conosce la choucroute come la conosce un lettore alsaziano: per lui è una parola tra le altre in una frase breve, e si aggrappa a ciò che sa disegnare. Sono seguite due correzioni.

L'istruzione di stile, lato server, ha ricevuto una frase che pesa: l'immagine deve rappresentare esattamente questo soggetto, con ogni elemento nominato visibile. Senza, il generatore prende il soggetto per un'atmosfera. Con, per un ordine.

E la descrizione dello strumento, lato modello linguistico, è stata riscritta con esempi di soggetti sbagliati e di soggetti riusciti. «Choucroute» dà un cavolo. «Choucroute garnie su un grande piatto di gres, cavolo bianco fermentato a montagnola al centro, salsicce affumicate, stinco di maiale e pancetta a fette, patate al vapore, tavolo di legno chiaro, luce calda» dà una choucroute. La regola sta in una domanda: se si toglie il nome del piatto dalla frase, descrive ancora la stessa immagine? Se sì, è troppo vaga. Servono il piatto, da tre a cinque elementi visibili che lo distinguono, e il contesto di servizio, piatto da portata, piatto o tagliere. Da venti a quaranta parole, senza verbi, senza citazioni.

La riga in corsivo che ripeteva la domanda

La stessa prova ha rivelato un difetto senza rapporto con l'immagine, corretto subito perché stava nello stesso punto.

Sotto il titolo della scheda, una riga in corsivo riprendeva la frase originale: «Vorrei fare una choucroute questo fine settimana, puoi…». Letta sulla scheda una settimana dopo, quella frase è rumore. Si sa di averla chiesta, non si vuole rileggere come.

Quella riga ha cambiato natura. È diventata un occhiello editoriale, una o due frasi che presentano la scheda come l'introduzione di un articolo di rivista: «Un piatto alsaziano generoso per una domenica d'inverno: cavolo fermentato, carni affumicate e patate al vapore.» Il campo mantiene il suo nome, si mostra nello stesso punto, solo il senso del suo contenuto è cambiato. Nell'editor della scheda, il testo di suggerimento è passato da «frase originale» a «riassunto editoriale».

Quell'occhiello ha avuto un effetto collaterale felice. Il pulsante «Genera un'immagine» della scheda non ha un modello linguistico sottomano per scrivere un soggetto. Assembla ciò che la scheda contiene già, il titolo e i badge. Con l'occhiello in più, dispone finalmente di elementi visivi, cavolo, carni affumicate, patate, dove la frase originale non ne portava nessuno.

L'identificativo che non esisteva ancora

Il secondo difetto non si vedeva nella foto. Stava nel registro.

Il modello linguistico, a cui si chiedeva di chiamare la generazione «subito dopo» la creazione della scheda, prendeva l'istruzione alla lettera: chiamava i due strumenti insieme, nello stesso turno. Ma l'identificativo della scheda esiste solo a creazione terminata. Invece di aspettare, il modello ne inventava uno, plausibile, del tipo «scheda-tartiflette-ricetta». La generazione partiva verso una scheda fantasma, falliva, e la scheda vera teneva il suo disegno.

Si può riformulare l'istruzione dieci volte. Si può anche togliere al modello una responsabilità per cui non è fatto: l'ordine delle operazioni. È quello che abbiamo fatto.

Da allora decide il server. Quando una creazione sfocia in una scheda memo il cui genere di illustrazione è visivo, piatto caldo, piatto freddo, bevanda, dolce da forno, viaggio, idea, libro, luogo, avvia lui stesso la generazione, con l'identificativo vero, dato che l'ha appena scritto. Non aspetta il risultato: la risposta riparte subito verso il modello, e l'immagine si fabbrica in sottofondo. Il soggetto è costruito a partire dal titolo, dall'occhiello editoriale e dai badge della scheda, gli stessi segnali del pulsante manuale, perché le due strade diano foto della stessa natura. Le schede rinforzate, quelle in cui una richiesta ha ritrovato un ricordo esistente invece di crearne uno, non innescano nulla: hanno già la loro immagine, o non ne hanno mai voluta una.

Restava da far arrivare l'immagine nella scheda che l'utente sta guardando, senza chiedergli di chiuderla e riaprirla. Quando la generazione riesce, il server invia un messaggio in tempo reale a tutti i dispositivi del proprietario: questo identificativo, questo indirizzo dell'immagine. Sul telefono, quel messaggio finisce in una minuscola bacheca, indicizzata per identificativo di scheda. Una scheda aperta vi si abbona al proprio identificativo, e sostituisce il disegno con la foto non appena passa l'annuncio, circa tre secondi dopo la creazione. La bacheca trattiene anche l'ultimo indirizzo annunciato, per la scheda che si aprisse dopo il messaggio anziché prima: lo trova arrivando.

Lo strumento di generazione è rimasto al modello linguistico per un solo uso: una richiesta esplicita dell'utente, «rifai la foto della tartiflette», «sostituisci l'immagine con il piatto servito». Mai concatenato con una creazione.

Due foto per una sola scheda

Il terzo difetto è arrivato con due lamentele che non avevano nulla in comune.

La prima: nell'elenco delle schede, la miniatura mostrava sempre il disegno, anche quando la scheda aveva la sua foto. L'elenco costruiva la miniatura senza passarle l'indirizzo dell'immagine. Una riga per inoltrarlo, e la scheda mostra la stessa immagine fuori e dentro.

La seconda era più interessante: alcune schede ricevevano due foto una dietro l'altra, una mediocre e poi una migliore. Nonostante l'istruzione riscritta, il modello a volte continuava a chiamare la generazione dopo la creazione, in gara con l'innesco automatico del server che faceva già lo stesso lavoro. Due generazioni per una scheda, e l'ultima arrivata vinceva.

Abbiamo smesso di negoziare. Lo strumento è stato tolto dall'elenco che il modello vede. La funzione esiste ancora lato server, per la rotta che il pulsante della scheda chiama, ma il modello non può più avviarla. E per il caso in cui la rotta venisse chiamata due volte di seguito, da due telefoni per esempio, il server tiene una tabella delle generazioni in corso, per scheda: una seconda richiesta per la stessa scheda si aggancia alla promessa già partita invece di ripartire da zero. Cintura e bretelle, ma la cintura era la vera correzione.

La sera: due schede che lampeggiano, e gente dappertutto

A fine giornata, un'ultima prova ha fatto emergere due difetti in un colpo solo, di nuovo senza legame tra loro.

«Ricordami domani alle 8 di andare al negozio di bricolage a comprare cemento e cinghie.» Sullo schermo è comparsa una scheda, vuota, un appuntamento nudo, poi è stata sostituita da una seconda, con la lista. Un lampeggio sgradevole, e un doppione nell'elenco delle schede.

Il registro mostrava la sequenza: una creazione di tipo evento, poi una chiamata per programmare il promemoria, poi una seconda creazione di tipo attività con la lista. Il modello aveva spezzato una richiesta in due ricordi. Ogni creazione apre automaticamente la sua scheda, e l'antirimbalzo che doveva assorbire quel genere di raffica era regolato su trecento millisecondi: abbastanza per due creazioni attaccate, non per due creazioni separate da un'altra chiamata.

Due correzioni. Nella guida del modello, un blocco in testa alla parte memo: una richiesta, un neurone principale. Un appuntamento con una lista è un'attività datata che porta la sua lista, non un evento più un'attività. Se si esita tra i due, è un'attività non appena c'è qualcosa da spuntare, un evento solo quando non c'è nulla da spuntare. E l'antirimbalzo è passato a due secondi: la scheda si apre due secondi dopo l'ultima creazione, così, se il modello spezza ancora, solo l'ultima scheda raggiunge lo schermo. Su una richiesta semplice quei due secondi passano inosservati, perché la risposta parlata si prepara nello stesso momento.

Il secondo difetto riguardava le immagini di quelle liste della spesa: mostravano donne. Una donna in una corsia di ferramenta, una donna davanti a sacchi di cemento. Nessuno aveva chiesto un personaggio.

La causa stava nelle prime parole dell'istruzione di stile: «fotografia editoriale, qualità da rivista». Per un generatore cresciuto a riviste, quelle parole vogliono dire moda, e moda vuol dire modelle. Il soggetto arrivava dopo, troppo tardi per cambiare la scena.

L'istruzione è stata riancorata: fotografia di natura morta e di scena di oggetti, con clausole esplicite, niente persone, niente volti, niente sagome, niente ritratti. Il generatore prende quei divieti alla lettera, esattamente come prendeva «rivista» alla lettera. Le corsie di ferramenta sono tornate corsie.

Cosa ha insegnato il pomeriggio

Quattro volte l'immagine ha sbagliato, e quattro volte per una ragione diversa. Un soggetto troppo magro. Un identificativo inventato. Una gara tra due inneschi. Due parole di stile che pesavano più del soggetto.

Ne sono rimaste due lezioni. La prima: un generatore di immagini non interpreta, esegue. Non sa cosa deve contenere una choucroute, non sa che una lista della spesa non ha bisogno di comparse. Tutto ciò che non gli si dice, lo inventa, e tutto ciò che gli si dice per primo pesa più del resto.

La seconda vale oltre le immagini. Quando un'operazione dipende dall'ordine delle cose, l'identificativo dopo la creazione, una sola generazione per scheda, non spetta al modello linguistico tenere quell'ordine. Gli lasciamo ciò che fa bene, capire cosa vuole l'utente, e il server tiene ciò che deve essere esatto. La memoria resta la fonte, la conversazione il mezzo, e la foto, d'ora in poi, somiglia al piatto.

Da leggere dopo
XNeuronal è disponibile su AndroidUna memoria che deduce sta per arrivare