De Ollama API koppelen aan je eigen applicatie opent de deur naar automatisering met lokale AI. Ollama draait een lokale server op poort 11434 die je vanuit elke programmeertaal kunt aanroepen. In dit artikel zie je hoe je dat doet met praktische voorbeelden.
De basis van de Ollama API
Zodra Ollama draait, luistert het op http://localhost:11434. De belangrijkste endpoints zijn /api/generate voor losse prompts, /api/chat voor gesprekken met geschiedenis, en het OpenAI-compatibele /v1/chat/completions endpoint. Je stuurt een JSON-verzoek en krijgt een JSON-antwoord terug.
Twee API-stijlen
Ollama biedt zowel zijn eigen native API als een OpenAI-compatibele laag. De native API geeft je toegang tot Ollama-specifieke functies, terwijl de OpenAI-laag handig is om bestaande software zonder aanpassing te laten werken.
In de voorbeelden hieronder gebruiken we het model llama3.2. Vervang dat gerust door een model dat jij hebt gedownload, bijvoorbeeld gemma3 of qwen3. Welke modellen lokaal beschikbaar zijn, controleer je met ollama list of via het /api/tags endpoint.
Een eerste verzoek
Het eenvoudigste verzoek stuur je met curl vanuit de terminal:
curl http://localhost:11434/api/generate -d '{"model":"llama3.2","prompt":"Leg uit wat een API is","stream":false}'
Met stream op false krijg je het hele antwoord in een keer. Zet je stream op true, dan komt het antwoord stukje voor stukje binnen, wat fijn is voor een chatinterface.
Koppelen vanuit Python en JavaScript
In de praktijk roep je de API aan vanuit code. Hieronder zie je hetzelfde verzoek in twee populaire talen.
Python
Gebruik de requests-bibliotheek voor een simpel verzoek:
import requests
r = requests.post('http://localhost:11434/api/generate', json={
'model': 'llama3.2',
'prompt': 'Hallo',
'stream': False,
})
print(r.json()['response'])
Voor productie kun je de officiele ollama-bibliotheek voor Python gebruiken, die dit netjes inpakt en streaming eenvoudiger maakt.
JavaScript
Gebruik fetch in Node of de browser:
const res = await fetch('http://localhost:11434/api/generate', {
method: 'POST',
body: JSON.stringify({ model: 'llama3.2', prompt: 'Hallo', stream: false }),
});
const data = await res.json();
console.log(data.response);
Er is ook een officiele ollama-bibliotheek voor JavaScript die streaming en gesprekken met geschiedenis eenvoudiger maakt.
De OpenAI-compatibele endpoint
Heb je al code die met de OpenAI-API werkt? Dan hoef je vaak alleen de basis-URL te wijzigen. Wijs je OpenAI-client naar http://localhost:11434/v1 en gebruik een willekeurige API-sleutel, en je software praat met je lokale model.
from openai import OpenAI
client = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')
antwoord = client.chat.completions.create(
model='llama3.2',
messages=[{'role': 'user', 'content': 'Hallo'}],
)
print(antwoord.choices[0].message.content)
Snel van cloud naar lokaal
Dit is de snelste manier om een bestaande applicatie van de cloud naar lokaal te verhuizen. Verander de base_url en het modelveld, en de rest van je code blijft hetzelfde. Ideaal om te testen of lokaal voor jou werkt zonder je hele app te herschrijven.
De compatibiliteit dekt veel voorkomende functies zoals chat completions, tools en embeddings, maar niet elk randgeval van de OpenAI-API. Test dus per functie of het gedrag is wat je verwacht.
Streaming verwerken
Voor een soepele gebruikerservaring wil je antwoorden stukje voor stukje tonen. Met streaming krijg je een reeks JSON-regels binnen, elk met een stukje tekst. De volgorde is steeds dezelfde:
- Verzoek met stream: stuur het verzoek met
streamoptrue. - Regels lezen: lees de binnenkomende JSON-regels een voor een.
- Tekst samenvoegen: plak de
response-velden achter elkaar. - Tonen aan gebruiker: toon de tekst terwijl die binnenkomt.
De laatste regel bevat het veld done met de waarde true, zodat je weet dat het antwoord compleet is.
Stel de API niet open zonder beveiliging
De Ollama API heeft standaard geen authenticatie omdat hij voor lokaal gebruik is bedoeld. Stel hem nooit zonder extra beveiliging bloot aan het internet, want iedereen die de poort kan bereiken, kan dan je model aanspreken. Zet er bij externe toegang minimaal een reverse proxy met authenticatie voor.
Modellen kiezen via de API
Je kunt per verzoek een ander model kiezen door het model-veld aan te passen. Met een verzoek aan /api/tags krijg je een lijst van beschikbare modellen terug, zodat je applicatie dynamisch kan kiezen welk model het gebruikt. Met de omgevingsvariabele OLLAMA_HOST stel je in op welk adres en welke poort de server luistert.
Op welke poort draait de Ollama API?
Standaard op poort 11434 op localhost. Je kunt het adres en de poort aanpassen met de omgevingsvariabele OLLAMA_HOST.
Werkt mijn bestaande OpenAI-code met Ollama?
Vaak wel, via het /v1 endpoint. Wijzig de basis-URL naar http://localhost:11434/v1 en pas het modelveld aan, dan blijft de meeste code werken. Niet elk randgeval van de OpenAI-API wordt ondersteund, dus test per functie.
Ondersteunt de API streaming?
Ja, zet stream op true in je verzoek. Je krijgt het antwoord dan in stukjes binnen, ideaal voor chatinterfaces.
Heb ik een API-sleutel nodig?
Voor lokaal gebruik niet. De OpenAI-compatibele laag verwacht wel een sleutelveld, maar de waarde mag willekeurig zijn, bijvoorbeeld ollama.
Wat is het verschil tussen /api/generate en /api/chat?
Gebruik /api/generate voor een losse prompt zonder context. Gebruik /api/chat als je een gesprek met geschiedenis wilt voeren, waarbij je eerdere berichten meestuurt in het messages-veld.
Hoe weet mijn applicatie welke modellen beschikbaar zijn?
Stuur een verzoek aan /api/tags. Je krijgt een lijst terug met de modellen die lokaal gedownload zijn, zodat je dynamisch kunt kiezen welk model je gebruikt.
Met de Ollama API bouw je je eigen AI-toepassingen volledig lokaal. Verdiep je verder in een RAG-pipeline met eigen documenten of een kant-en-klare webinterface.