Ollama 101 - Usarlo tramite CLI

Recap
Nel primo articolo abbiamo visto cos’è Ollama e come installarlo. Abbiamo anche eseguito il nostro primo modello con ollama run. Tuttavia, Ollama offre molti altri comandi che permettono di gestire i modelli in modo granulare e professionale.
In questo articolo esploreremo tutti i comandi CLI principali di Ollama, con esempi pratici che potrai replicare immediatamente.
Comandi principali
La CLI di Ollama segue una sintassi semplice e intuitiva:
ollama [comando] [opzioni] [argomenti]
Ci basterà dunque imparare i comandi principali per sfruttare al massimo le potenzialità di Ollama!
Vediamo nel dettaglio quali sono quelli più importanti e utili, con degli esempi pratici.
Ollama serve
Il comando serve avvia il server Ollama in modalità daemon. Questo è necessario perché tutti gli altri comandi comunicano con questo server per eseguire operazioni sui modelli.
ollama serve
Quando usarlo:
- Su Linux, se hai installato Ollama manualmente senza systemd
- Per debug, quando vuoi vedere i log in tempo reale
- Per avviare il server su una porta custom
Esempio con porta personalizzata:
OLLAMA_HOST=0.0.0.0:11435 ollama serve
Questo avvia Ollama sulla porta 11435 invece della default 11434, e lo rende accessibile da tutte le interfacce di rete.
Output tipico:
time=2024-02-20T10:30:00.000Z level=INFO msg="Ollama server starting" version=0.1.x
time=2024-02-20T10:30:00.100Z level=INFO msg="Listening on 127.0.0.1:11434"
Nota: Su Windows e macOS, Ollama si avvia automaticamente come servizio di sistema, quindi raramente dovrai usare questo comando manualmente.
Ollama pull
Scarica un modello dalla libreria di Ollama senza eseguirlo immediatamente. È l’equivalente di docker pull.
Sintassi base:
ollama pull [nome-modello]:[tag]
Esempi pratici:
# Scarica l'ultima versione di Llama 3.2
ollama pull llama3.2
# Scarica una versione specifica (3B parametri)
ollama pull llama3.2:3b
# Scarica Mistral (circa 4GB)
ollama pull mistral
# Scarica un modello più grande (circa 26GB)
ollama pull llama3.1:70b
Output durante il download:
pulling manifest
pulling 8934d96d3f08... 100% ▕████████████████▏ 1.8 GB
pulling 8c17c2ebb0ea... 100% ▕████████████████▏ 7.0 KB
pulling 7c23fb36d801... 100% ▕████████████████▏ 4.8 KB
pulling 2e0493f67d0c... 100% ▕████████████████▏ 59 B
pulling fa304d675061... 100% ▕████████████████▏ 91 B
pulling 42ba7f8a01dd... 100% ▕████████████████▏ 557 B
verifying sha256 digest
writing manifest
success
Per comprendere meglio i modelli, tieni conto che Ollama supporta diversi modelli, i quali sono descritti con il nome del modello (ad esempio, llama3), e poi un tag, che corrisponde alla variante del modello (ad esempio, 3b per 3 miliardi di parametri). Quando parliamo del numero dei parametri, possiamo assumere genericamente che più alto sarà il numero di parametri, più avremo bisogno di risorse hardware (RAM, CPU, GPU). Inoltre, il numero di parametri ci permette di comprendere la complessità del modello e la sua capacità di generare risposte più articolate. Ad esempio, un modello come llama3.2:1b (1 miliardo di parametri) sarà più leggero e veloce, ma meno capace di rispondere a domande complesse rispetto a llama3.2:70b (70 miliardi di parametri).
Quando invece eseguiamo il pull di un modello, viene scaricato quello che si chiama manifest, che contiene tutte le informazioni necessarie per eseguire il modello, come i layer, i pesi, e le configurazioni. Queste informazioni vengono salvate in una directory locale, tipicamente in ~/.ollama/models/. Il formato del file manifest è simile a quello di Docker, e permette a Ollama di gestire efficientemente i modelli, evitando di scaricare nuovamente i layer già presenti.

Ollama list
Come è facile intuire dal comando, ollama list mostra tutti i modelli scaricati localmente con informazioni su dimensione e data di modifica.
ollama list
Output esempio:
NAME ID SIZE MODIFIED
llama3.2:latest a1b2c3d4e5f6 2.0 GB 5 minutes ago
mistral:latest b2c3d4e5f6g7 4.1 GB 2 hours ago
codellama:7b c3d4e5f6g7h8 3.8 GB 3 days ago
phi3:mini d4e5f6g7h8i9 2.3 GB 1 week ago
Informazioni fornite:
- NAME: nome e tag del modello
- ID: hash identificativo univoco
- SIZE: dimensione su disco
- MODIFIED: ultima volta che il modello è stato usato o scaricato
Questo comando è utile per:
- Verificare quali modelli hai disponibili
- Controllare quanto spazio occupano
- Decidere quali modelli rimuovere
Ollama run
Questo è sicuramente il comando più utilizzato: esegue un modello e avvia una sessione interattiva (o esegue un prompt singolo).
Modalità interattiva:
ollama run llama3.2
Ti porta in una sessione chat dove puoi scrivere messaggi:
>>> Scrivi una funzione Python per ordinare una lista
Ecco una funzione per ordinare una lista in Python:
def ordina_lista(lista):
return sorted(lista)
# Esempio di utilizzo
numeri = [5, 2, 8, 1, 9]
print(ordina_lista(numeri)) # Output: [1, 2, 5, 8, 9]
>>> /bye
Comandi speciali nella sessione interattiva:
/bye- esce dalla sessione/clear- pulisce lo storico della conversazione/show- mostra informazioni sul modello corrente/?- mostra tutti i comandi disponibili
Modalità prompt singolo:
Puoi eseguire un singolo prompt senza entrare in modalità interattiva:
ollama run llama3.2 "Spiegami cos'è un REST API in 50 parole"
Questo è perfetto per:
- Script e automazioni
- Testing rapido
- Pipeline CI/CD
Esempio in script bash:
#!/bin/bash
risposta=$(ollama run llama3.2 "Genera un nome per un progetto Python di machine learning")
echo "Nome progetto: $risposta"
Opzioni avanzate:
# Usa un system prompt personalizzato
ollama run llama3.2 --system "Sei un esperto di cybersecurity che risponde sempre in modo conciso"
# Continua una conversazione precedente mantenendo il contesto
ollama run llama3.2 --keepalive 10m
L’opzione --keepalive mantiene il modello in memoria per il tempo specificato, evitando di ricaricarlo ad ogni richiesta.
Piccola nota: i modelli linguistici di grandi dimensioni solitamente accettano due tipi di argomenti, ossia il system prompt e lo user prompt. Il system prompt serve a definire il comportamento generale del modello, mentre lo user prompt è la domanda o il compito specifico che vogliamo che il modello esegua. Ad esempio, possiamo usare un system prompt per dire al modello di comportarsi come un assistente esperto in un certo campo (ad esempio, “agisci come…”, e poi usare lo user prompt per fare domande specifiche relative a quel campo.
Ollama rm
Anche questo comando è estremamente importante: rimuove un modello scaricato per liberare spazio disco.
ollama rm llama3.2
Output:
deleted 'llama3.2'
Ollama cp
Crea una copia di un modello con un nuovo nome. Utile per creare varianti personalizzate.
ollama cp llama3.2 my-custom-llama
Ora hai due modelli identici con nomi diversi. Questo è utile come punto di partenza per personalizzazioni (di cui parleremo successivamente).
Ollama show
Mostra informazioni dettagliate su un modello, inclusi i parametri, il Modelfile, e i template usati.
ollama show llama3.2
Output esempio:
Model
arch llama
parameters 3.2B
quantization Q4_0
context length 4096
embedding length 3200
License
LLAMA 3.2 COMMUNITY LICENSE AGREEMENT
System
You are a helpful assistant.
Parameters
stop "<|start_header_id|>"
stop "<|end_header_id|>"
stop "<|eot_id|>"
Questo comando è prezioso per:
- Capire le caratteristiche tecniche di un modello
- Vedere il system prompt di default
- Eseguire il debug di comportamenti inattesi
Conclusioni
La CLI di Ollama è potente ma semplice da usare. Con questi comandi hai tutto ciò che serve per:
- Scaricare e gestire modelli
- Eseguire inferenze interattive o automatizzate
Nel prossimo articolo vedremo come usare l’API REST di Ollama per integrare questi modelli nelle tue applicazioni web e mobile.
Continua con: Ollama 101 - Usarlo tramite REST API








