AI dla początkującychPrzewodnik
API zgodne z OpenAI: czym jest base_url i jak przełączyć
API zgodne z OpenAI przyjmuje te same żądania co OpenAI. Zmień base_url, klucz i identyfikator modelu, a Twój kod wyśle pierwsze żądanie do CheapTokens.

Na tej stronie
API zgodne z OpenAI to API, które przyjmuje żądania w tym samym formacie co Chat Completions API OpenAI i odpowiada w tym samym formacie. Aby przenieść aplikację do innego dostawcy, zwykle zmieniasz trzy wartości: base_url (dokąd trafiają żądania), klucz API oraz identyfikator modelu. Reszta kodu, w tym lista wiadomości i sposób odczytywania odpowiedzi, pozostaje bez zmian.
Ten przewodnik wyjaśnia tę ideę prostymi słowami i kończy się działającym pierwszym żądaniem do CheapTokens w Pythonie i curl. Informacje o CheapTokens zostały zweryfikowane z jego dokumentacją 22 października 2026.
Co oznacza „zgodne z OpenAI”?#
API to zestaw reguł komunikacji z usługą przez internet (jeśli to nowe słowo, zacznij od jak działa Twoje pierwsze żądanie API). Format czatu OpenAI stał się wspólnym standardem: wielu dostawców i narzędzi przyjmuje to samo ciało żądania i zwraca ten sam kształt odpowiedzi. Takie API nazywa się zgodnym z OpenAI.
W praktyce oznacza to, że trzy rzeczy są takie same u każdego zgodnego dostawcy:
- Żądanie: ciało JSON z polem
modeli listąmessages, gdzie każda wiadomość marole(system,userlubassistant) icontent. - Ścieżka endpointu:
/, dodawana po bazowym URL.chat/ completions - Odpowiedź: obiekt JSON, w którym wygenerowany tekst znajduje się w
choices[0]..message. content
Ponieważ format jest wspólny, oficjalne SDK i wiele aplikacji może komunikować się z dowolnym zgodnym dostawcą. Muszą tylko wiedzieć, gdzie wysłać żądanie.
Czym jest base_url?#
base_url to adres, od którego zaczyna się każde żądanie. SDK buduje pełny adres, dodając do niego ścieżkę wywołania.
Przewiń tabelę w prawo →
| Część | Przykład |
|---|---|
base_url |
https:/ |
| Ścieżka dodawana przez SDK | / |
| Pełny adres żądania | https:/ |
Więc gdy ustawisz inny base_url, ten sam kod wysyła ten sam rodzaj żądania do innego serwera. Bazowy URL CheapTokens to https:/. Jego API jest zgodne z OpenAI Chat Completions oraz Anthropic Messages, a jedno przedpłacone saldo obejmuje wszystkie modele.
Trzy wartości, które zmieniasz#
Przewiń tabelę w prawo →
| Wartość | Co to jest | Skąd pochodzi |
|---|---|---|
base_url |
Adres API | https:/ |
| Klucz API | Twoje tajne hasło do API | Twoje konto CheapTokens. Zobacz czym jest klucz API i jak go bezpiecznie przechowywać |
| Identyfikator modelu | Dokładna nazwa modelu w polu model |
Dokumentacja CheapTokens |
Identyfikator modelu zasługuje na uwagę. Różni dostawcy nadają temu samemu modelowi różne identyfikatory, więc identyfikator z innej usługi tu nie zadziała. Bierz identyfikatory z dokumentacji CheapTokens. Obecnie dostępne identyfikatory:
Przewiń tabelę w prawo →
| Model | Identyfikator modelu | Kontekst | Maks. wyjście na odpowiedź |
|---|---|---|---|
| GLM-5.3-Flash | zai- |
390K | 8 192 tokeny |
| DeepSeek-V4-Flash | deepseek- |
380K | 32 768 tokenów |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8 192 tokeny |
DeepSeek-V4-Flash zwraca do 32 768 tokenów na odpowiedź i ma kontekst 380K; GLM-5.3-Flash ma kontekst 390K; MiniMax-M2.7 ma kontekst 180K. Wszystkie trzy są rozliczane z tego samego salda, więc przełączanie między nimi oznacza zmianę tylko identyfikatora modelu.
Pierwsze żądanie w Pythonie#
Zainstaluj pakiet openai, a następnie przechowuj klucz w zmiennej środowiskowej zamiast wpisywać go do kodu:
pip install openai
export CHEAPTOKENS_API_KEY="YOUR_CHEAPTOKENS_KEY"Teraz kod. Jedyna różnica względem standardowego przykładu OpenAI to argument base_url, klucz i identyfikator modelu:
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1", # 1. where requests go
api_key=os.environ["CHEAPTOKENS_API_KEY"], # 2. your CheapTokens key
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7", # 3. model id from the docs
messages=[
{"role": "system", "content": "You answer briefly."},
{"role": "user", "content": "Explain base_url in one sentence."},
],
)
print(response.choices[0].message.content)Klucz w przykładzie to placeholder: zastąp YOUR_ własnym kluczem i nigdy nie commituj prawdziwego klucza do repozytorium.
Jeśli aplikacja, którą już masz, odczytuje ustawienia z pliku konfiguracyjnego lub zmiennych środowiskowych, nie musisz w ogóle edytować jej kodu. Poszukaj pól o nazwie base URL, API base lub endpoint i wpisz tam te same trzy wartości.
To samo żądanie z curl#
curl pokazuje, co SDK robi pod spodem: bazowy URL plus ścieżkę, klucz w nagłówku Authorization i ciało JSON.
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMaxAI/MiniMax-M2.7",
"messages": [
{"role": "user", "content": "Explain base_url in one sentence."}
]
}'Co powinieneś zobaczyć#
Gdy wszystko jest ustawione poprawnie, skrypt Pythona wypisuje krótką odpowiedź tekstową, a curl wypisuje obiekt JSON. Poszukaj listy choices: tekst odpowiedzi znajduje się w choices[0].. Jeśli to widzisz, Twoje pierwsze żądanie do CheapTokens zadziałało i możesz przejść do swojej prawdziwej aplikacji.
Ile to kosztuje?#
Rozliczanie odbywa się za tokeny, liczone osobno dla wejścia i wyjścia (zobacz tokeny wejściowe vs wyjściowe). Na przykład MiniMax-M2.7 kosztuje obecnie $0.05 za 1M tokenów wejściowych i $0.15 za 1M tokenów wyjściowych. Poniższa tabela zawsze pokazuje aktualne ceny wszystkich modeli, bez dopłat w godzinach szczytu.
| Model | Kontekst | Wejście $/1M | Wyjście $/1M | OpenRouter wejście | OpenRouter wyjście |
|---|---|---|---|---|---|
| GLM-5.3-Flash reasoning | 390K | $0.02 | $0.04 | $0.0413 | $0.0758 |
| DeepSeek-V4-Flash | 380K | $0.015 | $0.10 | $0.0475 | $0.1568 |
| MiniMax-M2.7 | 180K | $0.05 | $0.15 | $0.30 | $1.20 |
Ceny w USD za 1 mln tokenów. Dane OpenRouter służą do porównania i mogą ulec zmianie.
Ceny pełnej listy modeli są również na stronie cennika CheapTokens.
Jeśli nie działa#
- Błąd uwierzytelniania (zwykle 401): brakuje klucza, jest błędnie wpisany lub ma dodatkowe spacje. Sprawdź, czy zmienna środowiskowa jest ustawiona w tym samym terminalu, w którym uruchamiasz skrypt.
- „Not found” (zwykle 404): sprawdź
base_url. Musi kończyć się na/v1, a przy korzystaniu z SDK nie powinieneś sam dodawać/, bo ścieżka się podwoi.chat/ completions - Nieznany model: skopiuj identyfikator modelu dokładnie z powyższej tabeli lub z dokumentacji, łącznie z wielkimi literami i częścią przed ukośnikiem.
- Brak połączenia lub timeout: zobacz typowe błędy połączenia i jak je naprawić.
- Odpowiedź ucięta w połowie zdania: osiągnięto limit
max_tokens, co opisano w dlaczego odpowiedź AI urywa się w połowie zdania.
Następne kroki#
Gdy pierwsze żądanie zadziała, możesz dodać streaming w Pythonie, wpisać te same trzy wartości do swojego edytora lub agenta albo przeczytać jak czytać nazwy modeli AI. Szczegóły konfiguracji i pełna lista modeli są w dokumentacji CheapTokens.



