
Negli ultimi mesi ho lavorato a un progetto che mi incuriosiva da tempo: portare un assistente AI direttamente sullo smartphone, senza dipendere da servizi cloud.
L'obiettivo era semplice: poter parlare con un LLM, anche senza connessione a Internet, mantenendo i dati sul dispositivo.
Per questo ho realizzato un'app per iOS e Android che esegue localmente un modello della famiglia Gemma, con un'interfaccia vocale progettata per essere pratica nell'uso quotidiano.
Privacy prima di tutto
La caratteristica più interessante di un modello eseguito in locale è che le richieste non devono essere inviate a server esterni.
Se l'assistente deve leggere informazioni presenti sul dispositivo, consultare dati aziendali o gestire promemoria personali, l'elaborazione avviene direttamente sul telefono. Questo riduce la dipendenza dal cloud e permette di mantenere il controllo sui propri dati.
Un altro vantaggio è che l'assistente continua a funzionare anche in assenza di connessione: in viaggio, in aereo o in qualsiasi situazione senza rete.
Due modalità di interazione
L'app supporta due modalità di utilizzo: la classica interazione testuale e quella vocale.
Nel primo caso è sufficiente scrivere la richiesta nel campo di testo e inviarla. In alternativa è possibile utilizzare la propria voce attraverso un'interazione Hold-to-Talk:
-
tieni premuto il pulsante del microfono;
-
parli con i tuoi tempi, anche facendo delle pause;
-
rilasci il pulsante e la richiesta viene elaborata.
Anche in questo caso ho scelto un approccio completamente on-device: la trascrizione della voce viene eseguita localmente sfruttando le API di riconoscimento vocale dello smartphone, senza inviare l'audio a servizi cloud.
Quando l'AI non si limita a rispondere
Una delle parti più interessanti del progetto è l'utilizzo del Tool Calling.
In pratica il modello non genera soltanto testo, ma può richiamare funzioni dell'applicazione per eseguire operazioni complesse.
Ad esempio può:
-
cercare un prodotto nel magazzino e mostrarne disponibilità e posizione;
-
creare un promemoria semplicemente con un comando vocale;
-
utilizzare informazioni del dispositivo come data, ora, contatti in rubrica o posizione per contestualizzare le risposte.
Questo approccio permette di estendere le capacità dell'assistente, rendendolo in grado di fare compiti ben più complessi e di integrarsi con molte funzionalità dello smartphone.
Come ho integrato la Generative UI… e i limiti
Per rendere il progetto ancora più interessante, ho voluto sperimentare anche un approccio alla Generative UI, cioè la possibilità di far costruire all'assistente l'interfaccia da mostrare all'utente in base al contesto della richiesta.
Nel mio caso ho scelto una soluzione volutamente semplice e affidabile: ogni tool che il modello può richiamare restituisce non solo i dati richiesti, ma anche il componente grafico più adatto a visualizzarli. Il tool si occupa quindi di popolare quel componente con le informazioni corrette, che vengono poi mostrate direttamente nell'app.
Questo approccio è meno flessibile rispetto a una Generative UI completamente dinamica, ma offre un vantaggio importante: l'interfaccia rimane prevedibile e i dati vengono visualizzati in modo coerente.
Avrei voluto sperimentare soluzioni più evolute, come protocolli A2UI o sistemi di rendering basati su JSON, in cui è il modello stesso a descrivere l'interfaccia da generare. Con un modello così piccolo eseguito in locale, però, il rischio di allucinazioni o di output non validi è ancora troppo elevato.
Per questo progetto ho preferito privilegiare l'affidabilità rispetto alla flessibilità: ogni componente è definito dall'applicazione e il modello deve limitarsi a scegliere il tool corretto e fornire i dati necessari. In questo modo il risultato è sempre consistente e l'interfaccia viene generata senza compromettere la correttezza delle informazioni mostrate.
Perché costruire un'AI locale?
Negli ultimi anni siamo abituati a pensare all'intelligenza artificiale come a un servizio esterno.
In realtà gli smartphone moderni hanno ormai una potenza sufficiente per eseguire modelli sempre più affidabili direttamente sul dispositivo. Questo apre nuove possibilità: applicazioni più veloci, maggiore tutela della privacy e funzionamento anche senza connessione.
Per me questo progetto è stato soprattutto una dimostrazione di quello che oggi è possibile realizzare combinando modelli open source, AI on-device e un'esperienza d'uso pensata per il mondo mobile.
È una direzione che trovo molto interessante e che credo vedremo sempre più spesso nelle applicazioni dei prossimi anni.