Integrare Ollama met Python: Voorbeelden van REST API en Python-client

+ Specifieke Voorbeelden met Denkende LLMs

Inhoud

In dit bericht verkennen we twee manieren om uw Python-toepassing te verbinden met Ollama: 1. Via de HTTP REST API; 2. Via de officiële Ollama Python-bibliotheek.

We behandelen zowel chat als generate-oproepen en bespreken vervolgens hoe u “denkmodellen” effectief kunt gebruiken.

ollama and python

Ollama is snel een van de handigste manieren geworden om grote taalmodellen (LLMs) lokaal uit te voeren. Met zijn eenvoudige interface en ondersteuning voor populaire open modellen zoals Llama 3, Mistral, Qwen2.5 en zelfs “denk” varianten zoals qwen3, is het gemakkelijk om AI-mogelijkheden rechtstreeks in uw Python-projecten te integreren — zonder afhankelijkheid van externe cloud-API’s.


🧩 Voorwaarden

Voordat u begint, zorg ervoor dat u de volgende items heeft:

  • Ollama geïnstalleerd en lokaal draaiend (ollama serve)
  • Python 3.9+
  • Vereiste afhankelijkheden:
pip install requests ollama

Controleer of Ollama draait door het volgende uit te voeren:

ollama list

U zou beschikbare modellen moeten zien zoals llama3, mistral of qwen3.


⚙️ Optie 1: Gebruik van de REST API van Ollama

De REST API is ideaal wanneer u maximale controle wilt of wanneer u integreert met frameworks die al HTTP-verzoeken afhandelen.

Voorbeeld 1: Chat API

import requests
import json

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

payload = {
    "model": "llama3.1",
    "messages": [
        {"role": "system", "content": "U bent een Python-assistent."},
        {"role": "user", "content": "Schrijf een functie die een string omkeert."}
    ]
}

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

👉 De REST API van Ollama stroomt antwoorden regel voor regel (vergelijkbaar met de streaming API van OpenAI). U kunt inhoud ophopen of deze in real-time weergeven voor chatbots of CLI-tools.


Voorbeeld 2: Generate API

Als u geen chatcontext of rollen nodig heeft, gebruikt u het eenvoudigere /api/generate-eindpunt:

import requests

url = "http://localhost:11434/api/generate"
payload = {
    "model": "llama3.1",
    "prompt": "Leg recursie uit in één zin."
}

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

Dit eindpunt is geweldig voor eenmalige tekstgeneratietaken — samenvattingen, codesnippets, enzovoort.


🐍 Optie 2: Gebruik van de Ollama Python-bibliotheek

De Ollama Python-client biedt een schoonere interface voor ontwikkelaars die volledig in Python willen blijven werken.

Voorbeeld 1: Chat API

import ollama

response = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "system", "content": "U bent een code-assistent."},
        {"role": "user", "content": "Genereer een Python-script dat alle bestanden in een map lijst."}
    ]
)

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

Dit retourneert het eindbericht als een dictionary. Als u streaming wilt, kunt u over de chatstream itereren:

stream = ollama.chat(
    model="llama3.1",
    messages=[
        {"role": "user", "content": "Schrijf een haiku over recursie."}
    ],
    stream=True
)

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

Voorbeeld 2: Generate API

import ollama

output = ollama.generate(
    model="llama3.1",
    prompt="Samenvatten het concept van decorators in Python."
)

print(output['response'])

Of stroom het resultaat:

stream = ollama.generate(
    model="llama3.1",
    prompt="Lijst drie voordelen van het gebruik van Python voor AI-projecten.",
    stream=True
)

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

🧠 Werken met “Denk” Modellen

Ollama ondersteunt “denkmodellen” zoals qwen3, ontworpen om hun tussenliggende redeneringsstappen te tonen. Deze modellen produceren gestructureerde uitvoer, vaak in een formaat zoals:

<think>
  Redeneringsstappen hier...
</think>
Eindantwoord hier.

Dit maakt ze nuttig voor:

  • Debuggen van modelredenering
  • Onderzoek naar interpreteerbaarheid
  • Bouwen van tools die gedachte scheiden van uitvoer

Voorbeeld: Gebruik van een Denkmodel

import ollama

response = ollama.chat(
    model="qwen3",
    messages=[
        {"role": "user", "content": "Wat is de hoofdstad van Australië?"}
    ]
)

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

# Optioneel "denken" deel extraheren
import re
thinking = re.findall(r"<think>(.*?)</think>", content, re.DOTALL)
answer = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL)

print("🧠 Gedachteproces:\n", thinking[0].strip() if thinking else "N/A")
print("\n✅ Eindantwoord:\n", answer.strip())

Wanneer Denkmodellen Gebruiken

Toepassingsgebied Aanbevolen Model Waarom
Interpreteerbaarheid / Debuggen qwen3 Zie redeneringstralen
Prestatiegevoelige apps qwen3 non-thinking mode Sneller, minder uitvoerig
Educatief / Uitleggend qwen3 Toont stap-voor-stap logica

✅ Samenvatting

Taak REST API Python Client
Eenvoudige tekstgeneratie /api/generate ollama.generate()
Conversationele chat /api/chat ollama.chat()
Streaming ondersteuning Ja Ja
Werkt met denkmodellen Ja Ja

De lokaal-gerichte ontwerp van Ollama maakt het ideaal voor veilige, offline of privacygevoelige AI-toepassingen. Of u nu een interactieve chatbot bouwt of een achtergronddienst voor data-verrijking, kunt u LLMs naadloos in uw Python-workflow integreren — met volledige controle over modellen, vertraging en gegevens.