Ho realizzato l’integrazione contestuale di un assistente AI dentro Roundcube, dove il plugin recupera il messaggio selezionato e lo passa a un backend PHP separato, poi interroga le API di OpenAI e restituisce analisi o bozze senza inviare autonomamente la posta. Il RAG esteso all’intero archivio email, con indicizzazione, embedding, ricerca semantica e recupero delle comunicazioni precedenti, rappresenterà invece l’evoluzione successiva del progetto.
Come ho integrato un assistente AI in Roundcube, utilizzando PHP, Docker, le API di OpenAI ed un'architettura RAG, trasformando uno strumento che utilizziamo tutti i giorni in un ambiente capace di leggere, comprendere, analizzare ed aiutarci a rispondere alle email.
Ci sono programmi che utilizziamo tutti i giorni, da così tanti anni, che abbiamo persino smesso di domandarci se potrebbero funzionare in maniera diversa. La posta elettronica è uno di questi.
Arriva un messaggio, lo apriamo, lo leggiamo, cerchiamo di comprenderne il contenuto, magari andiamo a recuperare una precedente comunicazione, poi scriviamo una risposta, la rileggiamo e finalmente la inviamo. Nel frattempo ne sono arrivati altri cinque, qualcuno contiene un allegato da esaminare, qualcun altro pretende una risposta immediata e almeno uno, probabilmente, cerca di convincerci a cliccare su un collegamento che sarebbe meglio lasciare dov'è.
Non è un lavoro particolarmente difficile, almeno nella maggior parte dei casi, ma è un lavoro che richiede una quantità considerevole di attenzione.
E l'attenzione, a differenza della capacità di calcolo di un computer, non è una risorsa inesauribile.
Da questa considerazione è nata una mia piccola esperienza di sviluppo che voglio raccontare, perché penso possa essere replicata da moltissime persone, anche senza disporre di grandi infrastrutture o di competenze informatiche particolarmente sofisticate.
Ho deciso di integrare un assistente basato sui modelli ChatGPT direttamente dentro Roundcube, la webmail open source che utilizzo per gestire la mia posta elettronica.
L'intento era ridurre la necessità di passare testo dalle mail ad altre webapp, incollare riferimenti da testi di altre email, andare a cercare messaggi o dover approfondire questioni legate al contenuto delle mail; volevo insomma che l'IA lavorasse dove stavo già lavorando io, avendo a disposizione il contesto necessario per poter aiutarmi senza che fossi io a dover cambiare abitudini ma, anzi, sveltendomi il lavoro quotidiano. Soprattutto volevo conservare il controllo completo di ciò che viene inviato, modificato o semplicemente letto.
Prima di tutto, cos'è Roundcube e perché ho scelto proprio lui
Roundcube è un'applicazione web open source che consente di utilizzare la posta elettronica attraverso un browser. È sviluppata in PHP, comunica con i server di posta tramite IMAP e SMTP e dispone di un efficace sistema di plugin che permettono di ampliarne le funzionalità; in pratica possiamo utilizzarlo per leggere e scrivere email senza dover sviluppare un client da zero e, soprattutto, senza essere obbligati ad utilizzare l'interfaccia web fornita dal nostro gestore di posta. In pratica il server che custodisce le email può continuare ad essere quello che utilizziamo da anni e se na sta fermo dov'è, mentre Roundcube rappresenta soltanto l'interfaccia attraverso la quale vi accediamo. In questo modo possiamo cambiare l'esperienza d'uso senza necessariamente cambiare il servizio di posta e soprattutto senza trasferire gli archivi e modificare i record DNS che governano le consegne. Per il mio esperimento ho installato Roundcube su un server Linux, utilizzando Docker, ed ho mantenuto il servizio di posta presso il provider esterno.
La struttura di partenza era abbastanza semplice:
- Roundcube per l'interfaccia utente.
- MariaDB per conservare le informazioni applicative, come preferenze e rubrica.
- Nginx come reverse proxy HTTPS.
- Un backend PHP dedicato alle funzioni di intelligenza artificiale.
- Le API di OpenAI per elaborare le richieste.
- Un plugin JavaScript/PHP per collegare Roundcube all'assistente.
Il tutto con un principio che considero fondamentale: la normale posta elettronica deve continuare a funzionare anche se l'intelligenza artificiale, per qualsiasi motivo, non è disponibile. L'AI infatti deve essere un valore aggiunto, non un nuovo punto di guasto capace di impedirci di lavorare.
Il concetto che cambia tutto: l'intelligenza artificiale deve conoscere il contesto
Chi utilizza ChatGPT o Gemini o altre AI con buone capacità di elaborare i testi, conosce perfettamente una situazione piuttosto comune dovuta a sostanziale carenza di tempo al tempo della AI; riceviamo una email chilometrica e magare pure complessa, abbiamo altre duecento cose da fare ed allora ne copiamo il contenuto, apriamo la nostra AI preferenziale e le chiediamo di spiegarcela riassunta e magari di prepararci una bozza di risposta. Naturalmente funziona, ma c'è qualcosa di un po' stupido in questa procedura, perchè abbiamo un computer che possiede già il testo dell'email, un modello AI che sarebbe perfettamente in grado di analizzarlo, ma noi esseri umani dobbiamo fare da intermediari copiando e incollando informazioni da una finestra all'altra, e questa non è esattamente l'idea di progresso tecnologico che avevo in mente.
Per questa ragione ho progettato un'integrazione nella quale è Roundcube stesso a fornire all'assistente il contesto del messaggio selezionato con mittente, destinatari, oggetto, contenuto ed alcune informazioni tecniche che possono essere utili per la valutazione della sua attendibilità.
Ed è qui che entra in gioco un concetto fondamentale dell'intelligenza artificiale applicata ai documenti: la RAG, Retrieval-Augmented Generation che, nonostante il nome, rappresenta un principio piuttosto semplice, anche se le sue implementazioni possono diventare molto sofisticate. Un modello linguistico possiede una grande quantità di conoscenze apprese durante l'addestramento, ma non conosce automaticamente le nostre email, i nostri documenti aziendali o le comunicazioni che abbiamo scambiato ieri mattina. Inoltre le chiamate API alle AI sono session-less, pertanto "perdono la memoria" ad ogni nuova chiamata costringendoci a rimpolpare una stringa che usiamo come contesto. La RAG è ancora una spanna più avanti perchè ci permette di recuperare informazioni da una fonte esterna e di fornirle al modello proprio nel momento in cui deve elaborare una risposta. È importante distinguere due livelli. Passare all'AI il testo dell'email attualmente aperta è già un modo di fornire un contesto reale e verificabile, ma non costituisce, da solo, un sistema RAG completo, perchè per parlare propriamente di RAG occorre aggiungere una fase di recupero delle informazioni pertinenti da un insieme più ampio, per esempio messaggi precedenti, documenti o allegati indicizzati. La mia integrazione parte dal primo livello, cioè dall'accesso contestuale alla posta, e offre una base sulla quale costruire il secondo, che è poi il passaggio che, personalmente, reputo più interessante.
Immaginiamo di ricevere un messaggio nel quale qualcuno scrive:
"Come concordato nella nostra precedente mail, restiamo in attesa di conferma delle condizioni indicate."
Un normale modello linguistico può suggerire una risposta educata, ma che ne sa di quali condizioni siano state concordate. Bene. Un assistente collegato ad un sistema RAG, invece, può cercare le comunicazioni pertinenti, con delle ricerche dicotomiche tra le mail ed il loro contenuto, e recuperare i passaggi utili e formulare una risposta coerente con quanto effettivamente discusso. La differenza è quella passa tra uno strumento capace di scrivere bene ed uno strumento capace di aiutarti a lavorare.
Come ho organizzato l'architettura
Ho preferito separare nettamente Roundcube dal motore AI, perché mischiare tutto dentro lo stesso ambiente PHP avrebbe reso più difficili gli aggiornamenti, la manutenzione ed anche la gestione della sicurezza.
L'architettura può essere rappresentata così:
UTENTE
|
BROWSER
|
ROUNDCUBE
|
PLUGIN AI
|
BACKEND PHP
|
RECUPERO DEL CONTESTO
/ \
EMAIL IMAP ARCHIVIO RAG
\ /
CONTESTO UTILE
|
API OPENAI
|
RISPOSTA AI
|
WIDGET ROUNDCUBE
|
UTENTE
Il ramo relativo all'archivio RAG rappresenta l'estensione necessaria quando vogliamo andare oltre la singola email e consentire ricerche contestuali su una raccolta di documenti.
La comunicazione con OpenAI avviene esclusivamente attraverso il backend PHP. Non ho voluto inserire chiavi API nel codice JavaScript, perché qualunque informazione inviata al browser può potenzialmente essere esaminata dall'utente.
Una richiesta al modello, semplificando molto, può avere questa struttura:
$payload = [
'model' => $model,
'instructions' =>
'Sei un assistente per la gestione della posta. '
. 'Usa il contesto fornito e non inventare '
. 'informazioni che non sono presenti.',
'input' =>
"EMAIL SELEZIONATA:\n"
. $contenutoEmail
. "\n\nRICHIESTA UTENTE:\n"
. $richiestaUtente
];
Questo sopra è un esempio volutamente ridotto, utile per comprendere il principio, mentre nella realtà servono l'autenticazione, l'autorizzazione, la validazione degli input, i limiti dimensionali, gestione degli errori ecc, ovvero un trattamento "sicuro" del contenuto delle email. Inoltre occorre ricordare una cosa spesso sottovalutata, ovvero che il testo di un'email è un dato da analizzare e non un insieme di istruzioni da eseguire. Mi spiego meglio: un mittente maleintenzionato potrebbe inserire nel proprio messaggio istruzioni rivolte all'AI cercando di farle ignorare le regole dell'applicazione o rivelare informazioni riservate; si tratta del problema noto come prompt injection, che deve essere considerato fin dalla progettazione del prompt di sistema e non solo, anche degli strumenti che si mettono a disposizione della AI verticale.
Il plugin Roundcube: molto meno complicato di quanto sembra
Roundcube dispone di un'architettura a plugin che consente di registrare azioni PHP, caricare JavaScript e interagire con le funzionalità della webmail in modo coordinato. Il mio plugin si occupa sostanzialmente di tre operazioni che sono quella di identificare il messaggio selezionato, quella di recuperare attraverso Roundcube le informazioni necessarie e quella di mettere queste informazioni a disposizione del backend AI mediante endpoint (autenticati). Ho poi realizzato un altro widget JavaScript, visualizzato nell'interfaccia come un piccolo pulsante circolare, che apre una finestra di conversazione senza abbandonare la webmail. Fatto questo l'integrazione di base c'è. Per evitare interferenze con la grafica di Roundcube, il widget utilizza un Web Component con Shadow DOM, che permette di isolare buona parte degli stili dell'assistente da quelli dell'applicazione principale, e questa è una soluzione particolarmente comoda quando si personalizza una webmail, perché gli aggiornamenti della skin non dovrebbero obbligarci a riscrivere continuamente l'interfaccia AI. Per la realizzazione e la revisione di alcune parti del codice consiglio (come ho fatto io) di farsi assistere da Microsoft Copilot, soprattutto nella scrittura delle classi PHP più lunghe e tipizzate, nella gestione degli eventi JavaScript e nella preparazione dei test, che sono fondamentali.
Un prompt che potreste usare con Copilot, per esempio, è:
«Sviluppando plugin per Roundcube 1.6.x, devo rilevare messaggio selezionato, recuperare contenuto tramite PHP autenticato, trasmetterlo a backend remoto. Proponi struttura modulare, non esporre credenziali in browser, no funzioni invio automatico posta, controlli su permessi utente.»
Un aiuto del genere vi accelererà moltissimo lo sviluppo e, anche il codice deve comunque essere verificato, guadagnerete un sacco di tempo in particolare per quelle funzioni che gestiscono le sessioni. Per quelle che riguardano i messaggi e dati personali non possiamo permetterci di fidarci ciecamente di un suggerimento automatico, quindi quelle vanno riguardate bene.
Una delle sorprese più interessanti, che è venuta di seguito, è l'analisi automatica delle email sospette e phishing. Spesso ormai tutti riceviamo messaggi che sembrano provenire dalla nostra banca, o da un corriere o un fornitore ed in alcuni casi sono così ben costruiti che riconoscerli a colpo d'occhio è diventato difficile. L'intelligenza artificiale può aiutarci ad analizzarli, ma non deve limitarsi a giudicare se il testo sembri sospetto.
Ho voluto che il backend potesse esaminare anche elementi tecnici del messaggio: intestazioni, dominio del mittente, indirizzo di risposta e, quando disponibili ed attendibili, risultati dei controlli SPF, DKIM e DMARC, e questo permette di mettere in relazione caratteristiche linguistiche e caratteristiche tecniche. Una email potrebbe utilizzare toni estremamente urgenti, contenere un link ad un dominio estraneo al servizio dichiarato e presentare incongruenze nell'autenticazione del mittente. Considerati separatamente, questi elementi non costituiscono sempre una prova di frode; osservati insieme, possono giustificare un livello di attenzione maggiore.
Peraltro bisogna essere molto cauti nell'interpretare le intestazioni, perché non tutti gli header presenti in un messaggio meritano automaticamente fiducia. I risultati di autenticazione devono provenire da un sistema ricevente attendibile, non semplicemente da una stringa trovata nel testo grezzo dell'email.
L'AI non diventa così un antivirus infallibile, ma uno strumento di supporto alla valutazione del rischio.
La distinzione è essenziale. Un verdetto automatico, soprattutto quando riguarda sicurezza e frodi, non dovrebbe mai sostituire completamente il controllo umano.
Preparare una risposta senza perdere il proprio modo di esprimersi
L'altra funzione che mi interessava particolarmente è la generazione delle risposte.
Non volevo che la webmail trasformasse ogni mio messaggio in una comunicazione impersonale, piena di formule standard e di quella cortesia artificiosa che ormai rende riconoscibili molti testi prodotti automaticamente. Volevo poter chiedere una risposta sintetica, una spiegazione dettagliata, un tono più fermo oppure più conciliante, mantenendo però il contenuto corretto e rispettando il contesto della comunicazione, ed è qui che un sistema RAG, quando dispone delle informazioni necessarie, può diventare preziosissimo. Se la risposta riguarda un accordo precedente, il sistema deve poter recuperare quell'accordo. Se riguarda un prodotto, deve poter consultare le informazioni del prodotto. Se riguarda una contestazione, deve distinguere ciò che è stato effettivamente comunicato da ciò che il modello potrebbe semplicemente ritenere plausibile.
Quando mancano le informazioni, è molto meglio che l'assistente dica di non conoscerle piuttosto che produca una risposta elegantissima ma sbagliata.
Ho introdotto anche una limitazione volutamente rigida: l'AI può preparare ed inserire una bozza, ma non può inviare autonomamente le email.
L'ultima decisione deve essere mia.
Non è una limitazione tecnologica. È una scelta precisa di progettazione.
Dettare, parlare, chiedere spiegazioni
Una volta realizzata l'integrazione testuale, ho voluto aggiungere anche le funzioni vocali.
La prima permette di dettare una richiesta invece di scriverla. La seconda consente di instaurare una conversazione vocale con l'assistente, utilizzando le funzionalità realtime disponibili attraverso le API.
La differenza è significativa.
La dettatura trasforma la voce in testo. La conversazione realtime, invece, consente un'interazione più naturale nella quale si può parlare, ascoltare una risposta e proseguire il dialogo.
Immaginate di aprire una lunga comunicazione e chiedere semplicemente:
«Spiegami cosa vuole questa persona, quali sono le richieste principali e su quali punti devo prestare attenzione.»
Oppure:
«Preparami una risposta nella quale accetto il primo punto, ma chiedo chiarimenti sul secondo e rifiuto educatamente il terzo.»
Questo modo di interagire cambia parecchio l'esperienza d'uso della posta, specialmente quando dobbiamo gestire molte comunicazioni e vogliamo evitare di restare continuamente concentrati sulla tastiera.
Naturalmente una funzione vocale richiede anche permessi del microfono, connessioni sicure e un'informativa chiara sul trattamento dell'audio.
Docker: la parte meno appariscente, ma forse più importante per chi sviluppa
Per distribuire Roundcube ho utilizzato Docker perchè ci dà un vantaggio che è quello di poter mantenere l'applicazione ed i suoi componenti in un ambiente riproducibile, senza mischiare continuamente le dipendenze con quelle degli altri servizi presenti sul server. Se qualche cosa si scassa, un ripristino e compose up e tutto torna come prima.
Ma in Docker c'è una particolarità che merita attenzione, perchè il plugin Roundcube non deve essere modificato soltanto nella directory dell'applicazione già in esecuzione, perché quelle modifiche potrebbero andare perdute alla ricreazione del container.Ho quindi preparato un'immagine personalizzata che incorpora anche il plugin.
Per dare l'idea di un Dockerfile essenziale:
FROM roundcube/roundcubemail:1.6.19-apache-nonroot
COPY --chown=33:33 \
skin-personalizzata/ \
/usr/src/roundcubemail/skins/personalizzata/
COPY --chown=33:33 \
assistente_ai/ \
/usr/src/roundcubemail/plugins/assistente_ai/
Durante la creazione di un nuovo container, l'applicazione viene predisposta a partire dal contenuto dell'immagine, portando il plugin nella directory runtime di Roundcube. Nel mio ambiente la directory /var/www/html non è configurata come volume persistente e di conseguenza aggiornare un file direttamente al suo interno non significa aver aggiornato permanentemente il sistema. Ho scelto di produrre immagini con tag progressivi, conservando quella precedente per poter tornare rapidamente indietro qualora un aggiornamento introduca qualche problema.
Anche il backend AI è separato, quindi una modifica ai prompt o alla logica PHP non richiede necessariamente di ricostruire il container Roundcube.
Questa separazione rende gli aggiornamenti più semplici e riduce i rischi.
Il piccolo aneddoto che mi ha ricordato quanto sia importante la sicurezza
Durante uno degli aggiornamenti del widget mi sono imbattuto in un problema interessante consistente nel fatto che la chat non mi compariva più, la sua icona era sparita. Controllando la console del browser ho notato che il file JavaScript non superava la verifica di integrità e la causa era il meccanismo SRI, Subresource Integrity. In sostanza, Roundcube carica il widget specificando anche un'impronta crittografica SHA-384 del file autorizzato. Dato che io avevo modificato il JavaScript, l'impronta precedente non corrispondeva più al contenuto aggiornato, quindi il browser ne impediva l'esecuzione.
Per calcolare la nuova impronta ho utilizzato openssl:
openssl dgst -sha384 -binary /percorso/widget.js | openssl base64 -A
Il valore ottenuto, preceduto da sha384-, deve essere aggiornato nella configurazione che carica il widget.
È un meccanismo di protezione che richiede un minimo di attenzione in fase di aggiornamento e che non deve essere aggirato semplicemente disattivandolo.
Anzi, è proprio il genere di ostacolo che sono contento di incontrare: significa che il browser sta verificando davvero l'integrità del codice che gli chiediamo di eseguire.
E se volessimo trasformarlo in un vero RAG sulla nostra posta?
Fin qui abbiamo un assistente capace di lavorare sul messaggio corrente. Per realizzare un RAG esteso all'archivio email dobbiamo aggiungere un componente di recupero delle informazioni.
Il primo passaggio è individuare quali contenuti vogliamo rendere ricercabili: email, conversazioni precedenti, allegati PDF, documenti di lavoro o eventualmente una knowledge base personale.
Successivamente possiamo estrarre il testo, conservarlo insieme ai metadati necessari e suddividerlo in porzioni gestibili, chiamate comunemente chunk.
A ciascuna porzione possiamo associare un embedding, cioè una rappresentazione numerica che permette di cercare contenuti semanticamente simili anche quando le parole utilizzate sono differenti.
Per esempio, una ricerca relativa ad un ritardo nella consegna potrebbe individuare anche una comunicazione nella quale si parla di merce non ancora pervenuta, pur senza contenere esattamente la parola ritardo.
Gli embedding possono essere conservati in un database vettoriale, oppure in un archivio dotato di funzionalità di ricerca vettoriale. In alcune situazioni può essere preferibile un sistema ibrido, che combina ricerca per parole chiave, filtri sui metadati e similarità semantica.
Quando l'utente pone una domanda, il sistema recupera soltanto i passaggi pertinenti e li trasmette al modello, possibilmente insieme ai riferimenti che consentono di risalire ai messaggi originali.
Un possibile flusso è questo:
Domanda:
"Cosa avevamo concordato sulla consegna?"
|
v
Ricerca nei messaggi autorizzati
|
v
Filtri per mittente, data e argomento
|
v
Recupero dei passaggi pertinenti
|
v
ChatGPT elabora una risposta
basata sui contenuti recuperati
|
v
Risposta con riferimenti alle fonti
In questo scenario emerge un aspetto della sicurezza ancora più importante: ogni ricerca deve rispettare i permessi dell'utente.
Una casella condivisa, un'organizzazione con più dipendenti oppure un server che ospita caselle appartenenti a persone differenti non possono permettersi un archivio RAG che mescoli informazioni senza controllare chi è autorizzato a leggerle.
I permessi devono essere verificati prima che i contenuti vengano forniti al modello, non dopo.
È inoltre indispensabile aggiornare l'indice quando i messaggi vengono modificati, eliminati o resi non più accessibili.
E soprattutto non è necessario mandare indiscriminatamente tutto l'archivio ad OpenAI: è possibile conservare localmente l'indice e trasmettere al modello soltanto le informazioni strettamente necessarie alla richiesta.
Un aspetto che non va trascurato: privacy, costi e controllo dei dati
Quando parliamo di intelligenza artificiale applicata alla posta elettronica, stiamo parlando anche di informazioni potenzialmente riservate.
Un'email può contenere dati personali, contratti, informazioni economiche o comunicazioni confidenziali. Per questa ragione non basta che l'applicazione funzioni bene.
Occorre sapere quali dati vengono trasmessi al servizio AI, per quali finalità, con quali condizioni contrattuali e per quanto tempo possono essere conservati. In un contesto professionale bisogna inoltre valutare gli obblighi previsti dalla normativa sulla protezione dei dati, compreso il GDPR.
È utile chiarire anche che integrare un modello ChatGPT attraverso API non equivale ad automatizzare il sito web di ChatGPT: utilizziamo il servizio API di OpenAI, con autenticazione, modalità di fatturazione e condizioni proprie.
Il costo dipende dalle richieste, dai modelli utilizzati e dalla quantità di dati elaborati. Una semplice analisi testuale può richiedere risorse modeste, mentre conversazioni vocali prolungate o elaborazioni su grandi documenti possono comportare consumi maggiori.
Per questo ho voluto mantenere il controllo sul backend, sui modelli impiegati e sulle informazioni inviate.
Un'integrazione del genere deve essere utile anche economicamente: non avrebbe molto senso risparmiare qualche minuto di lavoro e scoprire poi di aver costruito un servizio inutilmente costoso.
La vera rivoluzione non è scrivere un'email più velocemente
Arrivato a questo punto, qualcuno potrebbe domandarsi se valga davvero la pena affrontare tutta questa configurazione soltanto per ottenere un assistente capace di riassumere e rispondere alle email.
Io penso invece che la questione sia molto più interessante.
La posta elettronica è uno dei luoghi nei quali si accumula una parte enorme della nostra attività intellettuale: decisioni, richieste, accordi, spiegazioni, contestazioni, problemi risolti e problemi ancora aperti.
Per molti di noi è, di fatto, una memoria professionale costruita negli anni, ma una memoria che consultiamo con strumenti ancora piuttosto primitivi.
Cerchiamo una parola, scorriamo una lista di risultati, apriamo alcuni messaggi e tentiamo di ricostruire il contesto.
L'intelligenza artificiale, soprattutto quando viene collegata ad un buon sistema di recupero delle informazioni, può trasformare questa memoria in una risorsa interrogabile in linguaggio naturale.
Potremmo domandare quali decisioni siano state prese su un determinato argomento, quali impegni risultino ancora aperti o quali differenze esistano tra una proposta ricevuta oggi ed una formulata diversi mesi prima.
Non significa che l'AI debba prendere decisioni al nostro posto. Al contrario, il vantaggio più grande potrebbe essere proprio quello di permetterci di prendere decisioni migliori, perché abbiamo più facilmente a disposizione le informazioni necessarie.
Ed è qui che si comprende anche il significato del titolo.
L'intelligenza artificiale può cambiarci la vita in meglio non perché scrive al posto nostro, ma perché ci restituisce una parte del tempo e dell'attenzione che oggi spendiamo per cercare, ricordare, ricostruire e ripetere operazioni.
Naturalmente non basta installare un plugin per ottenere automaticamente tutti questi risultati. Le funzioni vanno progettate, verificate e progressivamente migliorate, soprattutto quando entra in gioco il recupero delle informazioni e la possibilità che il modello produca risposte errate.
Ma aver portato un assistente conversazionale dentro la mia webmail, averlo collegato ai messaggi reali e aver mantenuto separati i diversi componenti dell'architettura mi ha mostrato quanto questa strada sia concretamente percorribile.
E la cosa che reputo più interessante è che non è stato necessario inventare un nuovo programma di posta elettronica.
Ho utilizzato un'applicazione open source che esiste da anni, un server Linux, PHP, Docker, qualche componente JavaScript ed un servizio AI accessibile via API.
Tecnologie conosciute, disponibili e relativamente semplici da combinare quando si ha chiaro ciò che si vuole ottenere.
Forse il prossimo passo dell'intelligenza artificiale nella nostra vita quotidiana non sarà necessariamente un'altra applicazione da installare o un nuovo assistente da aprire in una scheda del browser.
Forse sarà qualcosa di molto più semplice e, proprio per questo, di molto più importante: rendere intelligenti gli strumenti che utilizziamo già, senza obbligarci a ricominciare ogni volta da zero.
Per quanto mi riguarda, cominciare dalla posta elettronica è stata una scelta quasi naturale, ed ora che ho visto funzionare questa integrazione, faccio sempre più fatica ad immaginare perché dovrei tornare a gestire ogni messaggio esattamente come facevo prima, senza questa nuova comodità.
Commenti
Nessun commento, per ora.
Per commentare serve un accesso. Qui siamo tutti tecnici e colleghi!
Accedi per commentare