aim-to-pace.ai

Volevo costruire la Ferrari dei prompt. È venuta fuori una VW.

Fare prompt è semplice. Ma fare prompt in modo semplice semplicemente non basta. Ed è così facile da migliorare.

Originale su Substack ↗ Leggi qui; metti like, commenta e iscriviti lì.

Sono partito di corsa con una visione matura, il know-how e la passione per i temi dell’IA a bordo. Con il sano impulso di voler capire le cose e risolvere i problemi. E con l’impulso un po’ meno sano di voler perfezionare tutto, mi ci sono perso senza speranza.

La mia visione: un prompt che genera prompt.

Non prompt qualunque, ma master-prompt di qualità. Prompt che si usano ancora e ancora o su cui si può ricostruire da capo. Prompt che meritano di entrare in un catalogo. Prompt facili da usare, che fanno porre all’IA le domande giuste e che sono veri aiutanti quotidiani o risolutori di problemi specializzati. Che si possono montare come i Lego per farne qualcosa di ancora più grande.

Volevo tutto questo. Non subito, certo, nell’arco di un’evoluzione di diversi mesi. Ma volevo tutto in un unico prompt.

Ma «Nach fest kommt ab, und nach ab kommt Arbeit.» vale anche nell’IT.

Gemini ha gettato la spugna e da quell’impresa ho, messo per iscritto, il patto del mignolo con Claude in tutti i nostri progetti: controllare con occhio deliberatamente critico ogni Verschlimmbesserung.

Ma andiamo con ordine. Un buon prompt era, è e resta importante se vuoi strappare a un LLM i risultati davvero buoni. È anche logico: il prompt è l’istruzione data alla macchina. Una volta bisognava programmare sul serio e parlare in veri linguaggi informatici complicati. Con l’arrivo dell’IA istruzioni e dati si sono mescolati e, impacchettati nel linguaggio quotidiano più normale, sono diventati accessibili a chiunque.

Un biascicato «Togli ‘sti errori dal testo e mettilo in spagnolo» è così diventato un comando di programmazione funzionante.

Ed è proprio in questa semplicità che si nasconde un’arma a doppio taglio. Perché ogni prompt funziona e restituisce risultati. Non esiste un prompt davvero sbagliato né prompt palesemente pessimi. Eppure prompt scadenti esistono, così come esistono metodi per farne di migliori. Se vuoi risultati sorprendentemente buoni, un po’ di ottimizzazione è inevitabile. In sostanza: descrivere più precisamente ciò che vuoi.

Per restare al mini-esempio di prima: Quali errori? Solo quelli grammaticali o anche quelli stilistici? Vuoi solo il testo in spagnolo, o anche la versione tedesca corretta? E vuoi sapere dov’erano gli errori, ovvero che cosa è stato cambiato?

Certo, se tutto questo non ti serve o non lo vuoi sapere, non c’è bisogno di dirlo. Ma di solito un’aspettativa implicita ce l’hai, e sistemicamente stona di più quando è una macchina a deluderla. Con l’IA devi rendere esplicita la tua aspettativa — e per giunta senza dover nemmeno badare ai sentimenti umani.

E il risultato dell’IA migliora ancora se le fornisci il contesto e il quadro completo, invece delle singole istruzioni «via gli errori» e «traduci in spagnolo».

Arricchiamo l’esempio con qualcosa di concreto: Mettiamo che durante l’ultimo viaggio in Spagna tu abbia avuto davvero sfortuna. L’hotel ha addebitato in un secondo momento, e per errore, la tua carta di credito. Hai raccolto tutte le informazioni e vuoi chiarire la cosa direttamente con l’hotel. Con queste informazioni e questo input l’IA può aiutarti molto più di quanto forse immagini. Elaborare con te il tono, l’approccio migliore dal punto di vista psicologico e legale. Accompagnarti e consigliarti concretamente lungo l’intero processo.

Il passo più importante, quindi, è puro mindset dentro di te. Non micro-istruzioni pignole, ma nemmeno solo mezze frasi generiche e incompiute. Se nutri l’IA nel modo giusto, può risponderti meglio di quanto pensi.

Le servono proprio quelle informazioni che a noi spesso sembrano ovvie e scontate, o che a te sembrano irrilevanti perché in fondo vuoi solo far tradurre la mail, senza aspettarti o pretendere di più. Ma chi vuole più risultato deve anche dare più informazioni. E queste informazioni — ed ecco che il cerchio si chiude — si tirano fuori meglio con un buon prompt che buttando giù due righe.

Ma torniamo alla mia piccola crociata in cerca del sacro prompt.

Poiché questo nuovo modo di interagire con una macchina è insolito, e la stragrande maggioranza non ha ancora imparato a gestirlo bene, esistono molti strumenti d’aiuto. E io ne ho provati parecchi, perché volevo risultati particolarmente buoni dall’IA, sapendo o intuendo di che cosa è capace.

Tutti quei generatori di prompt li trovo piuttosto scadenti e macchinosi. Ti tocca compilare pseudo-moduli che, più o meno ragionati, sfornano sì un prompt dall’aspetto grazioso, ma che non calza mai davvero e che devo sempre ritoccare.

Tutti quei guru-master-prompt o magic-prompt, rifiniti fino all’ultimo e iper-ottimizzati per fare benissimo esattamente una cosa, di solito quella cosa la fanno davvero bene. Ma sono costruiti tutti in modo diverso, sparpagliati sui canali e sui siti più disparati, e pretendono una disciplina quasi da contabile se non vuoi passare la vita a cercarli.

Resta dunque il buon vecchio lavoro a mano. Pattern di prompt e prontuari di best practice. Ce ne sono a bizzeffe: quindi documentarsi, ragionarci su e metterli in pratica. Ma alla lunga anche questa è una gran fesseria. Hai un’IA che capisce davvero la lingua parlata, e poi ti tocca ficcarti in testa la piramide di Freytag come un bambino a scuola e recitare a memoria cinque atti nell’ordine giusto. Lo schema, da solo, non fa un buon dramma. La struttura è buona e importante, ma uccide anche un po’ il divertimento e l’anima. Lamentarsi però non serve. La struttura, è dimostrato, aiuta. Con prompt chiari e ben pensati i risultati sono nettamente migliori. Più riproducibili. Più riutilizzabili. Più estendibili. Più condivisibili.

Con un po’ di cherry-picking ho estratto da tutti quei pattern gli elementi che avevano praticamente tutti in comune: descrizione del ruolo, informazioni di contesto, condizioni speciali e vincoli, descrizione del compito e formato di output desiderato. Poi ho dato loro nomi internazionali e li ho impacchettati in un formato-acronimo accattivante:

Assign-Inform-Modify-Task-Output (in breve AIM-TO)

Con questo copro l’80% dei miei casi d’uso. E quando serve qualcosa in più, posso integrare all’occorrenza con qualche altro mattoncino come Priority, Ask back, Chain of thought o Example (in breve PACE).

Avevo il mio pattern di prompt. Bello. La maggior parte del valore aggiunto la ottieni comunque già solo con l’atto stesso di strutturare. Non è un capolavoro, ma è artigianato solido. L’acronimo di livello mondiale AIM-TO-PACE, che ho fatto diventare il mio marchio di fabbrica, cronologicamente è arrivato in realtà solo molto più tardi.

Il problema: fare prompt seguendo un pattern — uno qualsiasi — funziona bene, ma è coooosì noiooooosooo. E stupido. Devi dare una forma ai tuoi pensieri. Con pensieri lunghi e intricati è persino davvero laborioso. Ed è lento. Prima di aver finito, di solito ho già nuove idee che in questo setup anti-brain-dump non riesco a trasmettere a dovere.

Se solo avessimo qualcosa che ci togliesse i compiti noiosi e stupidi. Uno sguattero dei calcoli. Meglio ancora, uno che capisca pure la mia insalata di pensieri iniziale.

Ovvio, lo faccio fare alla mia IA di fiducia. Le prime 5-6 iterazioni sono volate, le prime tre versioni complete erano tutte utilizzabili e ognuna un po’ migliore della precedente.

Il Meta-Prompt: il prompt che genera prompt era creato. Il mio meta-prompt.

E dalla versione numero 3 non ho mai più compresso un lungo ragionamento in un pattern di prompt, né scritto o letto per intero un prompt lungo. Finiti i tempi in cui, solo per compiacere un’IA, le promptavo adulandola e assecondandola in tutto. Questo lo lascio fare.

Ma io volevo di più. Naturalmente il meta-prompt stesso doveva — per pura hybris — obbedire al pattern AIM-TO. E doveva ottimizzare il formato di output nel prompt che generava. Un bel ragionamento a due sponde. Dalla richiesta il prompt generato dovrebbe riconoscere in automatico se l’utente vuole la modalità dialogo oppure direttamente un risultato. Chiedere i parametri più importanti, ma fornire sempre anche un output pronto da copiare, basato su ipotesi fondate e rispecchiate. E doveva avere ancora molte altre funzioni. Di idee ne ho tantissime. Ma un prompt non è un programma per computer che si possa — o si debba — estendere a piacimento.

Il meta-prompt diventava più potente e più grande, ma anche più fragile e non più estendibile in modo sensato. Ogni ottimizzazione ne rompeva un’altra parte. Effetti collaterali ovunque. Gemini, dopo una sessione di miglioramenti di due ore girata a vuoto, ha concluso che così non si andava da nessuna parte. E allora ho chiesto a Claude. Lui il meta-prompt non lo conosceva ancora e poteva ottimizzare a briglia sciolta, senza pregiudizi. E l’ha fatto. Ma qui sono bastate poche iterazioni perché anche lui concludesse che era un vicolo cieco.

Certo che fa male, quando ci hai messo tempo ed energia e poi semplicemente non si va avanti. Ci si sente uno spreco. Ma ovviamente non lo è. In quei mesi ho imparato tantissimo. Ho anche capito perché fin dall’inizio fosse una lotta contro i mulini a vento. Non puoi «programmare fino in fondo» dentro un lungo prompt con la mentalità di una volta. Lì ci sono problemi tecnicamente insormontabili.

Ma il principio è e resta buono: un prompt che genera prompt di qualità. Sempre e ovunque. Solo testo. Nessuno strumento. Nessuna miriade di fonti da salvare o ricordare. Qualcosa che funziona su ogni LLM diffuso. Nessun vendor lock-in che mi incateni a un LLM o che funzioni solo con la migliore versione dell’IA.

Troppo bello per mollare e basta. Abbastanza buono per ricominciare da capo. Quindi ripartire radicalmente da 0, con obiettivi e anti-obiettivi stretti e semplici.

  • Il meta-prompt di per sé non deve essere AIM-TO — il passo più difficile per me, ma anche il più efficace
  • Deve generare AIM-TO:
    • Stabile
    • Robusto
    • Facile da usare, ma senza fronzoli

Ed era pronto in una sola sessione. Esattamente nella forma che ha oggi. È così che lo distribuisco. E funziona per me, per amici, conoscenti e colleghi. La barriera d’ingresso c’è e resta, ma è bassa. Lo scetticismo pure c’è. Ma chi supera questo primo ostacolo, spesso ci resta agganciato. E il framework AIM-TO-PACE — cioè pattern e meta-prompt combinati — ha in effetti più vantaggi di quanti se ne vedano a prima vista. Il generatore di prompt da tasca. Col metodo standard al prompt strutturato. Sarà anche noioso, ma è meno fatica. E la cosa migliore in assoluto: Non devo farmi un nodo alla lingua virtuale. Dopo una piccola preparazione posso promptare a ruota libera senza compromettere la qualità.

I pensieri sono di nuovo liberi.

Aspetta, ma io il prompt perfetto ce l’avevo in qualche cronologia di chat. O l’avevo salvato in locale? O mandato per mail? Ah no, l’ho visto su YouTube, quello è davvero buono. Lo ripesco in un attimo.

«Due ore doppo…» voce del narratore di SpongeBob

Quando cercarlo dura più che costruirlo… Per fortuna quei tempi sono passati. E da allora verschlimmbessern è la mia parola intraducibile preferita.