Integration av Ollama med Python: Exempel på REST-API och Python-klienter
+ Specifika exempel med tänkande LLMs
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 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:
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
- https://pypi.org/project/ollama/
- Ollama cheatsheet
- Python Cheatsheet
- Installera och konfigurera Ollama
- Begränsa LLMs med strukturerad output: Ollama, Qwen3 & Python eller Go
- Jämförelse av strukturerad outputkontroll hos populära LLM-leverantörer - OpenAI, Gemini, Anthropic, Mistral och AWS Bedrock
- Ollama GPT-OSS Strukturerad Output-problem
- Hur Ollama hanterar parallella förfrågningar
- Test: Minnesallokering och modellplanering i Ollama ny version - v0.12.1