Powrót do bloga

Optymalizacja kosztówAnaliza

Jak oszacować koszt agenta AI

Dlaczego rachunki za agenta zdominowane są przez tokeny wejściowe, wzór, który możesz uruchomić przed agentem, przykład obliczeniowy dla 30 kroków i siedem sposobów na obniżenie kosztu.

Autor: CheapTokens TeamOpublikowano 3 min czytania

Wykres tokenów wejściowych rosnących krok po kroku w sesji agenta, obok wzoru kosztu
Na tej stronie
  1. Wzór
  2. Dlaczego agenci są „wejściochłonni”
  3. Przykład obliczeniowy
  4. Oszacuj to w kodzie
  5. Mierz zamiast zgadywać
  6. Siedem sposobów na obniżenie kosztu

Agent AI nie wykonuje jednego żądania — wykonuje ich dziesiątki, a każdy krok ponownie wysyła rosnącą rozmowę. Dlatego rachunki za agenta zdominowane są przez tokeny wejściowe i dlatego intuicja „ceny za odpowiedź” z aplikacji czatowych tu nie działa. Oto jak oszacować koszt przed uruchomieniem agenta i gdzie faktycznie idą pieniądze.

Wzór#

Koszt jednego żądania to tokeny wejściowe razy cena wejściowa plus tokeny wyjściowe razy cena wyjściowa. Ceny podawane są za milion tokenów:

text
request_cost = input_tokens / 1,000,000 × input_price
             + output_tokens / 1,000,000 × output_price

Koszt zadania to suma po wszystkich żądaniach, które agent wykonuje, rozwiązując je.

Dlaczego agenci są „wejściochłonni”#

Na każdym kroku agent wysyła modelowi:

  • prompt systemowy i definicje narzędzi;
  • całą dotychczasową historię — wcześniejsze wiadomości, poprzednie odpowiedzi modelu i wyniki narzędzi (zawartość plików, wyjście poleceń, wyniki wyszukiwania);
  • nową instrukcję.

Model zwykle odpowiada krótką wiadomością lub wywołaniem narzędzia. Potem wynik narzędzia jest dopisywany do historii, a następny krok wysyła wszystko ponownie. Tak więc wejście każdego kroku rośnie, podczas gdy wyjście pozostaje małe.

Przykład obliczeniowy#

Warunki (założenia — zastąp je liczbami ze swojego agenta):

  • prompt systemowy i definicje narzędzi: 6 000 tokenów;
  • każdy krok dodaje do historii 1 500 tokenów wyników narzędzi i 500 tokenów wyjścia modelu;
  • zadanie zajmuje 30 kroków;
  • model: DeepSeek-V4-Flash po $0.0221 za 1M tokenów wejściowych i $0.10 za 1M tokenów wyjściowych (aktualne ceny).

Wejście kroku n to 6 000 + (n − 1) × 2 000 tokenów. Przez 30 kroków:

  • łączne wejście: 30 × 6 000 + 2 000 × (0 + 1 + … + 29) = 180 000 + 870 000 = 1 050 000 tokenów;
  • łączne wyjście: 30 × 500 = 15 000 tokenów;
  • koszt: 1,05 × $0.0221 + 0,015 × $0.10 ≈ $0.0247 za zadanie.

Wejście to 98,6% tokenów i niemal cały koszt. To, jak bardzo dominuje wejście, zależy od scenariusza: długie odpowiedzi, generowane pliki i modele rozumujące zwiększają udział wyjścia, a przycięta historia i krótkie wyjście narzędzi obniżają udział wejścia.

To samo zadanie na każdym modelu przy aktualnych cenach, z cenami referencyjnymi OpenRouter dla porównania:

Model Koszt OpenRouter
GLM-5.3-Flash $0.0296 $0.0534
DeepSeek-V4-Flash $0.0247 $0.0264
MiniMax-M2.7 $0.0548 $0.333

1 050 000 tokenów wejściowych i 15 000 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.

Oszacuj to w kodzie#

To samo obliczenie jako funkcja — zmień założenia i ceny:

python
def estimate(steps, base_tokens, tool_tokens, out_tokens, price_in, price_out):
    """Token totals and cost of one agent task. Prices: $ per 1M tokens."""
    grow = tool_tokens + out_tokens            # what each step adds to the history
    total_in = steps * base_tokens + grow * steps * (steps - 1) // 2
    total_out = steps * out_tokens
    cost = (total_in * price_in + total_out * price_out) / 1_000_000
    return total_in, total_out, round(cost, 5)

# example rates, $ per 1M tokens — put in the current ones from the pricing table below
print(estimate(30, 6_000, 1_500, 500, price_in=0.10, price_out=0.40))
# (1050000, 15000, 0.111)

Zwróć uwagę na człon kwadratowy: podwojenie liczby kroków mniej więcej czterokrotnie zwiększa wejście. Długie sesje stają się drogie nie z powodu pojedynczego kroku, ale dlatego, że każdy krok niesie całą historię.

Mierz zamiast zgadywać#

Każda odpowiedź zawiera usage.prompt_tokens (wejście) i usage.completion_tokens (wyjście). Zapisuj je dla każdego kroku rzeczywistego zadania, pomnóż przez aktualne stawki i masz faktyczny koszt. Panel pokazuje też zużycie według modelu i dnia.

Aktualne stawki — te same dane co na stronie z cennikiem:

Model Kontekst Wejście $/1M Wyjście $/1M OpenRouter wejście OpenRouter wyjście
GLM-5.3-Flash reasoning 390K $0.027 $0.08 $0.048 $0.20
DeepSeek-V4-Flash 380K $0.0221 $0.10 $0.016 $0.64
MiniMax-M2.7 200K $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.

Siedem sposobów na obniżenie kosztu#

  1. Zaczynaj nowe zadanie dla niepowiązanej pracy. Świeża sesja nie niesie historii poprzedniej.
  2. Dawaj agentowi fragmenty, nie całe pliki. Funkcję i jej wywołania zamiast modułu o 3 000 linii.
  3. Przycinaj wyjście narzędzi. Długie logi i wyjście poleceń pozostają w historii do końca sesji — ogranicz je, na przykład za pomocą | tail -n 50.
  4. Streszczaj długie sesje. Wiele agentów potrafi kompaktować historię; użyj tego, zanim kontekst się rozrośnie.
  5. Ogranicz długość odpowiedzi za pomocą max_tokens tam, gdzie długie odpowiedzi nie są potrzebne.
  6. Używaj właściwego modelu do danego kroku. Rutynowe kroki nie potrzebują modelu rozumującego.
  7. Trzymaj przedpłacony budżet. Saldo jest przedpłacone: gdy się skończy, żądania zatrzymują się z HTTP 402 zamiast generować otwarty rachunek.

Aby zobaczyć, jak to samo obciążenie wypada na tle modeli i OpenRouter, skorzystaj z porównania kosztów na stronie głównej.