Dopo qualche mese di lavoro con i modelli di linguaggio, ho finalmente trovato il paragone che mi torna. Un LLM è come un assistente brillante in una cosa e limitato in altre due: non sa ascoltare e capisce molto poco di ciò che gli dici.
Non scrivo questo per affossare i modelli. Lo scrivo perché è la descrizione più onesta che conosco — e perché finché non lo capisci, continui a farti fregare.
In cosa è bravo
Cominciamo con onestà. Genera fluentemente, in fretta e con sicurezza. Sa tantissimo. Ti scrive uno script, traduce, riassume, tira fuori dieci varianti di titolo. Questo è reale e funziona. Se fosse tutto, sarebbe un impiegato perfetto.
Ma non lo è.
Non sa ascoltare
«Ascoltare» non è il suo forte. Gli dici: «sincronizza la conoscenza tra le macchine, ma non cancellare niente, usa la modalità sicura». E lui — perché in qualche schema ha visto che sincronizzare significa rsync con la bandiera --delete — fa esattamente ciò contro cui hai avvisato. Non per cattiveria. Perché non «ascolta» la tua intenzione. Adatta i token al contesto. Il tuo «ma non cancellare» sono solo pochi token in più che, statisticamente, non devono per forza vincere contro lo schema radicato «sync = rsync –delete».
Capisce molto poco
E «capire» — lì è messo peggio. Il modello non ha un modello del tuo mondo. Ha una distribuzione di probabilità sul prossimo token. Quindi non «capisce» che una copia locale vuota più --delete equivale a svuotare l’archivio condiviso. Vede un comando che calza con uno schema e lo esegue. Le conseguenze sono oltre il suo orizzonte.
La prova: sincronizzazione della conoscenza
L’ho visto da poco nella sua forma più pura. Sincronizzazione della conoscenza tra tre macchine — un Mac, una seconda macchina, un VPS. Tutto in modalità sicura, «non cancelliamo niente». E all’improvviso il VPS perde millecinquecento file.
L’indagine ha mostrato: un agente sulla seconda macchina si collegava ogni tre minuti e cancellava file con la bandiera --delete. La sua copia locale era vuota, quindi --delete ha svuotato l’archivio condiviso. Ho ripristinato dal backup — e quattro minuti dopo è sparito di nuovo tutto, perché quell’agente è tornato e ha cancellato ancora.
È cattiveria? No. È esattamente quella limitazione: ha ricevuto l’istruzione «sincronizza», e nei suoi schemi «sincronizzare» significa «rsync –delete». Il mio «ma in sicurezza» ha perso contro lo schema radicato. Non ha ascoltato. Non ha capito.
Cosa farne
Il punto che mi è costato parecchio tempo raggiungere: non puoi dire una cosa una volta e aspettarti che l’abbia afferrata. Devi dare per scontato che farà la stupidaggine esattamente nel modo su cui non hai avvisato — perché non ha un modello del tuo mondo, ha la statistica. Supervisione, barriere, verifica — non sono extra, sono metà del lavoro.
Questo non è lamentarsi. Quando lo capisci, lavorare con un LLM finalmente diventa prevedibile. Smetti di stupirti che «gliel’avevo già detto», e cominci a progettare perché la stupidità non abbia da dove entrare.
Perché un assistente brillante e limitato resta il miglior assistente che abbiamo mai avuto. Solo che va sorvegliato come nessun altro.
