Benvenuto benvenuta, io sono Filippo Strozzi e stai ascoltando Avocati Mac Compendium Compendium è un podcast in cui parlo delle mie esperienze quotidiane con la tecnologia, in particolare con quella Apple.
Compendium fa parte del network runtime radio la Radio Geek questa è la puntata 82 nella quale ti parlerò di una nuova app server MCP che ho sviluppato in questi giorni.
Ma prima sigla, alcune comunicazioni di servizio rapide.
Innanzitutto, probabilmente i contenuti di questa scaletta saranno divisi in due, nel senso che effettivamente è abbastanza densa di cose, è un po' verticale, lo so, ma credo che possa essere utile per molti motivi, nel senso che li vedremo dopo.
Ma ho imparato veramente.
S imparando perché l'applicazione non è finita, sto imparando veramente tante cose.
Quindi mi sembra giusto parlare oggi in generale e la prossima puntata.
Più nel dettaglio le cose tecniche di cosiddette vibecoding o sviluppo di app con l'ausilio di intelligenza artificiale, segnalo anche che il convegno del 29, ho avuto dei problemi a registrare il mio intervento.
Appunto, dovrebbe essere stato registrato tutto dalla sala, ma in mano non ho ancora la copia della registrazione.
Ho chiesto se me la davano attualmente, nessuno ha dato segno di vita.
Quindi se la registrazione mi verrà consegnata, cercherò di ovviamente caricarla su YouTube e la segnalerò ovviamente nella prossima newsletter barra articolo.
Se tutto va secondo i programmi, non è detto perché il weekend si sta riempiendo di impegni e quindi non sono sicurissimo di riuscirla a fare.
Però, insomma, diciamo che c'è un 50% di possibilità che la faccia.
Ho in programma di fare una office hour che da un po' che non faccio, ma in questo periodo dovrei avere un pelo più di tempo, lo dico piano e quindi dovrei riuscire a mettere in fine le cose.
Perché durante il corso del 29 maggio ho dovuto, tra virgolette, tagliare parte dell'intervento.
Quindi, a prescindere dal fatto che ci sia o meno la coppia di quell'intervento volevo sostanzialmente concludere l'intervento e quindi dare alcune informazioni in più.
Sostanzialmente sarà incentrato se è possibile se lo farò, diciamo, sul prompt per migliorare i prompt che ho creato.
Diciamo proprio per quell'evento che ho distribuito a tutti i partecipanti, e che, però, è anche secondo me molto didattico su come scrivere un buon prompt e come migliorare un buon prompt quindi come far migliorare l'intelligenza artificiale un prompt che abbiamo dato.
Ed effettivamente piccolo spoiler: ho fatto una serie di test e i risultati che ho ottenuto e con il mio miglioratore di prompt, sono visibili e sono tangibili.
Adesso appunto quello che mi manca, mettiamolo in questi termini, è fare una serie ulteriori di test che non ho fatto, diciamo per il convegno e che invece mi sono venuto in mente appunto per l'office hour, mettiamola così, e per avere dei dati certi, perché nella sostanza buona parte dei test li faccio fare all'intelligenza artificiale stessa.
Ma ho trovato un modo per o comunque un modo che mi ritengo, diciamo essere più centrato, diciamo per avere dei risultati psealistici mettiamola in questi termini a occhio, mettiamola così effettivamente il miglioratore di prompt fa il suo mestiere, nel senso che la struttuzione della risposta data a livello giuridico data dal Large Language Model è migliorata con il miglioratori di promptis, insomma, questa è una tangente che non volevo prendere.
La data è il 18 di giugno.
Eventualmente se proprio va tutto male no, forse non il giovedì dopo perché ho un impegno.
Quindi non lo so.
Se tutto va bene è il 18 di giugno.
Poi, ovviamente, andando vedendo questa puntata verrà pubblicato il 15.
Quindi teoricamente, se l'ascolti immediatamente dopo sai dell'esistenza.
Comunque se l'office hour non ha problemi, diciamo, la troverai su YouTube normalmente.
Quindi potrei farlo potrei vedere la barra ascoltarla anche successivamente.
Bene, quindi entriamo nel cuore della puntata e ovviamente, come al mio solito, parto dalle premesse.
Alcune premesse necessarie e da avere presente perché poi non ne parlerò più.
Questo è il mio pensiero generale.
Diciamo e quindi voglio che appunto pur parlando di tutt'altro in questo episodio, voglio anche spiegare perché sono andato in quella direzione e fare anche due ragionamenti.
Sicuramente la soluzione per lavorare soprattutto nel mondo legale con l'intelligenza artificiale, secondo me, non è la pseudo anonimizzazione di cui parlerò in questa puntata, ma l'uso di Large Language Model locali.
Ne ho già parlato, credo nella puntata scorsa, ma il progetto DS4 draft Star di Salvatore San Filippo è veramente molto interessante, richiede però solo un Mac con 128 GB di RAM.
Attualmente appena passato il WDC 2026 e di nuovi MAC Studio non se ne ha traccia, non si ha tra altre cose traccia neanche dei Mac Mini, e non è possibile oggi comprare un Mac Studio con più di 96 GB di RAM, quindi ci sono tutta una serie di vincoli attuali, in attesa, ovviamente che queste soluzioni siano di appannaggio per tutti e di poterle veramente testare perché poi anche qui io ritengo che il futuro sia questo e sicuramente questi strumenti ovviamente tolgono via tutta una serie di problematiche che oggi si affrontano utilizzando invece i modelli online, ma da tenere presente, l'applicazione di cui ti parlerò oggi è un'applicazione non matura, non ancora matura, probabilmente non lo sarà mai dal mio punto di vista, anche se devo dirti la verità, funziona, quindi ovviamente volendo, la si può scaricare e la si può testare, non è stata testata tantissimo proprio perché te ne parlo oggi, chiamiamo così in anteprima, ma essendo un'applicazione molto complessa, perché, nella sostanza poi è un'applicazione decisamente complessa, attualmente stamattina, prima di registrare, ho testato Fable 5, il nuovo super mega galattico Large Language Model di Claude che si può utilizzare fino al 22 di giugno.
Quindi ho detto: ci proviamo.
Proviamo a vedere se trova delle cose eccezionali o problemi eccezionali all'interno del appository, non sembra averli trovati, quindi è già questo un buon auspicio, mettiamolo in questi termini, però, mi sono un attimo rallentato anche per i ragionamenti di cui ti racconterò, anche se credo che lo sviluppo serio di questa applicazione andrà avanti almeno per tutto il mese di giugno, perché piccolo spoiler: ho fatto l'abbonamento pro a chat GPT per poter utilizzare con i tagli grossi, cioè con una spesa di soli 13 euro al mese, ma ovviamente a fine mese stacco la corrente come si suol dire per utilizzare Codex, che ero tra altre cose molto incuriosito dall'utilizzarlo, eventualmente se c'è tempo parlerò delle particolarità di Codex.
Una delle tante è che per esempio, l'app diciamo per MECOS è nativa, mentre per esempio invece l'app desktop di Clude invece è una app Electron.
Comunque, tornando alle premesse, ti sconsiglio di provarla con dati reali.
Io non l'ho ancora fatto, lo dichiaro, non so se lo farò mai tra l'altro, diciamo che, però, con dati fittizi quindi i dati dove sono tranquillo perché non sono dati veri e i cosiddetti dati sintetici, diciamo, sta facendo la sua porca figura e sta funzionando correttamente.
Altro discorso da tenere presente.
Questa puntata, diciamo, nasce più che altro per chiarirmi le idee in pubblico, nel senso che è un'applicazione complessa, è una cosa che probabilmente come spoiler, ma non avrei dovuto fare, mettiamola in questi termini.
Già anche solo, però creare la mappa mentale, ragionare sul funzionamento di questa applicazione e cercare di spiegarlo, diciamo con le mie parole.
È stato utile proprio per avere un'idea migliore sul suo funzionamento sui suoi limiti e comprendere bene questo progetto che è nato abbastanza di impulso, come ti dirò brevissimo.
Infine, ovviamente, se sei interessato a testarla a provarla, mi interessa proprio avere i primi feedback.
Ce li ho avuti in parte, diciamo, ma non di gente che secondo me l'ha testata veramente.
Ma diciamo, ho pubblicato, non mi ricordo mai più quando un post su LinkedIn e ho ricevuto vari feedback, diciamo, però in generale il feedback costruttivi sono più che bene accetti.
E anzi, mi auguro, diciamo, questa puntata nasce proprio anche per ricevere da parte tua un feedback.
Proprio perché è un argomento che, secondo me, va approfondito soprattutto nel mondo legale, ma in generale, questo sistema poi può diventare utile prevalentemente per tutti coloro che hanno dei dati che non vogliono fare, che vogliono in parte anonimizzare, mettiamola così il termine corretto e pseudo animizzare, prima di dare l'impasto ai modelli online.
Quindi vediamo innanzitutto com'è nata l'idea e che cacchio fa questa applicazione.
Innanzitutto, l'applicazione si chiama Anoni MCP, nella sostanza anonimizzazione MCP e l'idea l'ho rubata, tra l'altro perché l'idea l'ho rubata da Devon Think 4.3 di Devon Thing ne ho parlato secondo me milioni di puntate fa e comunque ne ho parlato su Avocati Mac.
È un'applicazione, un database sostanzialmente che ti permette di raggruppare e organizzare i dati, diciamo quindi documenti di vario genere PDF, email, file markdown e quant'altro, e di ricercare questi documenti.
Fa molto di più, mettiamola così.
È un'applicazione solo Apple, cioè nel senso funziona sia per Mac che per iOS e Pados.
Ho letto recentemente un articolo di David Spark dove appunto parlava di Devon Think 3 e del fatto che loro avevano creato un MCP, diciamo per permettere, ovviamente a Claude, piuttosto che Codecis piuttosto che altri sistemi, di accedere ai dati, ovviamente database di Devon Thing, ma con un'anonimizzazione.
Allora, anche qui non ho neanche testato, devo dire la verità: Devon Think nella versione 4.3.
Io sono ancora firmata 3 e non credo di essere interessata ad acquistare la versione 4, mettiamola così, anche perché Devon Think ha un suo costo, e insomma, sono tutta una serie di problematiche che fanno sì che ad oggi diciamo, non mi interessi più utilizzarla.
Sicuramente è molto interessante questo approccio, l'altro dubbio che ovviamente mi ponevo, era il tipo di anonimizzazione, come hanno approcciato l'anonimizzazione e soprattutto tendenzialmente Devon Thing nasce per il mondo anglosassone e quindi probabilmente anche qui c'erano dei vincoli sul discorso di come funzionava correttamente se funzionava correttamente l'animizzazione nel mondo italiano.
Un piccolo passo indietro per chi non lo sapesse, ho dedicato una puntata del podcast, ma è meglio fare un recap veloce: che cos'è un MCP?
La sigla MCP sta per Model Context Protocol.
Sostanzialmente è un sistema per far dialogare un database con un large language model.
In pratica il large language model riesce a interrogare il database, avendo dei chiamiamoli così, comandi che sono descritti verbalmente al large language model.
Quindi il large language model può fare delle query, si chiamano delle domande al database, e ricevere, a fronte di queste domande, ovviamente una serie di dati, e questi dati, ovviamente in formato testuale, prevalentemente, possono essere utilizzati poi dal large language model per fornire le famose risposte.
Il mio sistema sostanzialmente è una versione più bassa, mettiamola così, di Devont Thing, cioè la mia idea è stata invece di interfacciare un database, perché non posso interfacciare cartelle e documenti, quindi dare accesso alle virgolette, dare accesso, perché l'idea è proprio quella di non dare accesso alle cartelle e documenti ai large language model o anche assistenti a righe di comando, mettiamolo in questi termini.
Quindi, per esempio, se io lancio cloud code in una cartella, i file, per esempio, della pratica sono da un'altra parte, e teoricamente, grazie al sandbox, Cloud Code non può uscire dalla cartella in cui l'ho lanciato, ma ha accesso ai documenti, chiamiamo così riservati, che si trovano appunto nelle cartelle delle mie pratiche, mettiamola così.
Quindi, l'MCP, questa MCP permette appunto di interfacciare cartelle e documenti con i large language model.
I documenti, però, prima di essere passati al modello.
Quindi, l'MCP, diciamo, fa da traghettatore, vengono anonimizzati correttamente sarebbe pseudo anonimizzati, dopo parleremo anche del perché, e solo i dati pertenenti, ovviamente alla domanda, dell'arge language model, vengono passati all'arge language model.
Quindi l'ulteriore vantaggio, diciamo, è che in questa maniera non si fa in senso tecnico una RAG all'interno dell'MCP, usa solo un database sostanzialmente, ma in questa maniera, in pratica, si riducono anche i token che vengono passati, cioè invece di passare l'intero documento, mettiamola in questi termini.
Viene passato un pezzo di documento che dovrebbe come al solito avere maggior attinenza alla domanda posta alla language model, diciamo che mi sono imbarcato in tutta questa avventura, perché di fatto almeno dal mio punto di vista iniziale, perché poi come ti racconterò, la vicenda non è esattamente venuta come la pensavo io, avevo già un sistema di anonimizzazione pronto, ovvero anonimator.
Animator è la prima applicazione che ho detto creato o meglio ho fatto creare dall'intelligenza artificiale, diciamo su miei direttive, diciamo per anonimizzare un documento.
O meglio, poi anche qui è sempre pseudo anonimizzare, nel senso che ovviamente l'anonimizzazione completa vorrebbe dire togliere sostanzialmente tutti i dati interessanti, mettiamola così del documento, invece la pseudo permette di togliere tutti i dati, nome e cognomi, codici fiscali, targhe e così via, ma ovviamente sostituirli con pseudonimi.
Il mio sistema abitualmente è quello di mettere le lettere iniziali nome e cognome o mettere una cosa a codice fiscale 1 e così via.
Per dare comunque degli elementi, perché a large language model ovviamente servono questi elementi per poter poi avere un quadro completo nella vicenda.
Io avevo già questo sistema che semplicemente faceva documento per documento o più documenti uno via l'altro, la generazione di nuovi documenti pseudonimizzati.
Questa situazione è comoda, ma ovviamente vuol dire che io ogni volta devo caricare nella chat o dare accesso a una cartella di documenti anonimizzati, il large language model, lavorare su questi documenti.
Documenti che possono essere in formati differenti e spesso volentieri non sono nel formato migliore per l'intelligenza artificiale, perché nella sostanza per lavorare bene, l'intelligenza artificiale ha bisogno solo di testo, invece, per esempio, un PDF non è solo testo e spesso volentieri i dati contenuti all'interno del PDF o peggio ancora i dati contenuti all'interno di un DOCX hanno tutta una serie di orpelli di testo in più diciamo che nulla c'entra mettiamoli in questi termini, col contenuto formale del documento, con la sostanza del documento.
Per cui l'altro vantaggio dell'MCP è che il sistema, appunto, prende un documento X ad oggi apre qui una parentesi, non è implementato, ma diciamo, l'ho tenuto per ultimo perché già un animator comunque aveva alcune funzioni, e comunque la conversione, diciamo da PDF piuttosto che da DocX a testo semplice, non è così complicata, almeno da quello che penso io.
Ovviamente potrei scoprire all'improvviso che le cose non sono così.
Quindi, attualmente funziona, il sistema funziona solo con testo semplice, quindi Mark now e TXT per intenderci, e se lo vuoi provare, devi farlo in questa maniera attualmente, ma appunto adesso che nella sostanza dovrei avere perfezionato il sistema e che il sistema è abbastanza stabile, c'è già un'interfaccia grafica funzionante.
Dopo ne parleremo e così via.
L'implementazione della conversione, diciamo, di DocX e PDF o di T e altri formati di testo in OCR.
Adesso anche lì sto decidendo se ne vale la pena.
Mettiamolo in questi termini, non dovrebbe essere una un'attività complicata.
Come ti dicevo, nel link delle note all'episodio troverai il link per accedere al repository di Anoni MCP.
Come ti dicevo, sostanzialmente ho ricevuto anche delle prime critiche su LinkedIn e critiche che mi hanno fatto riflettere di cui volevo discutere subito.
Poi dopo ti racconto un po' in dettaglio cosa sono riuscito a fare in che tempi e come funziona più o meno l'applicazione.
Diciamo mi hanno fatto riflettere per un motivo.
A prescindere a volte diciamo dei modi e dei termini, anche se io sono stato oggettivamente molto lineare nel descrivere appunto che cos'era questo progetto, il fatto che è un progetto di test e che non ho la presunzione di essere un programmatore.
Anche perché conosco programmatori veri e quindi è il solito discorso.
Se mi infastidisce che il cliente si ritenga avvocato o che grazie all'intelligenza artificiale si ritenga avvocato, stesso discorso vale per me per me è un progetto di crescita, un progetto di test, è un progetto per vedere cosa è possibile fare e cosa riesco a fare con questi strumenti è un progetto per imparare, però appunto a prescindere appunto dalle critiche.
Un po' sterile, invece alcune critiche hanno centrato secondo me il segno, ed effettivamente mi sono reso conto di aver violato una delle mie regole che mi ero auto-imposto, cioè che nulla di non sviluppare nulla che potesse andare online o essere esposto online, perché in senso tecnico questo MCP nasce come un'applicazione quindi un'applicazione che risiede sul computer, i file non escono mai in senso tecnico dal computer, cioè nel senso all'MCP viene dato accesso a delle cartelle che decide l'utente, ovviamente teoricamente sono cartelle con dentro i documenti della causa, nella mia ottica mettiamola così.
Ma appunto, siccome l'MCP fa da filtro, quindi nulla, tutto passa solo esclusivamente attraverso l'MCP, o meno questi documenti e queste cartelle passano i documenti contenuti nella cartella passano esclusivamente attraverso il filtro, chiamiamolo così dell'MCP, ovviamente, il Las Language Model di fatto non ha accesso a queste cartelle, e sì, è vero, nella sostanza, una volta che il dato, chiamiamo così pseudonimizzato, esce dall'MCP va online, e quindi è qui che casca l'asino, mettiamola così, però, di fatto, infatti, è effettivamente mi sono reso conto, diciamo che il sistema è un po' più sfumato.
Anonimator, per esempio, è un'applicazione che risiede direttamente sul computer e di fatto.
È ovvio che dandoti, creando sostanzialmente un documento anonimizzato, tu puoi leggere il documento e a quel punto lì decidere se caricarlo o no online, anonimo MCP è un pelo meno trasparente, anche se poi di fatto, tutta la procedura, diciamo di revisione del dare accesso a questo dato a questo dato parziale, large language model, viene fatto e quindi, comunque, diciamo, i problemi poi di non avere anonimizzato una parola esistono sia con Anonimator che ovviamente con Anoni MCP.
In ambito legale, secondo me il cosiddetto VI coding, cioè creare applicazioni chiamiamo così verticali, cioè per le proprie esigenze specifiche diciamo a uso interno, secondo me ha senso dovrebbe essere una cosa che più colleghi devono fare.
Perché comunque appunto questi se tutto va, continua ad andare in questa direzione, diciamo, questi sistemi ti permettono senza un'esperienza pratica, diciamo concreta di programmazione, ti permettono di risolvere piccoli problemi pratici invece e tutto quello che io ho sempre cercato di anonimizzare con i vari programmi come Ezzel, Kibbo Maestro e così via e non ho mai non sono mai andato vicino.
Diciamo agli script o comunque tutta la parte di vera programmazione, questi large language modi ormai la gestiscono tranquillamente, ti permettono ovviamente di fare veramente tantissime cose.
È ovvio che invece se questi sistemi vengono utilizzati online ci sono tutta una serie di problematiche enormi, legate ovviamente a sicurezza a possibilità di sfiltrazione dati e così via.
Ed è qui che poi nasce il problema.
Cioè, secondo me volta che è un'applicazione o un piccolo programma che fai girare in locale, bene o male testi, che non fa cose particolari e poi andare anche con l'aiuto dell'intelligenza artificiale a verificare che non faccia chiamate strane, diciamo, ma abitualmente non dovrebbe, se un minimo hai compreso come funziona il sistema, diciamo.
Ecco quando si creano applicazioni che potenzialmente possono parlare fuori dal computer, ecco qui i problemi aumentano e sicuramente ci vogliono dei professionisti.
Poi non detto neanche che i professionisti riescano a blindare l'applicazione, ma sicuramente fare tutto solo con l'intelligenza artificiale è potenzialmente rischioso o pericoloso.
Per cui il mio discorso è sempre stato: ho sempre sviluppato le applicazioni fino adesso che ho sviluppato sono appunto anonimator che funziona in locale e nulla esce tra virgolette dal computer, anche con cerca delle entità con il large language model sono large language model locale, quindi anche qui il problema non si pone.
Ho creato appunto un'applicazione per creare link ai documenti allegati a un atto e a numerare e organizzare i documenti, anche qui fa tutto sul computer quindi nessun tipo di problema.
Ho iniziato a predisporre, poi mi sono un po' fermato e forse ho fatto bene.
Un'applicazione per la gestione della notifica mezzo pecca: ci sono svariate cose che sto facendo che ho fatto che ho iniziato, poi ho interrotto e così via.
Anche la creazione dei siti, o come ti raccontava nel puntato scorsa, sto per passare a Hugo.
Sono passato sicuramente a Jugo con A due podcast che apro qui una parentesi, ma salvo imprevisti ripartirà a settembre quindi piccola news e sto per passare avvocati e Mac a Hugo, ma il vantaggio di questo passaggio è sì, sono siti online quindi sì, potenzialmente avrei violato la regola, ma essendo sististi statici, anche qui la mia regola non è violata, perché nella sostanza è non dico impossibile, ma comunque è difficile a creare un sito dove non c'è un database, dove non c'è niente, dove ci sono le pagine HTML sostanzialmente, perché questo UGU quindi genera semplicemente dei file statici e li genera programmaticamente, nel senso che io gli dico facendo le modifiche sul repository, queste modifiche poi vengono trasposte sostanzialmente nelle pagine HTML finali, con tutto, insomma, anche qui la mia regola principale non l'ho violata, con Anonymo MCP, in parte l'ho violata, e credo che sia che questa considerazione sia fondamentale da tenere presente per questo poi te ne parlo, anche, perché a volte, la possibilità di fare cose con questi strumenti che effettivamente sono veramente potenti e che ti aprono orizzonti di cui prima non avevi disponibilità, ti possono possono farti perdere l'orientamento corretto e bisogna sempre invece avere presente cosa fare e perché farlo.
Quindi anche qui lo ripeto, il mio consiglio personale è: sì, da avvocato, è utile, è comunque importante a ragionare su cosa un large language model può aiutarti anche nella gestione quotidiana, diciamo, ma solo di cose di organizzazione interna dell'ufficio e possibilmente sul proprio computer, anche qui appunto la puntata scorsa parlavo di tutto un sistema che comunque per l'organizzazione dell'email utilizzando l'intelligenza artificiale locale che diciamo veniva orchestrato, cioè veniva strutturato dal modello grande che ha capacità, ma che funzionava solo in locale quindi senza dare accesso ad esempio alla casella di posta elettronica in maniera diretta, ma aver preso questa decisione un po' di impulso, un po' di proviamoci, vediamo come va, effettivamente mi ha fatto capire che devo stare un po' più attento e non farmi prendere la mano in queste circostanze.
Mi sono fatto prendere la mano anche perché effettivamente la cosa che mi ha lasciato stupito, anche qui positivamente, da un certo punto di vista, è che io sono riuscito praticamente in due giorni a sviluppare il core di tutta l'applicazione.
Infatti, devo dire la verità, probabilmente sa poi l'argomento della prossima puntata, ma ormai ho imparato un po' di trucchetti per sviluppare velocemente e efficacemente con i large language model, e effettivamente, appunto, seguendo poi questi principi.
In particolare, ho sviluppato quello che si chiama il core dell'applicazione in maniera molto molto semplice e molto veloce, invece di creare l'interfaccia diciamo per l'anonimizzazione l'applicazione vera e propria Electron che adesso c'è tendo a precisare, ma che appunto per vedere se l'idea era fattibile, era realizzabile con l'intelligenza artificiale, sono andato sono stato molto spartano.
Ho detto: va bene, creami un'interfaccia, una TUI si chiama una terminal user interface, quindi un'interfaccia a terminale, per ovviamente fare i primissimi test di funzionamento, creami il core dell'MCP e a quel punto lì ho proprio deciso.
Facciamolo solo con i file di testo, perché alla fine è quello che dobbiamo arrivare a ottenere e quindi il passaggio, la conversione da PDF a testo semplice non era fondamentale per vedere se il sistema funzionava.
Mi bastava avere un file di testo sintetico, vedere se effettivamente riusciva a fare l'anonimizzazione e a questo punto l'MCP riusciva a parlare con l'arge language model e il large language model riusciva, non vedeva le entità mascherate sostanzialmente.
Ora sono in fase 2 quindi ho creato la Electron adesso c'è tutto un sistema.
Anche qui, per esempio, la parte che io non meditavo poi effettivamente col cerno di poi era evidente, ma tutta la parte di gestione invece della prima parte, la parte più complicata, cioè dell'anonimizzazione, richiede comunque una gestione dell'interfaccia molto complicata e molto complessa.
Ho dovuto lavorare veramente tanto per ottimizzare l'interfaccia, non so neanche se ci sono riuscito.
Comunque se ti interessa, anche qui cercherò di lasciarti.
Nelle note l'episodio il link.
È una side quest nella side quest, ma comunque sono riuscito a far generare una micro guida su come funziona un MCP direttamente dall'intelligenza artificiale facendo fare gli screenshot direttamente all'intelligenza artificiale con un MCP apposta siccome la Electron, c'è un MCP Electron, appunto che permette all'intelligenza artificiale di manipolare l'interfaccia Electron e quindi anche di fare gli screenshot dell'interfaccia, quindi, nella sostanza ho chiesto all'intelligenza artificiale, farmi una guida su come funziona e quali sono i passi per gestire sostanzialmente l'interfaccia flusso di lavoro, diciamo, all'interno dell'applicazione Electron e me l'ha fatta.
Non è venuto benissimo, lo dichiaro, però è intellegibile cosa fa l'applicazione, come funziona e così via.
E quindi anche qui, appunto, la fase successiva è stata quella di rendere fruibile questa applicazione che nella versione core diciamo funzionava perché funziona, quindi la TUI funzionava, ho fatto vari test prima di passare alla fase cosiddetta 2 proprio perché bene o male, pur non essendo uno sviluppatore, sto iniziando a prendere le buone abitudini, mettiamola in questi termini, di ragionare come uno sviluppatore e quindi di affrontare il problema ai minimi termini per trovare una soluzione efficace, ma con il minimo dispendio di energia per vedere se il problema si può risolvere, mettiamola così, poi solo dopo aggiungere, chiamiamola così i fronzoli, dedicarmi ad altri aspetti: che sì, sono importantissimi, perché questa applicazione in TUI, per esempio, credo che non l'avrebbe utilizzata nessuno, proprio perché appunto, io ho una certa familiarità e comunque appunto ho sviluppato la TUI proprio perché ho detto: no, beh, però, tutta riga di comando divento di gomma, mi diceva di copia un comando lunghissimo che ogni volta doveva essere lanciato per far funzionare in una certa maniera, per fare tutte le verifiche del caso.
Insomma, ho deciso che ero opportuno appunto anche per la mia sanità mentale, diciamo avere un minimo di interfaccia grafica, seppur non direttamente un'interfaccia grafica completa come quella dell'MCP.
Ma quindi come funziona questa applicazione?
Allora, l'applicazione te lo dico subito: non è così semplice come potrebbe sembrare, e anche qui mi ha fatto sorridere, mettiamola in questi termini, perché effettivamente devo dare accesso a dei documenti in una cartella, devo sostanzialmente togliere nome e cognome, codice fiscale, targhe, tutta una serie di dati, diciamo, personali e non, e convertirli in testo semplice e passarli all'arge Language Model teoricamente, raccontata così, è molto molto semplice da fare.
Nella concretezza, però, effettivamente, una volta che hai fatto tutta la prima parte di pulizia del dato effettivamente sì, è molto semplice: cioè, nel senso, ho fatto la pseudonimizzazione di una pratica, a questo punto io avrò sempre accesso a tutti i dati della pratica attraverso l'MCP e ho fatto il primo lavoro di anonimizzazione in maniera corretta non avrò grossi problemi anzi, se arrivano dei nuovi documenti, questi nuovi documenti richiederanno poco tempo per essere dati in pasto anche all'arge Language Model.
È ovvio che però, per esempio, se devo dare in pasto tutte le mie pratiche pregresse che non sono state ancora elaborate all'MCP, invece questo lavoro è un lavoro abbastanza impegnativo e ovviamente nella mia ottica doveva esserci sia l'opzione per fare l'una che l'altra cosa, anche perché, se no, fare tutta a mano in bella una pratica alla volta diventa oggettivamente complicato.
Cosa fa l'applicazione?
L'applicazione vede i documenti di una cartella, presumibilmente la cartella di una pratica, ma in sé per sé può essere una cartella qualsiasi, cerca le entità dei documenti, per ora sono testuali, abbiamo detto, ma in futuro ho intenzione.
Anzi, in programma, sia PDF che Dochicks, che sono quelli diciamo con maggiore rilevanza dal punto di vista legale, poi cercherò anche di inserire altre cose.
Fa verificare all'utente se sono state trovate tutte le entità del documento, che anche qui è fondamentale, io mi sono reso conto.
Ed è utile appunto, anonimato è stato un punto di partenza molto utile, perché mi sono reso conto che, per esempio, con questi sistemi semi-automatici è impossibile recuperare tutte le entità al 100%, si riesce a sfrondare bene un 80-85, forse a volte al 90, però dipende dai documenti.
Perché, per esempio, ho dovuto anonimizzare un documento con un animinato e non ho ben capito perché, probabilmente per come era formattato, non lo so, ma ha fatto una fatica del diavolo, a estrapolare tutte le entità, alla fine, a manina bella ce li ho inserite io manualmente, ma questa è ovviamente una parte più tediosa, ma la parte fondamentale di tutto il sistema: se non becchi tutte le entità, quindi non fai, non verifichi, ovviamente che i documenti siano stati ripuliti, è ovvio che poi tutto il sistema non funziona perché non c'è la pseudonimizzazione.
Quindi anche qui a livello di interfaccia, per esempio, è la parte più complessa dell'interfaccia, perché ho dovuto creare tutto un sistema abbastanza sensato, diciamo, per fare tutte queste operazioni per verificare correttamente per permettere all'utente di verificare che il documento sia effettivamente anonimizzato, e solo a questo punto il documento viene approvato e quindi reso visibile dall'argence wode.
Quindi l'MCP lo trasmette.
Il documento, come dicevo è pseudonimizzato, non è tecnicamente anonimizzato, perché nelle informazioni, cioè nei fatti che sono ovviamente necessari per utilizzare sensatamente i documenti, dai fatti sostanzialmente si possono, si può volendo risalire l'identità delle persone.
Ovviamente più il dato è particolare, cioè più il fatto che la situazione è inusuale e particolare, più è semplice, potenzialmente incrociando con altri dati, per esempio informazioni di cronaca e così via.
Cioè, deanonimizzare questi dati.
Quindi appunto l'unico modo non è anonimizzato in senso tecnico, perché per essere anonimizzato, una volta che questi documenti vengono passati ai large language mod, non ci dovrebbe essere nessun modo senza avere il documento, ovviamente di deanonimizzarli.
A questo punto il documento pseudonimizzato viene esposto all'arge language mod.
Non è il documento intero, ma una parte rilevante della domanda.
Non c'è una RAG vera e propria, quantomeno lo Stato, ma sto ragionando su varie cose, sostanzialmente un database è un sistema abbastanza flessibile e non particolarmente pesante per farlo, perché, se no, per fare RAG su questi documenti anonimizzati, ci sarebbe anche da fare tutto un sistema ulteriore diciamo di vettoralizzazione che richiede comunque una certa potenza di calcolo per fare la conversione in vettori dei singoli chunk, insomma, non volevo rendere il sistema molto complicato, anche perché volevo che fosse un sistema che può andare non dico su tutti i computer, ma sulla maggior parte dei computer senza troppi problemi.
E nella maggior parte dei casi, quando inserisci solo un documento è un'operazione da poca cosa.
Ma se inizia invece a passare 100-200 documenti, ecco, questo può diventare un po' più complicato.
L'altra cosa che mentre facevo i primi test per appunto far rispondere sostanzialmente il large language model mi è venuto però in mente una cosa fondamentale, cioè quando io faccio delle domande all'arge language mode, a volte voglio anche che mi generi delle risposte, e queste risposte contengono i dati ovviamente anonimizzati o pseudonimizzati, come dicevo prima.
L'LLM genera dall'informazione un documento, a questo punto diventa comodo poterlo ovviamente salvare nella pratica.
Per esempio, ho fatto un test velocissimo, giusto solo per vedere se come funzionava il sistema, mi ho fatto generare un atto a fronte dei dati sintetici, gli ho chiesto: fammi la comparsa di risposte.
Non mi ricordo più qual era l'atto e qual era poi la conseguente atto conseguente e l'ha generato.
Ovviamente però con i dati pseudo anonimizzati, quindi anche qui c'era tutto il discorso che dovevo fare, trova, sostituisci, di tutti i dati anonimizzati, che era un autore di scatola, anche a fronte del fatto che invece tutte le entità io ce l'ho nella pratica.
Quindi mi è venuta l'idea di fare di permettere all'MCP di fare il giro opposto, se invece originalmente la mia idea era da una cartella e da un documento i dati vengono passati all'MCP all'arge language mode, il language mod deve poter passare delle informazioni all'MCP.
Se queste informazioni sono dati e pseudonimizzati, ovviamente di quella specifica posizione, l'MCP fa un'ulteriore operazione, cioè l'ideo anonimizza, le riidrata secondo la teoria dell'arge language mod, quindi comunque estrappola, salva nella cartella il documento, ma lo salva con i dati completi ed effettivamente fa anche questo e funziona.
Infatti, devo dire la verità sono molto contento del sistema.
Ovviamente anche qui attualmente genera solo i file testuali e credo e dico credo, che nell'80-90% dovrò valutare come fare per generare per esempio un PDF.
Perché anche qui se generasse un PDF direttamente il Large Language Model o un DOCX e lo passasse all'MCP, sarebbe molto più complicato invece fare la denonimizzazione dei dati.
Quindi eventualmente invece individuerò un modo, se è possibile, perché non c'ho ancora pensato, diciamo che questa è una fase ancora ulteriore.
Per se il risultato finale vuole essere un DOCX, per esempio, si occuperà una volta che i dati sono denonizzati e sono passate l'MCP.
Eventualmente l'MCP si occuperà in qualche maniera, non so quale, di generare appunto un PDF o un DOCX.
Tendenzialmente anche qui avendo accesso in locale l'MCP, per esempio, può utilizzare tutta una serie di programmi per convertire da testo semplice o markdown i documenti in altre modalità usando dei template.
A me viene in mente oggi Pandoc, perché è quello con cui ho più esperienza personale, ma credo che esistono anche altre librerie che possono essere appunto installati in maniera probabilmente più semplice all'interno dell'app Electron.
Ecco un'altra cosa molto importante, che ti ho già accennato, ma che è importante tenere presente.
Appunto, grazie allo sviluppo di Anonimetro, tantissime parti di questa applicazione le ho potute chiamiamo così riciclare, o comunque la maggior parte delle meccaniche di anonimizzazione le ho fatte copiare dire la verità da anonimato.
Tra le altre cose, appunto, proprio per ottimizzare anonimator e quindi ottimizzare il sistema di estrazione di entità, avevo già fatto creare l'intelligenza artificiale tutto un corpus di documenti con dati sintetici, cioè con nomi e cognome inventati dall'intelligenza artificiale.
Ho utilizzato questi documenti per fare tutti questi test, perché anche qui l'unico modo efficace di sviluppare queste applicazioni è quello di fare dei test concreti.
Ovviamente non volevo farli con dei documenti reali, anche perché tra l'altro anche qui i documenti reali, spesso e volentieri sono parziali, cioè nel senso non ho tutte le casistiche.
Per esempio, anche qui, Anonimator nella fase di sviluppo, e quando un po' di amici e conoscenti l'hanno usato tuttora lo usano da quello che ne so io, mi hanno chiesto anche: ma questo c'è questo problema, c'è quel problema, quindi ho cercato anche di risolverlo e ho cercato di ottimizzarlo.
Ma come dicevo, dalla mia esperienza personale, proprio per questo motivo, tra l'altro Anonimator, come Anoni MCP, permette di inserire manualmente l'entità, proprio perché a volte è più semplice farlo a mano, soprattutto se l'80% delle entità li ha già trovate, ma ne mancano per esempio 5-6, è molto più semplice inserirle manualmente e farle poi anonimizzare a fronte di un inserimento manuale che richiede veramente poco tempo.
Tra l'altro l'altro grosso vantaggio del sistema è che rispetto ad anonimator in una pratica abitualmente hai tizio contro Caio e quindi i dati sono quelli di tizio, di Caio, eventualmente dei testimoni, non so, o di altri soggetti, ma i dati sono sempre più o meno gli stessi.
Quindi, anche qui, una volta che hai fatto la prima anonimizzazione della posizione, mettiamola in questi termini, il grosso l'hai fatto e avendo già un database, chiamiamolo così, delle entità da anonimizzare, è molto più semplice procedere in tutte queste operazioni.
Quindi anche qui il sistema funziona molto bene una volta che dopo la prima anonimizzazione, che invece è quella che richiede solitamente maggior tempo, maggior cura, maggiore attenzione, mettiamola così.
Come l'ho sviluppata?
Come ti dicevo, l'ho sviluppato in modo progressivo, ne parlerò meglio nella prossima puntata, che invece sarà dedicata più agli aspetti pratici.
Proprio perché mi piacerebbe comunque condividere anche questi aspetti.
Perché lo continuo a ripetere, ne parlavo anche con l'amico Giorgio Trono.
Sostanzialmente credo che l'avvocato debau possa utilizzare questi strumenti non per sostituirsi allo sviluppatore, ma proprio per sviluppare piccoli tool di utilizzo pratico quotidiano, che però gli velocizzano un po' molto il lavoro, perché appunto tutte queste operazioni poi sono fatte per poter utilizzare effettivamente la potenza di calcolo dell'Arge Language Model ed effettivamente le capacità che hanno intrinseche diciamo nella gestione.
Quindi, come l'ho sviluppata, devo dire la verità, l'ho sviluppata prevalentemente inizialmente con Opus 4.8, perché nella sostanza ho l'abbonamento annuale, attualmente quello pro, quindi quello da 22 a 23 euro al mese sostanzialmente.
Ho deciso di cercare di fare uno sviluppo incrementale di fare piccole sessioni di lavoro quindi di cercare di utilizzare Opus 4.8, che attualmente era il migliore perché adesso c'è potenzialmente Fable 5 se verrà lasciato dopo il 22 di giugno ai comuni mortali, mettiamoli in questi termini.
Ho notato che Opus.8 il grosso vantaggio dal mio punto di vista, quantomeno non è la capacità di creare codice e quant'altro.
Devo dire la verità.
Per esempio, ad un momento l'ho sviluppata interamente con Sonnet.
Quindi con un modello che teoricamente è peggiore, ma il grosso vantaggio è la finestra di contesto.
La finestra di contesto che è molto grossa, un milione di token e quindi si riempie meno velocemente, ovviamente e quindi si riesce a lavorare, diciamo bene rispetto a Sonnet che si rimette decisamente più in fretta.
Anche qui.
Anoni MCP, avevo il vantaggio di non avere tutta una serie di cose che dovevano essere inventate da zero, ma potevo prendere a pezzi bocconi da Anonimator e da altre soluzioni, quindi l'implementazione è stata veloce, però, appunto, abitualmente con Opus riempivo la memoria context window al 16-17%, mentre con Sonnet arrivavo spesso volentieri sopra il 60%.
Quindi avevo tutto il problema del compattamento della memoria.
Anche qui è sempre una buona prassi, diciamo, svuotare la memoria, il contesto spesso e volentieri, soprattutto quando aumenta molto, perché ti fa consumare molti più token e così via.
Tuttavia, in determinate situazioni, ovviamente avere un contesto idoneo è utile.
Siccome, però, nella sostanza, a un certo punto mi sono reso conto che per fare quello che volevo io, l'abbonamento base, diciamo di Clude e Opus non era sufficiente.
Comunque mi chiedeva di fare dei task di sviluppo in orari che non volevo fare sostanzialmente.
Quindi dovevo lavorare appunto nelle fasce basse e non al pomeriggio, dove spesso volentieri, casomai due o tre ore per fare questi giochini qui li riesco a ritrovare e invece lavorare la sera o lavorare al mattino dove abitualmente invece lavoro seriamente, avevo fastidio, e volevo comunque provare, ho fatto l'abbonamento per un mese come ti dicevo, a GPT in particolare volevo accedere a Codec, ho anche fatto sviluppo con Open Code, che finalmente mi dava la possibilità di accedere a questo abbonamento, ho sviluppato la parte di interfaccia con GPT 5.5 X-ite, che era meglio, come direbbe qualcuno attualmente, e era superiore, probabilmente a Opus fino a ieri quando è uscito Feblo 5.
I risultati sono stati interessanti, devo dire la verità: ci ho pestato a un certo punto, ma perché dopo ho fatto fare veramente un sacco di roba, a un certo punto mi sono fermato e ho fatto dell'altro.
Sono riuscito una settimana comunque ad arrivare ai bordi del consumo totale dei crediti della settimana utilizzando, però, appunto tutto al massimo.
Quindi, non solo GPT 5.5 X-ide, che è la versione di ragionamento più elevata, ma anche la FAST, che ovviamente consuma ancora di più è molto più veloce, ma consuma ancora di più.
Quindi mi dava risultati velocemente.
Quindi, ho anche fatto uno sviluppo molto veloce.
In più con i vari MCP, con i vari test, l'ho fatto fare veramente un sacco di roba, devo dire la verità.
I modelli, le versioni quelle da 100 dollari per intenderci, sono effettivamente molto, cioè necessari.
Mettiamola così se si fa sviluppo di applicazioni di altre cose con un minimo di esperienza.
I tagli piccoli attualmente possono essere utilizzati, ma diciamo, bisogna essere molto metodici nel modo in cui si lavora e appunto utilizzare delle tecniche apposta, diciamo per massimizzare il lavoro.
Ne parlerò appunto nella prossima puntata, ma nella sostanza, mi sono reso conto che avendo un metodo specifico, pianificando bene tutte le operazioni, anche con i tagli piccoli, tirando un po' di saracche, come si suol dire, si riescono a fare cose interessanti, si possono fare cose interessanti.
È ovvio che, però, se per esempio non si riesce a controllare proprio tempo bene in determinate situazioni, ovviamente il lavoro hai udienza, da ricevere i clienti, quindi hai delle fasce orari che sono bloccate.
Mettiamola così.
È ovvio che questo vuol dire sviluppare o comunque fare tutti questi esperimenti in momenti non ho.
A volte appunto alla sera ho, soprattutto all'inizio, ho fatto molte cose alla sera, perché era l'unico momento dove potevo fare queste cose tranquillità.
Però, per esempio, io lavoro male la sera e quindi mi si incrociavano gli occhi varie volte.
Mentre seguivo gli sviluppi dell'intelligenza artificiale, quindi mi trovavo in notevoli difficoltà anche ad avere la mente lucida per valutare se le scelte fatte dall'intelligenza artificiale erano sensate o meno, chiedere i chiarimenti necessari poi per non andare a finire conti sac perché lo continuo a ripetere: l'intelligenza artificiale è un ottimo programmatore mettiamolo in questi termini, ma ci vuole sempre l'umano dietro, che capisce cosa sta facendo, capisce se sbaglio se ha centrato il risultato e fa le domande giuste per poi indirizzare la conversazione e lo sviluppo, ma direi che abbiamo fatto siamo andati abbastanza lunghi e quindi direi di andare verso la conclusione dell'episodio.
Triamo quindi velocemente le somme, mi sono fatto ovviamente prendere lo sviluppo di questa applicazione come al solito nei primi due o tre giorni, credo in un weekend, mi ci sono dedicato giorno e notte, mettiamoli in questi termini, sicuramente come soluzione non è la migliore soluzione, diciamo, perché lo ripeto, ha più senso lavorare in locale anonimizzare o pseudonimizzare i documenti per caricare per caricare negli LM, comunque ha delle criticità è interessante il sistema.
Sicuramente mi ha dato tantissimo, e comunque se proprio: perché purtroppo le ho sentiti, se qualcuno utilizzano i documenti così in chiaro con i large language model online, questo sistema, sicuramente.
Diciamo, alza l'asticella e permette di lavorare bene, perché appunto di fatto permette un utilizzo completo dei large language model e delle loro potenzialità sia in uscita che in entrata, mettiamola così, ma dall'altro ti garantisce un minimo di sicurezza, anche se lo ripeto, non è sicurezza al 100%.
Comunque questo strumento oggi, mentre ti sto raccontando, non è operativo, secondo me, in senso tecnico per gli avvocati per il mondo dell'avvocatura, mettiamola così, forse in un futuro lo sarà, anche qui lo ripeto sempre, il mio è un approccio, è tutto online, è tutto open source.
Se ci fosse qualche anima PIA che sa programmare e sa il fatto suo e volesse in qualche maniera anche contribuire, è più che bene accetto.
Io ovviamente non avendo le capacità vado con gli strumenti che ho a disposizione in questo caso specifico sono i large language model.
Sono molto soddisfatto di aver fatto tutto questo, perché ho visto le mie capacità di far sviluppare applicazioni con intelligenza artificiale decisamente migliorate.
Lungi dal potermi definire programmatore, lo ripeto: non ho letto una riga del codice che è stato creato.
Diciamo, se no, forse alcuni pezzi, ma giusto per curiosità mettiamoli in questi termini.
Però, sto pian pianino mi rendo conto di essere in grado di quantomeno indirizzare l'intelligenza artificiale nella direzione che voglio, comprendere meglio certi aspetti e approfondire, e tutto questo comunque non sapendo cose, diciamo, mi aiuta a da una parte capire che non le so, dall'altro, approfondirle.
E quindi sto iniziando a capire molto lontanamente la parte bella e intellettuale dello sviluppo appunto software, che è quella di ideare e di risolvere i problemi, appunto della programmazione, di come effettivamente nella concretezza sviluppare un'applicazione per fare determinate cose, che poi credo bene o male anche sia la parte più interessante.
Dice della professione forense, cioè quella di risolvere un problema, di vedere come il problema del cliente possa essere risolto a fronte, appunto dei fatti dei documenti a disposizione e ovviamente della normativa della prossima giudiziaria e così via.
Come sempre, se ti è piaciuto quel che hai ascoltato, ti propongo di scriverti alla mia newsletter, ogni mese ti inviarò i link ad articoli che ho trovato interessanti, ti avviserò dei nuovi podcast, nuovi articoli o nuovi video che pubblicherò, trovi le note dell'episodio all'indirizzo HTTPS, due punti slash slash www.avvocati mac.it podcast/82 che il numero di questa puntata.
Come sempre ci sentiamo alla prossima.