Powrót do bloga

AI dla początkującychPrzewodnik

Reasoning effort i tokeny myślenia: dlaczego myślenie kosztuje więcej

Tokeny myślenia są rozliczane jako wyjście. Co oznaczają poziomy effort, co wpisać w max_tokens, żeby odpowiedź nie została ucięta, i jak oszacować rachunek.

Autor: CheapTokens TeamOpublikowano 6 min czytania

Karta czatu: dlaczego jednowierszowa odpowiedź kosztowała tak dużo? Bo model najpierw myślał, a myślenie jest rozliczane jako wyjście
Na tej stronie
  1. Co model robi, zanim odpowie
  2. Effort: pokrętło myślenia
  3. Pułapka pustej odpowiedzi: myślenie liczy się do max_tokens
  4. Co długie rozumowanie robi z rachunkiem
  5. Który effort do jakiego zadania
  6. Przenoszenie starego zapytania: błąd 400
  7. Agenci i długie czaty: wybierz jeden poziom i się go trzymaj
  8. Wypróbuj to na własnym zapytaniu

Twoje zapytanie było jednym pytaniem faktograficznym. Odpowiedź miała trzy linijki. Licznik wyjścia pokazuje tysiące tokenów. To nie błąd: przed udzieleniem odpowiedzi wiele modeli myśli w ukrytym notatniku, a te tokeny myślenia są rozliczane jako tokeny wyjściowe. Ustawienie effort decyduje, ile tego myślenia nastąpi, a max_tokens musi zostawić na to miejsce, inaczej dostaniesz uciętą lub pustą odpowiedź.

Co model robi, zanim odpowie#

Pomyśl o egzaminie. Możesz od razu napisać odpowiedź albo najpierw zapełnić stronę brudnopisu. Brudnopis często daje lepszy wynik w trudnym zadaniu, ale papier nie jest darmowy. Rozumowanie to ten brudnopis i jest liczone w tokenach jak wszystko inne.

Dokumentacja Anthropic dotycząca extended thinking (sprawdzona 23 października 2026) mówi, że tokeny myślenia są częścią rozliczanych tokenów wyjściowych, a odpowiedź podaje ich liczbę: usage.output_tokens_details.thinking_tokens. Załóżmy, że odpowiedź wraca z takim blokiem usage (przykładowe liczby):

json
"usage": {
  "input_tokens": 480,
  "output_tokens": 2150,
  "output_tokens_details": { "thinking_tokens": 1900 }
}

Płacisz za 2 150 tokenów wyjściowych. Myślenie zajęło 1 900 z nich, więc tekst, który faktycznie czytasz, to 2 150 − 1 900 = 250 tokenów. To samo dotyczy sytuacji, gdy tekst myślenia nie jest ci zwracany: nadal się liczy. Jeśli najpierw chcesz mieć wyjaśnioną różnicę między wejściem a wyjściem, zacznij od input vs output tokens.

Effort: pokrętło myślenia#

W API Claude'a tym pokrętłem jest output_config.effort. Strona Anthropic dotycząca effort (sprawdzona 23 października 2026) wymienia pięć poziomów: low, medium, high, xhigh, max. Dla początkującego liczą się trzy szczegóły:

  • Wpływa na każdy token wyjściowy, nie tylko myślenie: tekst, wywołania narzędzi i myślenie razem.
  • To sygnał behawioralny, nie ścisły budżet. Niższy effort oznacza mniej tokenów kosztem pewnych możliwości; przy niskim effort Claude może całkowicie pominąć myślenie w prostym zadaniu.
  • Domyślnie jest to medium w Claude Opus 5.5 i Claude Haiku 5.5 oraz high w większości innych modeli obsługujących ten parametr. Ustawienie domyślnej wartości wprost jest tym samym co pominięcie jej.

Poziomy są kalibrowane osobno dla każdego modelu, więc high w jednym modelu to nie taka sama ilość myślenia jak high w innym, a nie każdy model przyjmuje każdy poziom. W jednym opublikowanym filmie ktoś uruchomił każdy poziom effort Claude Opus 5.5 na tym samym zadaniu motion graphics i porównał obrazy. To dobry sposób, by zobaczyć, co daje więcej myślenia. Nie powie ci jednak, ile zapłacisz, bo twoje zadanie nie jest ich zadaniem.

Zapytanie o proste pytanie, z obniżonym effort:

json
{
  "model": "claude-opus-5-5",
  "max_tokens": 4000,
  "output_config": { "effort": "low" },
  "messages": [
    { "role": "user", "content": "What is the capital of Australia?" }
  ]
}

Pułapka pustej odpowiedzi: myślenie liczy się do max_tokens#

Oto jak to się psuje. Spodziewasz się odpowiedzi na dwa zdania, więc ustawiasz max_tokens na 300. Model zaczyna myśleć, wydaje 300 na swój notatnik, trafia w limit i zatrzymuje się. Dostajesz pustą odpowiedź albo zdanie urwane w połowie słowa, a stop reason mówi max_tokens.

Dokumentacja jest jednoznaczna: max_tokens to twardy limit całego wyjścia, myślenia plus tekstu odpowiedzi, a myślenie liczy się nawet wtedy, gdy jego treść nie jest zwracana. Przy effort high i wyżej Anthropic zaleca ustawienie dużej wartości.

W praktyce:

  1. Weź długość odpowiedzi, jakiej chcesz.
  2. Dodaj hojny zapas na myślenie. Kilka tysięcy tokenów to rozsądny start dla czegokolwiek powyżej low.
  3. Sprawdź stop reason po pierwszych uruchomieniach. Jeśli nadal mówi max_tokens, podnieś limit. Jeśli odpowiedź jest kompletna, możesz go obniżyć.

Samo ucięcie, wraz z finish_reason i oknem kontekstu, omówiono w why an AI answer stops mid-sentence.

Co długie rozumowanie robi z rachunkiem#

Załóżmy, że prowadzisz bota wsparcia z 2 000 zgłoszeń dziennie. Każde zgłoszenie to około 500 tokenów na wejściu. Krótka, bezpośrednia odpowiedź to około 400 tokenów na wyjściu. To samo zgłoszenie z długim ukrytym rozumowaniem to około 4 000 tokenów na wyjściu. To założenia do przykładu; po własne liczby zajrzyj do how many tokens a request uses.

Dziennie to 2 000 × 500 = 1 000 000 tokenów wejściowych oraz albo 2 000 × 400 = 800 000 tokenów wyjściowych, albo 2 000 × 4 000 = 8 000 000 tokenów wyjściowych. Czytelnik zgłoszenia tak czy inaczej widzi te same dwie linijki. Zmieniła się tylko objętość wyjścia, a wyjście to ta strona, którą rozumowanie zawyża.

Dzienny koszt bota wsparcia, 1 000 000 tokenów na wejściu, krótkie odpowiedzi vs długie rozumowanie (aktualne ceny)
  • MiniMax-M2.7, długie rozumowanie (8 000 000 na wyjściu)$1.25
  • DeepSeek-V4-Flash, długie rozumowanie (8 000 000 na wyjściu)$0.815
  • MiniMax-M2.7, krótkie odpowiedzi (800 000 na wyjściu)$0.17
  • DeepSeek-V4-Flash, krótkie odpowiedzi (800 000 na wyjściu)$0.095

Arytmetyka jest taka sama w każdym modelu, który rozlicza ukryte rozumowanie: tokeny wyjściowe × cena wyjścia. Dla DeepSeek-V4-Flash ta cena to $0.10 za 1M tokenów wyjściowych, a jego strona wyjściowa jest tańsza niż cena referencyjna OpenRouter. Odpowiada też na maksymalnie 32 768 tokenów naraz przy kontekście 380K, więc duże max_tokens się zmieści. Ceny są stałe dla modelu, bez godzin szczytu, a powyższa tabela przelicza się z aktualnego cennika. Wszystkie ceny są na pricing page; DeepSeek page zawiera szczegóły modelu.

Oto zapytanie, które możesz wysłać samodzielnie. To zwykłe zadanie streszczenia, więc nie potrzebujesz długiego rozumowania, a limit zostawia dużo miejsca:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "max_tokens": 2000,
    "messages": [
      {"role": "user", "content": "Summarize in one sentence: A token is a small piece of text that a model reads and writes, and APIs bill by the token."}
    ]
  }'

W odpowiedzi usage.completion_tokens to to, za co płacisz po stronie wyjścia, a finish_reason powinno wynosić stop. Jeśli mówi length, limit uciął odpowiedź. Zdobycie klucza i pierwsze wywołanie: docs.

Który effort do jakiego zadania#

  • Fakt, jednowierszowe streszczenie, etykieta. Najniższy effort. To przypadek z początku artykułu: nie potrzebujesz brudnopisu.
  • Codzienne pisanie, krótkie wyjaśnienie, prosta edycja. Domyślny poziom dla modelu. Zmień go dopiero, gdy zobaczysz, ile kosztują odpowiedzi.
  • Trudny błąd, wieloetapowy plan, zadanie matematyczne. high lub wyżej i duże max_tokens. Tu dodatkowe myślenie jest sednem.

Gdy nie masz pewności, uruchom ten sam prompt na dwóch poziomach, porównaj odpowiedzi i porównaj output_tokens. Jeśli tańsza odpowiedź jest równie dobra, masz swój poziom.

Przenoszenie starego zapytania: błąd 400#

Starszy kod kontrolował myślenie budżetem tokenów. W Claude 4.7 i późniejszych modelach (Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable 5.1) ta forma jest odrzucana błędem 400. Przechodzisz na adaptive thinking i ustawiasz głębokość przez effort:

json
// before: returns 400 on newer models
"thinking": { "type": "enabled", "budget_tokens": 8000 }

// after
"thinking": { "type": "adaptive" },
"output_config": { "effort": "medium" }
Old thinking budget on the left, adaptive thinking with effort on the right
The same request before and after the move, per Anthropic's docs, checked 23 October 2026

Jeszcze jedna pułapka: w Opus 5.5 adaptive thinking jest zawsze włączone, a thinking: { "type": "disabled" } zwraca 400 przy każdym poziomie effort. Haiku 5.5 pozwala wyłączyć myślenie przy effort high lub niżej. Jeśli chcesz mniej myślenia w Opus 5.5, obniż effort zamiast go wyłączać.

Agenci i długie czaty: wybierz jeden poziom i się go trzymaj#

Jeśli twój prompt jest w cache, zmiana najwyższego poziomu effort między zapytaniami unieważnia punkty przerwania cache dla tej rozmowy. W pętli agenta lub długim czacie wybierz jeden poziom z góry. Niektóre modele oferują w wersji beta effort na wiadomość, który zachowuje cache; warto na to spojrzeć, gdy podstawy są już ogarnięte. Długie czaty mają drugi czynnik kosztowy, omówiony w why a long chat costs more.

Wypróbuj to na własnym zapytaniu#

  1. Wyślij swój prawdziwy prompt raz i przeczytaj usage: ile tokenów wyjściowych i ile z nich to myślenie.
  2. Obniż effort o jeden stopień i wyślij go ponownie. Porównaj odpowiedzi i liczby.
  3. Ustaw max_tokens na odpowiedź, jakiej chcesz, plus zapas na myślenie, i sprawdź stop reason.

Następnie wpisz własne liczby tokenów do aktualnej tabeli cen na pricing page i masz miesięczny szacunek.