API Ollama vs API OpenAI: endpointy i kod
Pytanie o API Ollama vs API OpenAI sprowadza się do dwóch formatów zapytań i dwóch miejsc uruchomienia modelu. Ollama ma własne API natywne oraz warstwę kompatybilną z OpenAI, więc migracja do endpointu w stylu OpenAI może oznaczać tylko zmianę Base URL i klucza.


Nie potrzeba karty. Po rejestracji zdobądź $0,50 darmowego kredytu próbnego jednym kliknięciem (raz na osobę).
Pobierz klucz APIKluczowe punkty
- Ollama ma endpointy natywne pod /api oraz warstwę kompatybilną z OpenAI pod /v1; klienci napisani pod OpenAI SDK zazwyczaj działają z obiema.
- Ollama natywnie strumieniuje JSON rozdzielony nowymi wierszami, podczas gdy format OpenAI strumieniuje zdarzenia wysłane przez serwer.
- Migracja z lokalnej do hostowanej oznacza zmianę Base URL, klucza i nazwy modelu, a nie kodu.
- Lokalne trzyma dane na Twojej maszynie; hostowane usuwa pracę sprzętową i dodaje rachunek za tokeny.
Krótka wersja
Oba żądają POST listy wiadomości i zwracają tekst. Różnica polega na kształcie zapytania, miejscu serwera i tym, kto płaci za GPU. Ollama uruchamia modele na Twoim komputerze i nasłuchuje na porcie 11434. API OpenAI to usługa hostowana z własnymi płatnymi modelami. W porównaniu Ollama vs OpenAI często pomija się trzecią rzecz: Ollama udostępnia też endpointy kompatybilne z OpenAI, więc formaty się pokrywają.
Ta nakładka sprawia, że migracja jest tania. Jeśli Twoja aplikacja korzysta już z OpenAI SDK, możesz skierować ją dziś na lokalny Ollama, a jutro na hostowany endpoint zgodny z OpenAI. Hostowany endpoint na tej stronie jest jednym z takich. Obsługuje jeden model, uncensored, pod https://api.ollamansfw.com/v1 i nie jest oficjalnym produktem OpenAI, Meta ani żadnego innego laboratorium.
Różnice między endpointami
| Zadanie | Ollama natywny | W stylu OpenAI |
|---|---|---|
| Czat | POST /api/chat | POST /v1/chat/completions |
| Pojedynczy prompt | POST /api/generate | POST /v1/responses lub chat completions |
| Lista modeli | GET /api/tags | GET /v1/models |
| Autoryzacja | Domyślnie brak | Authorization: Bearer klucz API |
| Strumieniowanie | JSON rozdzielony nowymi wierszami | Zdarzenia wysłane przez serwer, kończące się znacznikiem done |
| Nazwa modelu | Cokolwiek pobrałeś, np. llama3 | Wszystko, co wymienia dostawca |
Ollama obsługuje również /v1/chat/completions i /v1/models na tym samym porcie, co pozwala klientom OpenAI na pracę z tym interfejsem. Domyślnie wywołania natywne używają strumieniowania, więc ustaw stream: false, gdy chcesz otrzymać pojedynczą odpowiedź JSON.
Endpoint hostowany implementuje POST /v1/chat/completions, POST /v1/responses i GET /v1/models, a także sprawdzanie salda na GET /v1/balance. Pełną listę znajdziesz w dokumentacji API.
To samo zapytanie na trzy sposoby
Natywne Ollama z Pythona:
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"])OpenAI SDK z ustawieniami lokalnymi i hostowanymi obok siebie. Zmienia się tylko zakomentowana linia:
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)A curl do endpointu hostowanego ze strumieniowaniem:
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}'Parsowanie różni się po stronie natywnej: każda strumieniowana linia to obiekt JSON z message.content, a ostatnia zawiera done: true. W formacie OpenAI każde zdarzenie zaczyna się od data: , zawiera fragment choices[0].delta.content, a strumień kończy się [DONE]. Użycie SDK sprawia, że nie widzisz żadnej z tych różnic.
Gdzie ma to sens
Lokalny Ollama to dobry wybór, gdy prywatność jest najważniejsza, masz GPU z wystarczającą pamięcią dla wybranego modelu lub eksperymentujesz z wieloma modelami. Nic nie opuszcza Twojego komputera i nie ma opłat za tokeny. Koszty to sprzęt, energia i Twój czas. Nasz przewodnik po używaniu Ollama z GUI opisuje przyjazną stronę tej drogi.
Endpoint kompatybilny z OpenAI lepiej pasuje, gdy brakuje sprzętu, potrzebujesz wielu równoległych zapytań, uruchamiasz bota lub usługę dla innych, albo chcesz stabilnego URL, który nie zależy od włączonego laptopa. Pełny klucz pozwala na 8 równoległych zapytań i 300 zapytań na minutę. Okno kontekstu wynosi 100 000 tokenów, co jest więcej niż wiele lokalnych konfiguracji zmieści w pamięci.
Wiele osób używa obu: lokalnie do eksperymentów, a hostowane do tego, co musi być stabilne. Jeśli rozważasz inne narzędzia lokalne, przeczytaj alternatywy dla Ollama.
Migracja z lokalnego Ollama do hostowanego
- Najpierw przejdź na format OpenAI. Jeśli Twój kod wywołuje
/api/chat, zmień go na SDK OpenAI wskazujące na trasę/v1Ollamy. Upewnij się, że nadal działa lokalnie. - Zdobądź klucz. Zarejestruj się i odbierz kredyt próbny $0,50 na stronie kluczy API. Nie wymaga on płatności i trwa 7 dni.
- Zmień trzy wartości. Base URL na
https://api.ollamansfw.com/v1, klucz na swój, model nauncensored. - Sprawdź parametry. Temperatura, top_p, stop, seed i kary są przekazywane dalej. Opcje dostępne tylko lokalnie, takie jak
num_ctxlubkeep_aliveOllamy, nie mają zastosowania; okno kontekstu jest stałe i wynosi 100 000 tokenów. - Dodaj logikę ponownych prób. Hostowane API zwraca 429 z
rate_limitedlubconcurrencypo przekroczeniu limitu oraz 429 zRetry-After: 5podczas tymczasowego przeciążenia. Serwery lokalne rzadko tak robią, więc istniejący kod może tego nie obsługiwać.
Jeśli coś zawiedzie po przełączeniu, artykuł o częstych błędach API Ollama omawia częste przyczyny, takie jak złe porty i brakujące nazwy modeli.
Koszty hostingu i czego nie zrobi
Rozliczenie jest elastyczne, z przedpłaconego kredytu: $0,15 za 1M tokenów wejściowych i $0,50 za 1M tokenów wyjściowych. Tura rozmowy z 1000 tokenami wejściowymi i 400 wyjściowymi kosztuje $0,00015 + $0,0002 = $0,00035, więc $20 starcza na około 57 000 takich tur. Nieudane lub odrzucone zapytania nie są rozliczane, a kredyt nigdy nie wygasa. Doładowania wynoszą od $20 do $500 z bonusami +5% od $50, +10% od $100 i +15% od $200. Płatność tylko kryptowalutami (USDT na TRC20 lub USDC na Base). Więcej na stronie z cenami.
Ograniczenia do zapamiętania: tylko tekst, więc brak embeddingów, generowania obrazów ani fine-tuningu. Jeśli polegasz na lokalnych embeddingach, trzymaj je lokalnie. Model jest dostrojony do odpowiadania bez odrzucania treści dla prawidłowego użycia przez dorosłych. Treści seksualne z udziałem nieletnich są zawsze zabronione. Prompty nie są używane do trenowania.
Więcej przewodników
Pytania i odpowiedzi
Czy API Ollama jest kompatybilne z API OpenAI?
Częściowo. Ollama ma endpointy natywne pod /api oraz udostępnia endpointy w stylu OpenAI, np. /v1/chat/completions, więc klienci OpenAI SDK mogą się z nim komunikować.
Co muszę zmienić, aby przejść z lokalnego Ollama na endpoint hostowany?
Podstawowy URL, klucz API i nazwa modelu. Jeśli twój kod już korzysta z OpenAI SDK, nic innego nie musi się zmienić.
Czy hostowane API obsługuje embeddingi, podobnie jak Ollama?
Nie. To tylko generowanie tekstu: kompletacje czatu i odpowiedzi, bez osadzania, obrazów ani dostrajania.
Czy Ollama jest darmowe?
Oprogramowanie jest darmowe do pobrania i uruchomienia. Nadal płacisz za sprzęt i energię, podczas gdy hostowane API pobiera opłatę za token.