Integrare Ollama con Python: Esempi di API REST e client Python

+ Esempi Specifici Utilizzando LLMs Pensanti

Indice

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 e python

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:

  • Ollama installato e in esecuzione localmente (ollama serve)
  • Python 3.9+
  • Dipendenze necessarie:
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

Compito API REST Client Python
Generazione di testo semplice /api/generate ollama.generate()
Chat conversazionale /api/chat ollama.chat()
Supporto allo streaming
Funziona con modelli di pensiero

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.