Integrera Ollama med Python: Exempel på REST API och Python-klient

+ Specifika exempel med hjälp av tänkande LLMs

Sidinnehåll

I detta inlägg kommer vi att utforska två sätt att ansluta din Python-applikation till Ollama: 1. Via HTTP REST API; 2. Via den officiella Ollama Python-biblioteket.

Vi kommer att täcka både chatt och generera anrop, och sedan diskutera hur man effektivt använder “tänkande modeller”.

ollama och python

Ollama har snabbt blivit en av de mest bekväma sätten att köra stora språkmodeller (LLMs) lokalt. För att se hur Ollama jämförs med vLLM, Docker Model Runner, LocalAI och molntillhandtagare — inklusive när du ska välja varje — se LLM Hosting: Lokalt, självvärddat & Molninfrastruktur jämförd. Med dess enkla gränssnitt och stöd för populära öppna modeller som Llama 3, Mistral, Qwen2.5, och även “tänkande” variant som qwen3, är det lätt att integrera AI-funktioner direkt i dina Python-projekt — utan att behöva bero på externa moln-API:er.


🧩 Krav

Innan du börjar, se till att du har:

  • Ollama installerat och kör lokalt (ollama serve)
  • Python 3.9+
  • Nödvändiga beroenden:
pip install requests ollama

Bekräfta att Ollama körs genom att köra:

ollama list

Du bör se tillgängliga modeller som llama3, mistral eller qwen3.


⚙️ Alternativ 1: Använda Ollama REST API

REST API är idealiskt när du vill ha maximal kontroll eller när du integrerar med ramverk som redan hanterar HTTP-begäran.

Exempel 1: Chat API

import requests
import json

url = "http://localhost:11434/api/chat"

payload = {
    "model": "llama3.1",
    "messages": [
        {"role": "system", "content": "Du är en Python-assistent."},
        {"role": "user", "content": "Skriv en funktion som vänder en sträng."}
    ]
}

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="")

👉 Ollama REST API strömmar svar linje för linje (liknande OpenAI:s strömmande API). Du kan samlar innehåll eller visa det i realtid för chattrobotar eller CLI-verktyg.


Exempel 2: Generate API

Om du inte behöver chattkontext eller roller, använd den enklare /api/generate-slutpunkten:

import requests

url = "http://localhost:11434/api/generate"
payload = {
    "model": "llama3.1",
    "prompt": "Förklara rekursion i en mening."
}

response = requests.post(url, json=payload, stream=True)
for line in response.iter_lines():
    if line:
        print(line.decode("utf-8"))

Den här slutpunkten är bra för enkel textgenerering — sammanfattningar, kodavsnitt, osv.


🐍 Alternativ 2: Använda Ollama Python-biblioteket

Ollama Python-klienten ger ett renare gränssnitt för utvecklare som föredrar att förbli helt i Python.

Exempel 1: Chat API

import ollama

response = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "system", "content": "Du är en kodassistent."},
        {"role": "user", "content": "Generera en Python-skript som listar alla filer i en katalog."}
    ]
)

print(response['message']['content'])

Detta returnerar det slutgiltiga meddelandet som ett dictionary. Om du vill ha strömning, kan du iterera över chatströmmen:

stream = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "user", "content": "Skriv en haiku om rekursion."}
    ],
    stream=True
)

for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)

Exempel 2: Generate API

import ollama

output = ollama.generate(
    model="llama3.1",
    prompt="Sammanfatta konceptet om dekoratorer i Python."
)

print(output['response'])

Eller strömma resultatet:

stream = ollama.generate(
    model="llama3.1",
    prompt="Lista tre fördelar med att använda Python för AI-projekt.",
    stream=True
)

for chunk in stream:
    print(chunk['response'], end='', flush=True)

🧠 Arbeta med “Tänkande” Modeller

Ollama stöder “tänkande modeller” som qwen3, som är designade för att visa deras mellanliggande resonemangsskrid. Dessa modeller producerar strukturerad utdata, ofta i ett format som:

</think>

  Resonemangsskrid här...
</think>

Slutgiltigt svar här.

Detta gör dem användbara för:

  • Felsöka modellresonemang
  • Forskning i tolkningsbarhet
  • Bygga verktyg som separerar tankar från utdata

Exempel: Använda en tänkande modell

import ollama

response = ollama.chat(
    model="qwen3",
    messages=[
        {"role": "user", "content": "Vad är Australiens huvudstad?"}
    ]
)

content = response['message']['content']

# Eventuellt extrahera "tänkande"-delen
import re
thinking = re.findall(r"</think>

(.*?)