NL ▾
API-sleutel aanvragen

Ollama API vs OpenAI API: Endpoints en Code

De vraag over de ollama api vs openai api komt neer op twee verzoekformaten en twee plekken om een model uit te voeren. Ollama heeft zijn eigen native API en ook een OpenAI-compatible laag, dus het verplaatsen naar een gehost OpenAI-achtig endpoint kan een wijziging van base URL en sleutel inhouden.

Bijgewerkt

Desktopcomputer en cloudserver verbonden door twee lichtbruggen met identieke berichtpakketten
Chatvenster verbonden met zowel een lokale computer als een cloudserver door gloeiende kabels

Geen kaart nodig. Na registratie claim je met één klik $0,50 gratis proeftegoed (eenmaal per persoon).

API-sleutel aanvragen

Belangrijkste punten

  • Ollama heeft native routes onder /api en een OpenAI-compatible laag onder /v1; clients geschreven voor de OpenAI SDK werken meestal met de ene of de andere.
  • Ollama streamt newline-delimited JSON, terwijl het OpenAI-formaat server-sent events streamt.
  • Van lokaal naar gehost gaan betekent de base URL, sleutel en modelnaam aanpassen, niet je code.
  • Lokaal houdt data op je machine; gehost neemt de hardware taken weg en voegt een per-token factuur toe.

De korte versie

Beide vragen je een lijst met berichten te POST en tekst terug te krijgen. Het verschil zit in de vorm van het verzoek, waar de server staat en wie voor de GPU betaalt. Ollama draait modellen op je eigen computer en luistert op poort 11434. De OpenAI API is een gehoste service met eigen betaalde modellen. In de vergelijking tussen de Ollama API en de OpenAI API missen mensen vaak een derde ding: Ollama exposeert ook OpenAI-compatibele routes, dus de twee formaten overlappen.

Die overlap maakt migratie goedkoop. Als je app al het OpenAI SDK gebruikt, kun je het vandaag op een lokale Ollama wijzen en morgen op een gehost OpenAI-compatibel URL. Het gehoste endpoint op deze site is zo'n endpoint. Het serveert één model, uncensored, op https://api.ollamansfw.com/v1, en het is geen officieel product van OpenAI, Meta of een ander lab.

Verschillen per endpoint

TaakOllama nativeOpenAI-style
ChatPOST /api/chatPOST /v1/chat/completions
Enkele promptPOST /api/generatePOST /v1/responses of chatvoltooiingen
ModellenlijstGET /api/tagsGET /v1/models
AuthGeen standaardAuthorization: Bearer sleutel
StreamingNewline-delimited JSONServer-sent events, eindigend met een done-marker
ModelnaamWat je ook hebt opgehaald, zoals llama3Wat de provider opsomt

Ollama serveert ook /v1/chat/completions en /v1/models op dezelfde poort, wat betekent dat OpenAI-clients er tegen kunnen werken. De standaard voor native calls is streamen, dus stel stream: false in als je een enkel JSON-antwoord wilt.

Het gehoste endpoint implementeert POST /v1/chat/completions, POST /v1/responses en GET /v1/models, plus balanscontroles op GET /v1/balance. Zie de API-documentatie voor de volledige lijst.

Hetzelfde verzoek, drie manieren

Native Ollama vanuit Python:

import requests

r = requests.post(
    "http://localhost:11434/api/chat",
    json={
        "model": "llama3",
        "messages": [{"role": "user", "content": "Say hello in five words."}],
        "stream": False,
    },
)
print(r.json()["message"]["content"])

De OpenAI SDK, met lokale en gehoste instellingen naast elkaar. Alleen de commentaarregel verandert:

from openai import OpenAI

# Local Ollama through its OpenAI-compatible layer:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# Hosted endpoint, same code from here on:
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",   # local would be e.g. "llama3"
    messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(resp.choices[0].message.content)

En curl tegen het gehoste endpoint met streaming aan:

curl https://api.ollamansfw.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":true}'

Parseren verschilt aan de native kant: elke gestreamde regel is een JSON-object met message.content, en de laatste heeft done: true. In het OpenAI-formaat begint elk bericht met data: , bevat een choices[0].delta.content stukje, en de stream eindigt met [DONE]. Gebruik het SDK en je ziet er geen van.

Waar elk zijn zin heeft

Lokale Ollama is de juiste keuze als privacy de hoogste prioriteit heeft, als je een GPU hebt met genoeg geheugen voor het model dat je wilt, of als je veel modellen uitprobeert. Niets verlaat je machine en er is geen per-token factuur. Kosten tonen zich als hardware, stroom en je tijd. Onze gids over Ollama gebruiken met een GUI behandelt de vriendelijke kant van die route.

Een gehost OpenAI-compatibel endpoint past beter als je de hardware niet hebt, veel gelijktijdige verzoeken nodig hebt, een bot of service voor anderen draait, of een stabiel URL wilt dat niet afhangt van het feit of je laptop aanstaat. Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 verzoeken per minuut toe. Het contextvenster is 100.000 tokens, wat meer is dan veel lokale setup's in geheugen kunnen houden.

Veel mensen gebruiken beide: lokaal voor experimenten, gehost voor alles wat online moet blijven. Als je andere lokale tools overweegt, lees dan Ollama software alternatieven.

Migreren van lokale Ollama naar gehost

  1. Schakel eerst over naar het OpenAI-formaat. Als je code /api/chat aanroept, verplaats het dan naar de OpenAI SDK die wijst naar Ollama's /v1 route. Controleer of het lokaal nog werkt.
  2. Haal een sleutel. Meld je aan en claim het $0,50 proeftegoed op de API-sleutelpagina. Het vereist geen betaling en duurt 7 dagen.
  3. Verander drie waarden. Base URL naar https://api.ollamansfw.com/v1, sleutel naar die van jou, model naar uncensored.
  4. Controleer parameters. Temperature, top_p, stop, seed en de penalties worden doorgegeven. Lokale opties zoals Ollama's num_ctx of keep_alive gelden niet; het venster is vast op 100.000 tokens.
  5. Voeg retry-logica toe. De gehoste API retourneert 429 met rate_limited of concurrency bij een limiet, en 429 met Retry-After: 5 tijdens tijdelijke overbelasting. Lokale servers doen dat zelden, dus bestaande code behandelt dit misschien niet.

Als er iets misgaat na de switch, behandelt het artikel over veelvoorkomende Ollama API fouten veelvoorkomende oorzaken zoals verkeerde poorten en ontbrekende modelnamen.

Wat de gehoste kosten zijn, en wat het niet zal doen

Facturatie is pay as you go van prepaid tegoed: $0,15 per 1M input tokens en $0,50 per 1M output tokens. Een chatbeurt met 1.000 input en 400 output tokens kost $0,00015 + $0,0002 = $0,00035, dus $20 dekt ongeveer 57.000 zulke beurten. Mislukte of geweigerde verzoeken worden niet in rekening gebracht en tegoed vervalt nooit. Opwaarderingen lopen van $20 tot $500 met bonussen van +5% vanaf $50, +10% vanaf $100 en +15% vanaf $200. Betaling is alleen via crypto (USDT op TRC20 of USDC op Base). Meer op de prijslijst.

Limieten om te weten: alleen tekst, dus geen embeddings, image generatie of fine-tuning. Als je afhankelijk bent van lokale embeddings, houd die dan lokaal. Het model is afgestemd om te antwoorden zonder inhoudelijke weigeringen voor legaal gebruik door volwassenen. Seksuele inhoud met minderjarigen is nooit toegestaan. Prompts worden niet gebruikt voor training.

Vragen en antwoorden

Is de Ollama API compatibel met de OpenAI API?

Gedeeltelijk. Ollama heeft native routes onder /api en serveert ook OpenAI-stijl routes zoals /v1/chat/completions, dus clients van de OpenAI SDK kunnen ermee communiceren.

Wat moet ik aanpassen om van lokale Ollama naar een gehost endpoint te gaan?

De base URL, de API key en de modelnaam. Als je code al het OpenAI SDK gebruikt, hoeft er niets anders te veranderen.

Ondersteunt de gehoste API embeddings zoals Ollama?

Nee. Het is alleen tekstgeneratie: chatvoltooiingen en antwoorden, zonder embeddings, afbeeldingen of fine-tuning.

Is Ollama gratis?

De software is gratis te downloaden en uit te voeren. Je betaalt nog steeds voor hardware en stroom, terwijl een gehoste API per token rekent.