Il libro "AI e DSA" è accompagnato da due strumenti gratuiti: il Generatore di Materiali, che trasforma un testo e un profilo studente in versione adattata, infografica e slide, e il Generatore di Profili, che costruisce il profilo YAML di partenza. Da quando esistono, entrambi hanno usato esclusivamente l'API di Gemini di Google. Funziona, ma per un insegnante alle prime armi restava un ostacolo in più: creare una chiave API, e accettare che il testo inviato — anche già anonimizzato — lasci comunque il proprio computer.
Questa settimana ho aggiunto una seconda strada: Ollama, il motore open source che fa girare modelli di intelligenza artificiale direttamente sul PC. Stesso principio già usato nell'anonimizzatore del libro per riconoscere i nomi nei testi, esteso ora anche alla generazione vera e propria dei materiali.
Cosa ho aggiunto, concretamente
Nel generatore CLI (generatore_pro.py, sia nella versione del repository del libro sia nell'app standalone) ho aggiunto un flag:
python generatore_pro.py --studente mario --testo storia.txt --backend ollama --modello-ollama qwen3.6:27b
Il comportamento di default resta invariato — chi non aggiunge --backend ollama continua a usare Gemini esattamente come prima. Nel Generatore di Profili, che è un'app Streamlit, ho aggiunto lo stesso interruttore ma in sidebar: un selettore "Motore AI" con le due opzioni, Gemini o Ollama, e la scelta del modello locale quando si seleziona il secondo.
I modelli locali disponibili in questa configurazione sono quattro, con pesi e velocità diverse: qwen3.6:27b e glm-4.7-flash per la qualità più alta, ministral-3:8b e qwen3.5:4b per chi ha un PC più modesto o vuole risposte più veloci.
Perché conta per chi lavora con PDP e PEI
Il primo motivo è la privacy. I profili studente usati con questi strumenti vanno sempre anonimizzati prima di essere incollati in qualunque AI — questo non cambia. Ma "anonimizzato" e "resta sul mio computer" sono due protezioni diverse, e finora il secondo strumento del libro non offriva la seconda. Ora sì: con il backend Ollama, il testo non lascia mai il PC dell'insegnante.
Il secondo motivo è il costo. Gemini ha un piano gratuito generoso, ma chi genera materiali per una classe intera, ogni settimana, prima o poi lo supera. Un modello locale non ha limiti di richieste né costo per token: paga solo l'elettricità.
Come l'ho verificato
Per non riscrivere la logica di generazione (i prompt, il parsing delle sezioni, l'esportazione in Word e PowerPoint sono già collaudati da mesi), ho scritto una piccola classe che imita l'interfaccia del client ufficiale di Gemini: stesso metodo, stessi argomenti, ma sotto chiama Ollama invece dell'API cloud. Il resto del codice non si accorge della differenza.
L'ho testato end-to-end con un profilo reale (Mario, dislessia + discalculia) e il modello più leggero, ministral-3:8b: testo adattato, infografica e slide generati correttamente, file salvati nelle stesse cartelle di sempre. Ho fatto lo stesso con la demo Streamlit online, questa volta usando streamlit.testing.AppTest per simulare davvero il click su "Genera materiale" senza bisogno di un browser.
Per strada ho trovato un piccolo difetto che non c'entrava con Ollama ma che vale la pena raccontare: il testo generato dall'AI (sia Gemini sia Ollama) contiene marcatori tipo **parola** per indicare il grassetto, ma il documento Word esportato li scriveva così, testo con gli asterischi letterali, invece di applicare davvero il grassetto. L'ho sistemato insieme al resto: ora **parola** diventa grassetto vero nel file scaricato, non più asterischi.
Cosa serve per usarlo
Serve avere Ollama installato in locale e almeno un modello scaricato — anche il più leggero (6 GB) gira su un portatile recente senza scheda video dedicata. Per questo resta un'opzione, non il default: chi non vuole installare nulla continua a usare Gemini con la sua chiave gratuita, esattamente come prima.
Conclusione
Non è una funzionalità che ho progettato a tavolino: è la stessa idea già applicata all'anonimizzatore, portata avanti di un passo nello strumento successivo della stessa catena. La lezione pratica, di nuovo, è testare prima di dichiarare finito: il flag da solo non bastava, serviva verificare che generasse davvero materiale corretto con un modello reale — ed è proprio lì che è saltato fuori il bug del grassetto, rimasto invisibile per mesi perché nessuno aveva mai riaperto un Word esportato per controllare la formattazione.