Creare un AppleScript da zero e senza sforzo con un LLM locale (Qwen2.5-coder)
Questo articolo nasce in modo abbastanza estemporaneo e discuterà dei vari argomenti in modo non dettagliato ma voglio parlartene subito.
0. Le premesse ed alcune anticipazioni …
Recentemente ho testato la funzione di modulo di n8n che permette di creare una pagina web con campi compilabili (un modulo web, appunto).
Questa funzione è molto utile perché i dati compilati nel modulo, poi, possono essere utilizzati nel flusso di lavoro di n8n a piacimento permettendo infinite soluzioni.
Nel mio approccio autarchico ho fatto in modo di salvare tutto direttamente su mio Mac in un file CSV.
Dovevo infatti recuperare informazioni personali di vari soggetti e non volevo creare un database online, anche se n8n permette di interfacciarsi senza troppi problemi con sistemi come Goggle Sheet o AirTable piuttosto che Notion.
Se la soluzione non si appoggia a strumenti online, tuttavia per ogni volta che il modulo viene compilato viene creato un novo file CSV sul mio Mac.
Qui di seguito ti mostro il semplice flusso di lavoro (workflow nel gergo di n8n) che ho creato.
Esempio di workflow di n8n per creare un modulo web e salvare i contenuti sul mio Mac come file CSV
In futuri articoli (ne sto scrivendo alcuni) mi riprometto di mostrarti di più su n8n e su come lo sto utilizzando, per ora ti lascio questo piccolo assaggio.
Come dicevo, il sistema funziona ma mi trovo ad avere N file CVS con i dati di ogni singola persona che devo riunire in una unica lista … come fare per non farlo a mano?
Ho pensato ad un AppleScript ma, prima di mettermi a cercare su internet nella speranza che qualcuno abbia avuto il mio medesimo problema e lo abbia risolto, ho pensato di rivolgermi all’IA.
1. Qwen2.5-coder:32B
Recentemente i ricercatori di Alibaba hanno reso disponibile Qwen2.5-coder.
Vari commentatori hanno parlato della bontà di questo modello dedicato alla creazione di codice. Io lo avevo già scaricato qualche giorno addietro nell’ottica di testarlo alla prima occasione.
Grazie ai 32GB di RAM condivisa del mio MacStudio M1 ho potuto scaricare al versione più “grossa” del modello, quella 32B ovvero a 32 miliardi di parametri, quantizzata a 4bit (Q4).
2. Chiedi e ti sarà dato
Ho quindi aperto la mia istanza di OpenWeb UI, scelto il modello e scritto il prompt.
Non mi sono sforzato particolarmente nella creazione del prompt ed ho scritto:
puoi scrivermi un Applescript che prende 2 file csv e li unisce? I file hanno le stesse colonne
Obbediente, subito l’LLM mi ha dato un primo AppleScript. La cosa positiva è che, una volta copiato nello ScriptEditor non mi ha dato errori nel primo controllo formale.
La mia prima interazione
Tuttavia la prima interazione richiedeva che io inserissi il percorse dei 2 file da unire, così, preso dall’entusiasmo ho aggiunto una seconda richiesta:
i file vengono selezionati nel Finder e potrebbero essere più di due, riesci a modificare lo script in tal senso?
Diligentemente Qwen2.5-coder ha modificato il codice in un batter d’occhio.
2.1 Iniziano i problemi
Faccio partire lo script (premendo il tasto run dell’editor) e mi si apre la finestra del Finder da cui selezionare i file CSV, grande! Li seleziono … e mi compare un errore … 😓
Non demordo e faccio la cosa più semplice … copio il testo dell’errore e lo do in pasto all’LLM.
il tuo script mi da questo errore: error "Il file Macintosh
HD:Users:filippostrozzi:Documents:scansioni:Test Applescript:
file2.csv non è stato trovato." number -43 from
"Macintosh HD:Users:filippostrozzi:Documents:scansioni:Test Applescript: file2.csv"
Vado avanti così per un po', sto quasi per demordere ma vedo che le cose migliorano. L’LLM infatti inizia a creare uno script relativamente complesso che va anche a controllare gli eventuali errori (cosa per cui io non avrei mai avuto le capacità di fare).
Poi, dopo l’ultimo errore, quello mostrato qui sotto, eureka!
Lo script iniziale non funziona …
2.2 Spiegazioni chiare
Altra cosa che mi ha stupito positivamente è che l’LLM locale non solo ha creato lo script ma mi ha dato spiegazioni puntali e dettagliate di come utilizzarlo, vedi immagine sottostante, punti 1 e 2.
Spiegazione dello script e procedura di esecuzione
3. Il risultato finale
Ed eccoci arrivati al lieto fine.
Esecuzione dello script con successo
Come mostrato nell’immagine soprastante (punto 1) i due file CSV sono stati riuniti correttamente in un nuovo e differente file, inoltre lo script mi ha pure detto, grazie ad una comoda interfaccia in italiano, che l’operazione è riuscita (punto 2).
Se sei curioso a questo link ti lascio la cattura schermo di tutte le interazioni che ho avuto con l’LLM per risolvere i vari problemi. Alla fine credo di averci messo circa una ventina di minuti tra interazione con l’LLM e test degli script.
4. Alcune considerazioni
Le automazioni che ho messo in pista in questo articolo non sono professionali. Ho dovuto/voluto trovare una soluzione tecnologica per un problema che avevo come rappresentante (neo-eletto 🎉😓) della classe di mio figlio.
Pur essendomi divertito (come al solito) a testare soluzioni, non avevo intenzione di perderci troppo tempo e, effettivamente, l’utilizzo dell’LLM (ma anche di n8n) mi ha semplificato di molto i compiti collaterali che, potenzialmente, potevano sottrarre tempo ad altre attività.
Avrei potuto creare un AppleScript io stesso? Probabilmente sì, non credo però nei tempi e con le modalità in cui lo ha fatto l’LLM.
Da questa piccola avventura quindi posso trarre la conclusione che, a volte, è utile e comodo delegare alcuni compiti specialisti agli LLM (soprattutto se parliamo di compiti informatici). Certo, avrei potuto imparare di più approfondendo il problema e, in un futuro, mi riprometto di farlo … ma per ora ho risolto velocemente un problema senza troppi sforzi.
La morale di questo articolo, tuttavia, è che anche tu puoi approfittare di questi strumenti usando soluzioni online o, come ho fatto io, locali.
In conclusione
Ammetto infatti che per ottenere questo risultato avrei potuto usare senza problemi LLM online come ChatGPT o Claude, questo script non conteneva dati sensibile di nessun tipo. Tuttavia avere la possibilità anche senza internet di poter fare una cosa simile (non lo si ricorda mai ma gli LLM online funzionano solo se funziona internet) e senza alcun tipo di spesa è stata una bella soddisfazione.
Oltre ha ciò ho anche imparato che certe volte la via veloce può essere utile, soprattutto se il compito non è ad alta priorità.
Come sempre, se ti è piaciuto quel che hai letto o visto e non l’hai già fatto, ti suggerisco di iscriverti alla mia newsletter. Ti avvertirò dei nuovi articoli che pubblico (oltre ai podcast e video su YouTube) e, mensilmente, ti segnalerò articoli che ho raccolto nel corso del mese ed ho ritenuto interessanti.