Powrót do bloga

AI dla początkującychPrzewodnik

Dlaczego agenci AI zużywają tak wiele tokenów (przykład 20 kroków)

Agent AI wysyła ponownie swoją historię, listę narzędzi i wyniki narzędzi na każdym kroku. Zobacz, gdzie idą tokeny, na przykładzie 20 kroków.

Autor: CheapTokens TeamOpublikowano 5 min czytania

Karta czatu: jedno pytanie, setki tysięcy tokenów? Każdy krok wysyła ponownie całą historię.
Na tej stronie
  1. Czym jest agent, w jednym obrazku
  2. Trzy rzeczy jadą z każdym krokiem
  3. Przebieg 20 kroków, policzony
  4. Gdzie ciąć: cztery nawyki
  5. Policz własny przebieg

Zadajesz agentowi jedno pytanie, on pracuje kilka minut, a strona zużycia pokazuje setki tysięcy tokenów. Nic nie jest zepsute. Agent to pętla, a każde jej okrążenie wysyła ponownie wszystko, co powiedziano do tej pory (listę narzędzi, historię, cokolwiek zwróciły narzędzia) jako tokeny wejściowe. Odpowiedź, którą pisze, jest malutka. To, co czyta w kółko, już nie.

Czym jest agent, w jednym obrazku#

Model czatu odpowiada raz. Agent to ten sam model w pętli z narzędziami: przeczytaj plik, przeszukaj sieć, uruchom polecenie. A model nie pamięta nic między wywołaniami. Wyobraź sobie asystenta, który za każdym razem, gdy odłoży słuchawkę, zapomina wszystko: za każdym razem, gdy dzwoni ponownie, czytasz notatki od początku, a potem dodajesz jedną linijkę. Tak właśnie działa API.

Dokumentacja Anthropic dotycząca użycia narzędzi (sprawdzona 26 października 2026) opisuje tę pętlę tak:

  1. Twoja aplikacja wysyła wiadomość użytkownika i listę narzędzi.
  2. Model odpowiada blokiem stop_reason: "tool_use" i tool_use: które narzędzie, z jakimi argumentami.
  3. Twoja aplikacja uruchamia narzędzie i wysyła drugie żądanie. Zawiera ono wcześniejsze wiadomości, wywołanie narzędzia przez model, blok tool_result i tę samą listę narzędzi.
  4. Model odpowiada albo prosi o kolejne narzędzie, i pętla kręci się dalej.

Ta sama strona mówi, że żądania użycia narzędzi są rozliczane na podstawie całkowitego wysłanego wejścia, w tym parametru tools, plus wyjście. Więc krok 3 nigdy nie jest „tylko nową częścią”: to znowu cała rozmowa.

text
Request 1  tools + system + task
Request 2  tools + system + task + call 1 + result 1
Request 3  tools + system + task + call 1 + result 1 + call 2 + result 2
...

To ten sam mechanizm co w dlaczego długa rozmowa kosztuje więcej, tylko szybszy. Rozmowa rośnie o jedną wiadomość, gdy piszesz. Agent rośnie o dwa bloki na każdym kroku, a nikt nic nie pisze.

Trzy rzeczy jadą z każdym krokiem#

Lista narzędzi. Nazwy, opisy i schematy parametrów każdego narzędzia trafiają do każdego żądania, nawet gdy model nie użyje żadnego z nich w tej turze. Dokumentacja dodaje mały ekstra: przy włączonych narzędziach API dodaje własny prompt użycia narzędzi, 286 tokenów w Claude Sonnet 5.5, Opus 5.5 i Haiku 5.5, a inne modele mają inne liczby.

Historia. Twoje zadanie, wcześniejsze wywołania narzędzi przez model, jego notatki.

Wynik narzędzia. To jest ten podstępny. Plik, który przeczytał agent, strona wyników wyszukiwania, log testów: gdy raz trafi do historii, płacisz za niego ponownie na każdym późniejszym kroku.

Token to mały kawałek tekstu, mniej więcej słowo lub część słowa, i to za niego płacisz.

Przebieg 20 kroków, policzony#

Załóżmy, że uruchamiasz małego agenta kodującego z trzema narzędziami (czytaj plik, przeszukaj sieć, uruchom testy) i dajesz mu zadanie, które zajmuje 20 kroków. Przyjmij takie założenia:

  • definicje narzędzi: 1 500 tokenów, prompt systemowy: 500, twoje zadanie: 200, więc każde żądanie startuje od 2 200 tokenów;
  • na każdym kroku model pisze wywołanie narzędzia o 150 tokenach, a narzędzie zwraca 800 tokenów;
  • oba te elementy trafiają do historii i do każdego kolejnego żądania.
Rozmiar wejścia w krokach 1, 5, 10 i 20 przebiegu: 2 200, 6 000, 10 750 i 20 250 tokenów, podczas gdy wyjście zostaje na 150 na krok
Tokeny wejściowe na żądanie rosną z każdym krokiem; wyjście zostaje na 150 tokenów na krok (założenia powyżej)

Aby dostać sumę przebiegu, zsumuj wszystkie 20 żądań. Baza 2 200 jest wysyłana 20 razy, a rundy są przenoszone przez późniejsze kroki: krok 1 nie przenosi żadnej, krok 2 jedną, i tak dalej aż do 19, co daje 190 rund w sumie.

20 × 2 200 = 44 000

950 × 190 = 180 500

44 000 + 180 500 = 224 500 tokenów wejściowych i 20 × 150 = 3 000 tokenów wyjściowych.

Agent napisał 3 000 tokenów, a przeczytał 224 500. Tokeny wyjściowe kosztują więcej za sztukę niż wejściowe (zobacz tokeny wejściowe vs wyjściowe), ale jest ich tak mało, że o rachunku i tak decyduje strona wejściowa. Oto ten przebieg w obecnych cenach:

Model Koszt OpenRouter
GLM-5.3-Flash $0.0046 $0.0095
DeepSeek-V4-Flash $0.0037 $0.0111
MiniMax-M2.7 $0.0117 $0.071

224 500 tokenów wejściowych i 3000 tokenów wyjściowych łącznie. Ceny za 1 mln tokenów są aktualne i zmieniają się wraz z naszymi taryfami; kolumna OpenRouter pokazuje ceny referencyjne dla tego samego obciążenia.

W DeepSeek-V4-Flash jeden taki przebieg kosztuje $0.0037, w GLM-5.3-Flash $0.0046. Sto przebiegów to 22 450 000 tokenów wejściowych i 300 000 wyjściowych: $0.367 w DeepSeek-V4-Flash. Powyższa tabela liczy wejście i wyjście razem, a w sumie modele tam wychodzą taniej niż OpenRouter.

Liczba kroków ma większe znaczenie, niż się wydaje. Przebieg 5 kroków przy tych samych założeniach:

5 × 2 200 = 11 000

950 × 10 = 9 500

11 000 + 9 500 = 20 500 tokenów wejściowych. Cztery razy więcej kroków dało około jedenaście razy więcej wejścia, bo każdy nowy krok odczytuje też wszystkie stare.

Gdzie ciąć: cztery nawyki#

Wynik jednego narzędzia to najłatwiejsze miejsce do oszczędzania. Powiedzmy, że uruchomienie testów w kroku 3 zwraca log o 4 000 tokenów. Jest potem wysyłany ponownie przez 17 kolejnych żądań:

  • przed: 4 000 × 17 = 68 000 tokenów wejściowych przenoszonych przez ten jeden log;
  • po, jeśli narzędzie zwraca tylko 40 istotnych linii (około 400 tokenów): 400 × 17 = 6 800.

To samo zadanie, ta sama odpowiedź, jedna dziesiąta wejścia z tego jednego wyniku. To daje cztery nawyki:

  • Zwracaj mniej z narzędzi. Linie wokół błędu, nie cały log; funkcję, nie cały plik. Dłuższe omówienie jest w trzymaniu wyników narzędzi poza kontekstem.
  • Daj agentowi mniej narzędzi. Każda definicja jedzie z każdym żądaniem.
  • Ogranicz liczbę kroków i zacznij świeże zadanie, gdy stara historia przestaje mieć znaczenie.
  • Sumuj zużycie każdego kroku i zatrzymaj przebieg przy budżecie wybranym z góry. Po stronie szacowania zobacz jak oszacować koszt agenta AI.

Policz własny przebieg#

Każda odpowiedź podaje, ile tokenów przyjęła i wypuściła, w polu usage. Zsumuj je po wszystkich krokach i masz prawdziwe liczby dla swojego agenta zamiast moich założeń. Szkic z OpenAI Python SDK wskazanym na CheapTokens (messages i tools należą do twojego agenta):

python
from openai import OpenAI

client = OpenAI(base_url="https://api.cheaptokens.dev/v1", api_key="YOUR_API_KEY")

total_in = total_out = 0
for step in range(20):  # your agent loop
    resp = client.chat.completions.create(
        model="deepseek-ai/DeepSeek-V4-Flash-0731",
        messages=messages,
        tools=tools,
    )
    total_in += resp.usage.prompt_tokens
    total_out += resp.usage.completion_tokens
    # ...run the tool, append the result to messages

print(total_in, total_out)

Obie sumy wpisują się wprost do powyższej tabeli kosztów. Przy tak długich historiach DeepSeek-V4-Flash daje okno kontekstu 380K i do 32 768 tokenów wyjściowych na odpowiedź, w jednej cenie o każdej porze; GLM-5.3-Flash ma kontekst 390K i do 8 192 tokenów wyjściowych. Konfiguracja jest w dokumentacji, aktualna cena każdego modelu jest na stronie cen, a model ma własną stronę, tani DeepSeek.