Integrare Ollama con Python: esempi di API REST e client Python
+ Esempi Specifici Utilizzando LLM Pensanti
In questo post, esploreremo due modi per connettere la tua applicazione Python a Ollama: 1. Attraverso l’HTTP REST API; 2. Attraverso la libreria ufficiale Python di Ollama.
Copriremo entrambi i chat e i generate calls, e poi discuteremo come utilizzare efficacemente i “modelli di pensiero”.

Ollama ha rapidamente diventato uno dei modi più convenienti per eseguire modelli linguistici di grandi dimensioni (LLMs) localmente. Per vedere come Ollama si confronta con vLLM, Docker Model Runner, LocalAI e fornitori di cloud — incluso quando scegliere ciascuno — vedi LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared.
Con la sua interfaccia semplice e il supporto per popolari modelli open come Llama 3, Mistral, Qwen2.5, e anche varianti “pensiero” come qwen3, è facile integrare le capacità AI direttamente nei tuoi progetti Python — senza dover fare affidamento su API cloud esterne.
🧩 Prerequisiti
Prima di immergerti, assicurati di avere:
pip install requests ollama
Conferma che Ollama è in esecuzione eseguendo:
ollama list
Dovresti vedere modelli disponibili come llama3, mistral o qwen3.
⚙️ Opzione 1: Utilizzo dell’API REST di Ollama
L’API REST è ideale quando si desidera il massimo controllo o quando si integra con framework che gestiscono già le richieste HTTP.
Esempio 1: API Chat
import requests
import json
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "Sei un assistente Python."},
{"role": "user", "content": "Scrivi una funzione che inverte una stringa."}
]
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
data = json.loads(line)
print(data.get("message", {}).get("content", ""), end="")
👉 L’API REST di Ollama streama le risposte riga per riga (simile all’API di streaming di OpenAI). Puoi accumulare il contenuto o visualizzarlo in tempo reale per chatbot o strumenti CLI.
Esempio 2: API Generate
Se non hai bisogno di contesto o ruoli di chat, utilizza l’endpoint più semplice /api/generate:
import requests
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama3.1",
"prompt": "Spiega la ricorsione in una frase."
}
response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
if line:
print(line.decode("utf-8"))
Questo endpoint è perfetto per compiti di generazione di testo in un’unica volta — riassunti, frammenti di codice, ecc.
🐍 Opzione 2: Utilizzo della Libreria Python di Ollama
Il client Python di Ollama fornisce un’interfaccia più pulita per gli sviluppatori che preferiscono rimanere completamente in Python.
Esempio 1: API Chat
import ollama
response = ollama.chat(
model="llama3.1",
messages=[
{"role": "system", "content": "Sei un assistente per il codice."},
{"role": "user", "content": "Genera uno script Python che elenca tutti i file in una directory."}
]
)
print(response['message']['content'])
Questo restituisce l’ultimo messaggio come un dizionario. Se desideri lo streaming, puoi iterare sullo stream della chat:
stream = ollama.chat(
model="llama3.1",
messages=[
{"role": "user", "content": "Scrivi un haiku sulla ricorsione."}
],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
Esempio 2: API Generate
import ollama
output = ollama.generate(
model="llama3.1",
prompt="Riassumi il concetto di decoratori in Python."
)
print(output['response'])
O streama il risultato:
stream = ollama.generate(
model="llama3.1",
prompt="Elenca tre vantaggi nell'utilizzo di Python per progetti AI.",
stream=True
)
for chunk in stream:
print(chunk['response'], end='', flush=True)
🧠 Lavorare con i “Modelli di Pensiero”
Ollama supporta i “modelli di pensiero” come qwen3, progettati per mostrare i loro passaggi di ragionamento intermedio. Questi modelli producono un output strutturato, spesso in un formato come:
</think>
Passaggi di ragionamento qui...
Questo li rende utili per:
- Debug del ragionamento del modello
- Ricerca sull’interpretabilità
- Costruzione di strumenti che separano pensiero da output
Esempio: Utilizzo di un Modello di Pensiero
import ollama
response = ollama.chat(
model="qwen3",
messages=[
{"role": "user", "content": "Qual è la capitale dell'Australia?"}
]
)
content = response['message']['content']
# Opzionalmente estrai la parte "pensiero"
import re
thinking = re.findall(r"</think>
(.*?)`", content, re.DOTALL)
answer = re.sub(r"