Una delle domande che ricevo più spesso è questa:
>Rilascerai mai GiuliaAI open source?
La risposta più onesta che posso dare è: non è nei miei piani e difficilmente cambierà.
Non voglio dire che non pubblicherò mai una singola riga di codice o qualche modulo isolato. In futuro potrebbe anche succedere. Ma pubblicare GiuliaAI nella sua interezza, oppure rilasciare il modello con tutto ciò che la rende davvero Giulia, è una cosa che al momento non considero realistica.
E i motivi sono diversi.
Non è un progetto nato per essere distribuito
Lavoro a GiuliaAI dalla fine del 2022.
In questi anni il progetto è cresciuto insieme alle mie esigenze, ai miei computer, alle live e agli esperimenti che volevo fare. Non è nato come prodotto generico da installare con un comando e configurare da un pannello.
Tante parti sono costruite direttamente intorno al mio ambiente. Ci sono integrazioni, percorsi, servizi, API e comportamenti pensati per il modo in cui utilizzo io il sistema.
In alcuni punti ci sono anche cose volutamente hardcoded, perché per me era più importante far funzionare bene Giulia che creare fin da subito una piattaforma generica adatta a chiunque.
Rendere tutto distribuibile richiederebbe un refactoring enorme.
Non basterebbe eliminare qualche chiave API e caricare il progetto su GitHub. Bisognerebbe separare i componenti, creare configurazioni generiche, documentare tutto, gestire installazioni differenti e prevedere ambienti che oggi non esistono nel mio caso d’uso.
In pratica diventerebbe un secondo progetto.
Pubblicare il codice significa anche mantenerlo
C’è poi una cosa che spesso viene ignorata.
Rilasciare un progetto open source non significa semplicemente premere “public” su un repository.
Da quel momento arrivano issue, domande, richieste di supporto, problemi di installazione, dipendenze rotte, sistemi operativi differenti e persone che modificano cose senza sapere davvero come funziona il resto.
E inevitabilmente arrivano anche messaggi del tipo:
>Non parte.
>Mi dà errore.
>Puoi farlo funzionare sul mio computer?
>Ho cambiato quaranta file con un agente AI e adesso non va più niente.
Io già modifico GiuliaAI quasi ogni giorno. Alcuni esperimenti funzionano, altri vengono eliminati dopo poche ore. Il progetto è in continua evoluzione e non esiste una vera versione stabile da congelare e mantenere per il pubblico.
Anche pubblicare soltanto un modulo, per esempio parte del sistema di memoria di cui ho parlato nell’articolo precedente Costruire la memoria di una VTuber AI, sarebbe complicato. Quel modulo continuerebbe a cambiare mentre la versione pubblica rimarrebbe inevitabilmente indietro.
A quel punto dovrei scegliere tra sviluppare Giulia oppure mantenere una versione pubblica del codice. Preferisco continuare a lavorare su Giulia.
Non sono contrario all’open source
Voglio chiarire una cosa: non sono contrario all’open source.
Uso software open source, studio progetti pubblici e penso che sia una parte fondamentale del mondo informatico.
Ma non credo che ogni progetto debba esserlo per forza.
A volte sembra quasi che, se sviluppi qualcosa di interessante, tu abbia automaticamente il dovere di pubblicarlo gratuitamente. Come se gli anni di lavoro, gli esperimenti falliti, il tempo investito e i soldi spesi non avessero valore fino a quando il repository non diventa pubblico.
Io non la penso così.
GiuliaAI è un progetto personale su cui lavoro dalla fine del 2022 e che finora ho portato avanti quasi completamente da solo. Dei costi parlerò magari in un articolo separato, perché anche quello merita un discorso a parte.
Non sento quindi di dover regalare l’intero risultato semplicemente perché qualcuno vorrebbe provarlo sul proprio computer.
GiuliaAI non è soltanto un LLM
A volte la domanda cambia leggermente:
>Almeno il modello lo pubblicherai?
Il problema è che GiuliaAI non coincide con il suo modello linguistico.
Il modello è una parte del sistema, ma da solo non sarebbe Giulia.
Il personaggio nasce dall’unione di molti elementi:
- personalità e comportamento;
- memoria;
- voce;
- strumenti;
- integrazioni;
- gestione della live;
- dati strutturati;
- contesto editoriale;
- infrastruttura che collega tutto.
Pubblicare soltanto i pesi del modello non significherebbe pubblicare GiuliaAI completa.
Allo stesso tempo, quei pesi potrebbero comunque contenere una parte importante della sua identità e del lavoro fatto per costruirne il comportamento. Non li considero quindi un componente anonimo e facilmente separabile dal resto.
Il rischio dei cloni
Questa è probabilmente la parte più personale del discorso.
Una delle mie paure è che qualcuno possa prendere il codice, cambiare il nome e l’aspetto del personaggio, e pubblicare una copia di GiuliaAI come progetto proprio.
Magari quella copia potrebbe perfino diventare più conosciuta dell’originale.
So che può sembrare una paranoia, soprattutto perché Giulia non è ancora così famosa da generare centinaia di cloni. Ma sarebbe ingenuo ignorare completamente questa possibilità.
Ho investito anni nel costruire non soltanto il software, ma anche il personaggio, il modo in cui parla, la sua storia e il rapporto con la community.
Non mi interessa vedere tutto questo trasformato in un template per creare altre VTuber identiche con un nome diverso.
Un conto è spiegare un’architettura o condividere una scoperta tecnica. Un altro è distribuire direttamente il sistema completo che rende possibile il personaggio.
Dati personali e responsabilità
C’è inoltre un limite che non può essere superato: GiuliaAI contiene e utilizza dati che non possono essere pubblicati.
La memoria, i dataset, le conversazioni, il materiale editoriale e alcune informazioni utilizzate dal personaggio possono contenere dati privati o sensibili.
Anche nell’ipotesi remota di pubblicare qualche componente generico, tutto ciò che riguarda direttamente l’identità di Giulia e le persone con cui interagisce rimarrebbe privato.
Esiste poi una questione di responsabilità.
Un sistema come GiuliaAI non è soltanto codice passivo. Può parlare, rispondere, utilizzare strumenti e interagire con altri sistemi.
Distribuirlo senza controllo significherebbe accettare che venga modificato e utilizzato in contesti completamente diversi da quelli per cui è stato progettato. Qualcuno potrebbe creare versioni false di Giulia, farle dire cose che non direbbe oppure utilizzare alcune parti del progetto in modo irresponsabile.
Preferisco quindi mantenere il controllo sul modo in cui il personaggio viene distribuito e utilizzato.
Il problema del codice generato automaticamente
C’è anche un’altra mia paranoia, e tanto vale dirla apertamente.
Negli ultimi anni GitHub si è riempito di repository, fork e pull request generati quasi interamente con strumenti AI, spesso senza che chi li pubblica abbia davvero compreso il codice.
Non sono contrario all’utilizzo dell’AI per programmare. La utilizzo anch’io quando serve.
Il problema nasce quando viene usata per produrre modifiche enormi senza controllo, aggiungendo dipendenze inutili, duplicando funzioni e rovinando una struttura che prima era pulita.
Tengo molto all’ordine della codebase di GiuliaAI. Preferisco poche modifiche pensate e controllate rispetto a decine di contributi generati automaticamente soltanto perché “sembra funzionare”.
L’idea di passare il tempo a revisionare codice prodotto in questo modo non mi entusiasma particolarmente.
Questo non significa che non condividerò nulla
Tenere privata la codebase non significa voler nascondere ogni aspetto del progetto.
Anzi, vorrei continuare a pubblicare articoli tecnici sugli esperimenti che faccio, sulle architetture che provo, sui risultati positivi e anche sui fallimenti.
L’articolo sulla memoria è un esempio di ciò che voglio fare.
Posso spiegare come ho affrontato un problema, mostrare diagrammi, descrivere il funzionamento del sistema e condividere ciò che ho imparato senza pubblicare necessariamente tutto il codice.
Probabilmente questa sarà la direzione del blog nei prossimi mesi: meno annunci generici e più approfondimenti su come sto realmente costruendo GiuliaAI.
Non escludo che un giorno qualche modulo tecnico e completamente separato dal personaggio possa essere pubblicato. Ma non voglio prometterlo, perché il progetto cambia troppo velocemente e mantenere una versione stabile sarebbe difficile.
E l’app di GiuliaAI?
Esiste anche un altro modo attraverso cui le persone potranno interagire direttamente con Giulia.
Tempo fa avevo iniziato il beta testing di un’app pensata come una sorta di companion personale. Non una semplice chat in stile assistente, ma un modo per parlare con Giulia come con un’amica virtuale.
In molti mi hanno chiesto di riprendere lo sviluppo e l’idea è ancora in lavorazione.
Questo però non cambia il discorso sull’open source.
L’app sarebbe un prodotto ufficiale sviluppato e controllato da me, non una licenza del progetto da rivendere o installare dentro altri servizi.
Quindi, GiuliaAI sarà open source?
Per come stanno oggi le cose, no.
Non è una decisione contro l’open source e non è nemmeno un modo per creare mistero intorno al progetto.
È semplicemente la scelta che considero più sensata dopo anni di sviluppo.
GiuliaAI è troppo legata al mio ambiente, contiene parti private, richiederebbe un lavoro enorme per diventare distribuibile e perdere il controllo sul codice significherebbe anche perdere parte del controllo sul personaggio.
Continuerò però a raccontare come funziona, a condividere esperimenti e a pubblicare ciò che imparo durante lo sviluppo.
Il codice probabilmente resterà chiuso.
La ricerca, invece, no.
