Integration av Ollama med Python: Exempel på REST-API och Python-klienter

+ Specifika exempel med tänkande LLMs

Sidinnehåll

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

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

ollama och python

Ollama har snabbt blivit ett av de mest bekväma sätten att köra stora språkmodeller (LLMs) lokalt. Med sitt enkla gränssnitt och stöd för populära öppna modeller som Llama 3, Mistral, Qwen2.5, och till och med “tänkande” varianter som qwen3, är det lätt att integrera AI-funktioner direkt i dina Python-projekt — utan att förlita sig på externa moln-API:er.


🧩 Förutsättningar

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

  • Ollama installerat och körande 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’s REST API

REST API:et är idealiskt när du vill ha maximal kontroll eller när du integrerar med ramverk som redan hanterar HTTP-förfrågningar.

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 på 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 rad för rad (liknande OpenAI:s strömnings-API). Du kan ackumulera innehåll eller visa det i realtid för chatbotar eller CLI-verktyg.


Exempel 2: Generate API

Om du inte behöver chat-sammanhang eller roller, använd det enklare /api/generate-endpunkten:

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 endpunkten är bra för enskilda textgenereringar — sammanfattningar, kodfragment, etc.


🐍 Alternativ 2: Använda Ollama Python-biblioteket

Ollama Python-klienten erbjuder ett renare gränssnitt för utvecklare som föredrar att stanna helt inom 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 ett Python-skript som listar alla filer i en katalog."}
    ]
)

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

Det här returnerar det slutliga meddelandet som en dictionary. Om du vill ha strömning kan du iterera över chat-strö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 med dekoratörer 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, utformade för att visa sina mellanliggande resonemangsteg. Dessa modeller producerar strukturerad output, ofta i ett format som:

<think>
  Resonemangsteg här...
</think>
Slutligt svar här.

Det här gör dem användbara för:

  • Felsökning av modellresonemang
  • Forskning inom tolkningsbarhet
  • Bygga verktyg som skiljer tanke från output

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']

# Valfritt extrahera "tänkande" del
import re
thinking = re.findall(r"<think>(.*?)</think>", content, re.DOTALL)
answer = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL)

print("🧠 Tankesätt:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Slutligt svar:\n", answer.strip())

När man ska använda tänkande modeller

Användningsområde Rekommenderad modell Varför
Tolkningsbarhet / Felsökning qwen3 Visa resonemangsspår
Prestanda-känsliga appar qwen3 icke-tänkande läge Snabbare, mindre verbos
Utbildande / Förklarande qwen3 Visar steg-för-steg-logik

✅ Sammanfattning

Uppgift REST API Python-klient
Enkel textgenerering /api/generate ollama.generate()
Konversationell chat /api/chat ollama.chat()
Stöd för strömning Ja Ja
Fungerar med tänkande modeller Ja Ja

Ollama’s lokalförsta design gör den idealisk för säkra, offline- eller integritetsmedvetna AI-applikationer. Oavsett om du bygger en interaktiv chatbot eller en bakgrundstjänst för databerikning kan du integrera LLMs smidigt i ditt Python-flöde — med full kontroll över modeller, latens och data.

Användbara länkar