Integrare Ollama con Python: Esempi di API REST e client Python
+ Esempi Specifici Utilizzando LLMs Pensanti
In questo post, esploreremo due modi per connettere la tua applicazione Python a Ollama: 1. Attraverso 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 è diventato rapidamente uno dei modi più convenienti per eseguire modelli linguistici di grandi dimensioni (LLMs) localmente. Con la sua interfaccia semplice e il supporto per modelli open popolari come Llama 3, Mistral, Qwen2.5, e anche varianti “pensiero” come qwen3, è facile integrare le capacità di 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). È possibile accumulare il contenuto o visualizzarlo in tempo reale per chatbot o strumenti CLI.
Esempio 2: API Generate
Se non hai bisogno di contesto di chat o ruoli, 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 one-shot — 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 dizionario. Se desideri lo streaming, puoi iterare sullo stream di 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 dell'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 intermedi di ragionamento. Questi modelli producono un output strutturato, spesso in un formato come:
🧠
Passaggi di ragionamento qui...
</think>
Risposta finale 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"🧠(.*?)✅", content, re.DOTALL)
answer = re.sub(r"🧠.*?✅", "", content, flags=re.DOTALL)
print("🧠 Processo di pensiero:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Risposta finale:\n", answer.strip())
Quando Utilizzare i Modelli di Pensiero
Caso d’uso | Modello Consigliato | Perché |
---|---|---|
Interpretabilità / Debugging | qwen3 |
Visualizza tracce di ragionamento |
Applicazioni sensibili alle prestazioni | qwen3 modalità non pensante |
Più veloci, meno verbosi |
Educativo / Esplicativo | qwen3 |
Mostra logica passo passo |
✅ Riepilogo
Compito | API REST | Client Python |
---|---|---|
Generazione di testo semplice | /api/generate |
ollama.generate() |
Chat conversazionale | /api/chat |
ollama.chat() |
Supporto allo streaming | Sì | Sì |
Funziona con modelli di pensiero | Sì | Sì |
Ollama’s design locale-first lo rende ideale per applicazioni AI sicure, offline o sensibili alla privacy. Che tu stia costruendo un chatbot interattivo o un servizio di arricchimento dati in background, puoi integrare facilmente LLMs nel tuo flusso di lavoro Python — con il pieno controllo sui modelli, sulla latenza e sui dati.
Link utili
- https://pypi.org/project/ollama/
- Ollama cheatsheet
- Python Cheatsheet
- Installare e configurare Ollama
- Limitare gli LLM con Output Strutturato: Ollama, Qwen3 & Python o Go
- Confronto dell’output strutturato tra i principali fornitori di LLM - OpenAI, Gemini, Anthropic, Mistral e AWS Bedrock
- Problemi di Output Strutturato in Ollama GPT-OSS
- Come Ollama Gestisce le Richieste Parallele
- Test: Allocazione della memoria e programmazione dei modelli in Ollama nuova versione - v0.12.1