Far girare un modello di intelligenza artificiale sul proprio computer, senza inviare nulla a server esterni e senza pagare un abbonamento, e' oggi alla portata di chiunque grazie a Ollama. E' uno strumento gratuito e open source che scarica, gestisce ed esegue modelli linguistici in locale con pochi comandi. Questa guida ti accompagna dall'installazione al primo dialogo, fino all'uso da codice Python per costruire le tue applicazioni.

A chi serve e perche' usare l'IA in locale

Eseguire l'IA in locale ha tre vantaggi concreti: privacy (i tuoi dati non lasciano il computer, ideale per documenti riservati), costo zero dopo il download, e funzionamento offline. In cambio rinunci a un po' di qualita' rispetto ai modelli di frontiera in cloud e dipendi dalla potenza del tuo hardware. E' la scelta giusta per sviluppatori, professionisti che trattano dati sensibili (avvocati, medici, commercialisti), studenti e curiosi che vogliono sperimentare senza limiti di consumo.

Prerequisiti: quanta RAM serve davvero

La regola pratica e' che il modello deve stare nella memoria. Ecco un orientamento:

RAM disponibileDimensione modello consigliataCosa aspettarsi
8 GBmodelli da ~3 miliardi di parametririsposte semplici, velocita' discreta
16 GBmodelli da ~7-8 miliardibuon equilibrio qualita'/velocita'
32 GB o piu'modelli da 13-14 miliardi e oltrequalita' alta, serve pazienza senza GPU

Una GPU dedicata (NVIDIA o Apple Silicon con memoria unificata) accelera moltissimo. Su un normale portatile senza GPU si lavora comunque bene con i modelli piccoli.

Ollama si controlla da terminale con comandi semplici. Foto: Pexels.

Passo 1: installare Ollama

Vai su ollama.com e scarica l'installer per il tuo sistema. Su macOS e Windows e' un'app da installare con un doppio clic. Su Linux basta un comando:

curl -fsSL https://ollama.com/install.sh | sh

Verifica che funzioni:

ollama --version

Passo 2: scaricare ed eseguire il primo modello

Per scaricare e avviare un modello leggero e capace, ad esempio un modello da circa 3-8 miliardi di parametri della libreria ufficiale, usa ollama run: la prima volta scarica il modello, poi apre una chat interattiva.

ollama run llama3.2

Al prompt puoi scrivere subito:

>>> Spiega la differenza tra RAM e disco a un bambino di 10 anni.

Il modello risponde in locale, senza connessione. Per uscire dalla chat digita /bye. Per vedere i modelli scaricati e liberare spazio quando serve:

ollama list          # elenco dei modelli installati
ollama rm llama3.2   # rimuove un modello

Sulla libreria ufficiale (ollama.com/library) trovi molte famiglie di modelli — generalisti, specializzati nel codice, multilingua, versioni piu' compatte — con l'indicazione della dimensione: scegli in base alla tua RAM e controlla sempre le varianti piu' recenti.

Passo 3: personalizzare il modello con un Modelfile

Puoi creare una versione "su misura" del modello, con istruzioni fisse e parametri tuoi. Crea un file chiamato Modelfile:

FROM llama3.2
PARAMETER temperature 0.3
SYSTEM "Sei un assistente legale che risponde in italiano formale e cita sempre la cautela di verificare con un avvocato."

Poi costruisci e avvia il tuo modello personalizzato:

ollama create assistente-legale -f Modelfile
ollama run assistente-legale

La temperature bassa rende le risposte piu' precise e meno creative, utile per compiti seri.

Passo 4: usare Ollama da Python

Qui Ollama diventa davvero potente: espone un server locale (di norma su http://localhost:11434) con cui puoi parlare da codice. Il modo piu' semplice e' la libreria ufficiale:

pip install ollama
import ollama

resp = ollama.chat(
    model="llama3.2",
    messages=[{"role": "user", "content": "Elenca 3 idee per un blog sull'orto."}]
)
print(resp["message"]["content"])

Comodissimo: Ollama espone anche un'interfaccia compatibile con quella di OpenAI. Se hai gia' codice scritto per le API OpenAI, spesso basta cambiare l'indirizzo del server e usare una chiave fittizia:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
resp = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "Traduci in inglese: buongiorno a tutti."}]
)
print(resp.choices[0].message.content)

Cosi' puoi sviluppare in locale e passare al cloud (o viceversa) cambiando due righe.

Scegliere il modello giusto per il compito

Non esiste un modello "migliore" in assoluto: esiste quello adatto al tuo compito e al tuo hardware. Sulla libreria ufficiale trovi famiglie pensate per usi diversi:

  • Generalisti (tipo Llama, Qwen, Gemma nelle loro varie taglie): buoni per chat, scrittura, riassunti, domande e risposte.
  • Specializzati nel codice: ottimizzati per generare e spiegare programmi; utili come assistente di programmazione offline.
  • Modelli "di ragionamento": pensati per problemi logici e matematici, spendono piu' tempo a "pensare" prima di rispondere.
  • Modelli piccoli e compatti (1-3 miliardi di parametri): perfetti su hardware modesto o per compiti semplici e veloci.

La sigla che spesso accompagna il nome (per esempio la quantizzazione, indicata con codici come q4) dice quanto il modello e' stato "compresso": piu' e' compresso, meno memoria richiede ma piu' cala la qualita'. Per iniziare va benissimo una taglia media con quantizzazione standard; controlla sempre sulla libreria ufficiale le versioni piu' aggiornate, perche' escono nuovi modelli di continuo.

Consumi, batteria e buon senso

Far girare un modello in locale usa intensamente processore e, quando presente, GPU: su un portatile significa piu' calore, ventole attive e batteria che si scarica in fretta. Per un uso prolungato conviene collegare l'alimentatore e, se il computer lo consente, sfruttare l'accelerazione hardware. Chi ha un Mac con Apple Silicon parte avvantaggiato: la memoria unificata permette di caricare modelli piu' grandi rispetto a molti portatili Windows di pari prezzo. Su un PC senza GPU dedicata, invece, e' meglio restare sui modelli piccoli per evitare attese frustranti.

Errori comuni e soluzioni

  • "Error: model requires more system memory": il modello e' troppo grande per la tua RAM. Scarica una variante piu' piccola (meno parametri) o una versione piu' "quantizzata".
  • Risposte lentissime: senza GPU e' normale con i modelli grandi. Scendi a un modello piu' piccolo o attiva l'accelerazione GPU se disponibile.
  • "connection refused" da Python: il servizio Ollama non e' in esecuzione. Avvia l'app (o ollama serve su Linux) prima di lanciare lo script.
  • Spazio su disco esaurito: i modelli occupano diversi GB ciascuno. Usa ollama list e ollama rm per fare pulizia.

Esempio completo: un riassuntore di documenti offline

Mettiamo insieme i pezzi in uno script utile: legge un file di testo e ne produce un riassunto, tutto in locale, senza inviare il documento a nessun server. Perfetto per contratti, referti o appunti riservati.

import ollama

with open("documento.txt", "r", encoding="utf-8") as f:
    testo = f.read()

prompt = f'''Riassumi il seguente testo in 5 punti elenco,
in italiano, evidenziando date e cifre importanti:

{testo}'''

resp = ollama.chat(
    model="llama3.2",
    messages=[{"role": "user", "content": prompt}],
    options={"temperature": 0.2},
)
print(resp["message"]["content"])

Il risultato atteso e' un elenco di cinque punti con i concetti chiave. La temperature bassa mantiene il riassunto fedele. Se il documento e' molto lungo e supera la finestra di contesto del modello, dividilo in parti (per esempio per paragrafi), riassumi ciascuna e poi riassumi i riassunti: e' la tecnica del "riassunto a cascata".

Prompt di prova da copiare

Ecco alcuni prompt utili da provare in chat per capire le capacita' del modello locale:

Agisci come un revisore di codice. Trova i bug in questa funzione Python e proponi una correzione: [incolla il codice]
Trasforma questi appunti disordinati in una email formale e cortese al mio responsabile: [incolla gli appunti]
Genera 10 domande a risposta multipla, con soluzione, a partire da questo testo di studio: [incolla il testo]

Con un modello da 7-8 miliardi di parametri su 16 GB di RAM otterrai risultati piu' che dignitosi per questi compiti quotidiani.

Interfaccia grafica e alternative

Se preferisci non usare il terminale, puoi collegare a Ollama un'interfaccia web come Open WebUI, che offre un'esperienza simile a ChatGPT ma completamente locale. In alternativa a Ollama, chi vuole un programma con interfaccia grafica gia' pronta puo' valutare LM Studio, mentre chi cerca il massimo controllo tecnico puo' usare direttamente llama.cpp, il motore su cui molti di questi strumenti si basano. Ollama resta la via di mezzo ideale: semplice come un'app, ma con un'API potente per chi sviluppa.

Come proseguire

Una volta presa confidenza, i passi successivi piu' utili sono due: collegare Ollama a un sistema RAG per interrogare i tuoi PDF e documenti in locale, e integrare un modello locale in piccole automazioni (ad esempio con strumenti come n8n) per compiti ricorrenti senza costi di API. Avere un'IA sul proprio computer, gratuita e privata, apre possibilita' che fino a poco tempo fa richiedevano abbonamenti costosi: il limite, ora, e' soprattutto la fantasia con cui la si mette al lavoro. Vale la pena ricordare, infine, che i modelli locali non sostituiscono del tutto quelli di frontiera in cloud: per i compiti piu' complessi la differenza di qualita' resta evidente. La strada piu' sensata, per molti, e' ibrida: l'IA locale per i dati sensibili e i compiti quotidiani, il cloud per le sfide che richiedono il massimo della potenza.