Optymalizacja kosztówAnaliza
Ile tokenów zużywa żądanie API? Zmierzone na 3 zadaniach
Prawdziwe liczby zużycia z DeepSeek-V4-Flash: krótkie pytanie, streszczenie akapitu i e-mail do JSON, z kosztem 1 000 żądań i skryptem do własnych promptów.

Na tej stronie
Zapytaj, ile kosztuje jedno żądanie do API AI, a zwykle usłyszysz „to zależy”. Zależy, ale nie da się na tym oprzeć budżetu. Wzięliśmy więc trzy codzienne zadania, wysłaliśmy je do DeepSeek-V4-Flash przez API CheapTokens 23 października 2026 i zapisaliśmy, co za każdym razem mówiło pole usage.
W skrócie: szybkie pytanie wyszło 110 tokenów, streszczenie akapitu 396, a zamiana e-maila w JSON 299. Poniżej opis każdego żądania, co wróciło i ile to kosztuje.
Szybkie pytanie#
Zaczęliśmy od czegoś, o co ludzie pytają asystentów czatu bez przerwy: różnica między git merge a git rebase, w dwóch lub trzech zdaniach.

Pytanie zajęło 23 tokeny, odpowiedź 87. To pierwsza rzecz warta uwagi: odpowiedź jest prawie cztery razy dłuższa niż pytanie, a to strona wyjściowa kosztuje więcej — w MiniMax-M2.7 obecnie $0.15 za 1 mln tokenów wyjściowych wobec $0.05 za wejściowe. Przy tych stawkach jedno takie żądanie kosztuje $0.000014. Tysiąc takich: $0.0142.
Oto dokładnie to żądanie, jeśli chcesz zobaczyć liczby na własnym ekranie:
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": "What is the difference between git merge and git rebase? Answer in two or three sentences."}
],
"max_tokens": 2048,
"temperature": 0.2
}'Liczby siedzą w bloku usage na końcu odpowiedzi: prompt_tokens to to, co wysłałeś, completion_ to to, co napisał model, total_tokens to oba razem.
Streszczenie i tokeny, których nie czytasz#
Drugie zadanie: sprowadzić krótki raport o incydencie do dwóch zdań. Zespoły przepuszczają przez model takie rzeczy przez cały dzień: zgłoszenia, raporty, długie wątki e-mailowe. Oto prompt:
Summarize this incident report in two sentences.
On Tuesday between 14:05 and 14:50 UTC the checkout API returned errors for about 6% of requests. The cause was a configuration change deployed at 13:58 that lowered the database connection pool from 50 to 5 connections per instance. Under normal load nobody noticed, but when the afternoon traffic peak arrived, requests queued for a free connection and timed out after 30 seconds. The on-call engineer saw the growing p99 latency at 14:12, found the change in the deploy log at 14:31 and rolled it back at 14:44. To prevent a repeat, the pool size is now validated in CI against a minimum value, and an alert fires when more than 20 requests wait for a connection for two minutes.A odpowiedź:
We wtorek zmiana konfiguracji, która zmniejszyła pulę połączeń do bazy z 50 do 5, spowodowała błędy API płatności dla około 6% żądań w szczycie popołudniowym, dopóki nie została wycofana o 14:44. Aby zapobiec nawrotom, rozmiar puli jest teraz walidowany w CI, a alert uruchamia się, gdy czasy oczekiwania na połączenie przekroczą progi.
Dwa zdania, 331 znaków i 146 tokenów wyjściowych. To wyglądało na dużo przy tak krótkim tekście, a odpowiedź wyjaśniła dlaczego: usage miało jeszcze jedno pole, reasoning_. Przed odpowiedzią model zużył 76 tokenów na przemyślenie tego. Są częścią tych 146 (250 we + 146 wy = 396 łącznie), więc około połowa wyjścia poszła na rozumowanie, które nie jest częścią tekstu odpowiedzi, a jest rozliczane jak każdy inny token wyjściowy.
Warto o tym wiedzieć, planując budżet: w zadaniach, w których model zatrzymuje się, by pomyśleć, wyjście może być zauważalnie większe niż tekst, który dostajesz z powrotem. Tysiąc takich streszczeń kosztuje $0.0344.
E-mail na wejściu, czysty JSON na wyjściu#
Trzecie zadanie: potwierdzenie zamówienia, które musi stać się rekordem w bazie danych.

Model zwrócił dokładnie te klucze, o które prosiliśmy, i nic wokół nich, żadnego „Oto twój JSON”. Suma zgadza się z e-mailem, a data dostawy wróciła jako 2026-11-03, już w formacie, o który prosiliśmy. 199 tokenów na wejściu, 100 na wyjściu.
Rzuca się w oczy gęstość: 100 tokenów na 276 znaków JSON, podczas gdy odpowiedź o git zajęła 87 tokenów na 421 znaków zwykłego tekstu. Cudzysłowy, nawiasy klamrowe i przecinki też są tokenami, więc wyjście strukturalne kosztuje więcej na znak niż proza. Tysiąc takich e-maili: $0.025.
Wszystkie trzy obok siebie#
Przewiń tabelę w prawo →
| Zadanie | Tokeny we | Tokeny wy | 1 000 żądań |
|---|---|---|---|
| Szybkie pytanie | 23 | 87 | $0.0142 |
| Streszczenie | 250 | 146 | $0.0344 |
| E-mail do JSON | 199 | 100 | $0.025 |
Koszty są obliczone z tych liczb tokenów przy obecnej cenie MiniMax-M2.7, więc pozostają prawidłowe, gdy ceny się zmienią.
Wyjście wygrywa w każdym zadaniu, nawet w streszczeniu, gdzie wysłaliśmy więcej, niż dostaliśmy z powrotem. Najłatwiejsza dźwignia na rachunku to więc długość odpowiedzi: „w dwóch lub trzech zdaniach” albo „zwróć tylko JSON” naprawdę działa.
Dla skali: bot wsparcia, który odpowiada na 2 000 szybkich pytań dziennie, każde jak pierwsze, wydaje około $0.852 miesięcznie na MiniMax-M2.7. Prawdziwy czat odsyła swoją historię w każdej turze, więc wejście rośnie z każdą wiadomością, ale przy jednorazowych pytaniach to cały rachunek.
Wypróbuj na własnych promptach#
Twoje prompty trafią na inne liczby, a sprawdzenie zajmuje minutę. Ten skrypt wysyła każdy prompt, pomija odpowiedzi, które zostały ucięte, i wypisuje tokeny oraz koszt 1 000 żądań:
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.cheaptokens.dev/v1", api_key=os.environ["CHEAPTOKENS_API_KEY"])
MODEL = "MiniMaxAI/MiniMax-M2.7"
PRICE_IN, PRICE_OUT = 1.00, 4.00 # USD per 1M tokens: example values, use the current ones from the price list
PROMPTS = [
"What is the difference between git merge and git rebase? Answer in two or three sentences.",
# add your own prompts here
]
for prompt in PROMPTS:
r = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": prompt}],
max_tokens=2048,
temperature=0.2,
)
if r.choices[0].finish_reason != "stop":
print("cut off at max_tokens, raise the limit:", prompt[:40])
continue
tin, tout = r.usage.prompt_tokens, r.usage.completion_tokens
per_1000 = (tin * PRICE_IN + tout * PRICE_OUT) * 1000 / 1_000_000
print(f"{tin} in, {tout} out, 1,000 requests = ${per_1000:.4f} | {prompt[:40]}")Wstaw aktualne ceny do PRICE_IN i PRICE_OUT: dla MiniMax-M2.7 to $0.05 za 1 mln tokenów wejściowych i $0.15 za 1 mln tokenów wyjściowych. Pierwszy prompt to ten z naszego testu; liczby tokenów różnią się nieco między modelami, więc spodziewaj się wartości w podobnym zakresie co 23 we i 87 wy. Będziesz potrzebować pakietu openai (pip install openai) i swojego klucza w CHEAPTOKENS_.
Jeśli jakaś liczba wygląda dziwnie: finish_ oznacza, że odpowiedź trafiła w max_tokens (dlaczego odpowiedzi urywają się w połowie zdania); duże reasoning_tokens wyjaśnia wyjście większe niż tekst; a pełny wzór na ceny wejścia i wyjścia jest w tokeny wejściowe vs wyjściowe.
Od czego zacząć#
Łącznie, licząc wejście i wyjście razem, MiniMax-M2.7 w CheapTokens jest tańszy niż cena referencyjna OpenRouter dla wszystkich trzech powyższych zadań. Ma kontekst 180K, odpowiedzi do 8 192 tokenów i jedną cenę o każdej porze. Doładuj saldo, utwórz klucz i wyślij żądanie curl z góry tej strony: dokumentacja opisuje klucz i bazowy URL, strona DeepSeek zawiera katalog modeli, a cennik ma aktualną listę cen.



