Ile kosztuje agent w produkcji — token cost, model routing i obserwowalność

przez Łukasz | cze 4, 2026

Artykuł 8 z serii Anatomia Agenta AI NLWeb — jak sprawić żeby Twoja strona odpowiadała agentom


Agent w środowisku testowym kosztował centa za rozmowę. Po trzech tygodniach w produkcji rachunek za API to 800 dolarów miesięcznie.

To nie jest scenariusz z sufitu. To jest pattern który powtarza się regularnie — i prawie zawsze z tego samego powodu: agent w testach był używany przez dewelopera z krótkimi, precyzyjnymi zapytaniami. Agent w produkcji jest używany przez prawdziwych użytkowników z długimi rozmowami, powtarzającymi się pytaniami i tendencją do wchodzenia w niespodziewane ścieżki.

Koszty agentów są przewidywalne. Ale tylko jeśli je mierzysz i rozumiesz z czego wynikają.

Jak liczyć koszty — konkretny przykład

Token cost to iloczyn trzech zmiennych: rozmiar kontekstu wejściowego, długość generowanego outputu i cena modelu za milion tokenów.

Przykład: agent obsługi klienta na Claude Sonnet 4 (maj 2026: $3/1M input, $15/1M output).

Konwersacja:

  • System prompt: 1 500 tokenów
  • Historia rozmowy: 2 000 tokenów (5 wymian)
  • Wyniki narzędzi: 1 500 tokenów
  • Kontekst wejściowy łącznie: 5 000 tokenów
  • Odpowiedź agenta: 400 tokenów

Koszt jednej konwersacji:

Input:  5 000 × $3/1M  = $0.015
Output:   400 × $15/1M = $0.006
Łącznie:                $0.021

Dwa centy za rozmowę. Tysiąc rozmów dziennie = $21/dzień = $630/miesiąc.

To jest obliczenie przy krótkich rozmowach. Teraz dodaj długą rozmowę: użytkownik wymienia 20 wiadomości zamiast 5, historia rośnie do 8 000 tokenów, wyniki narzędzi się kumulują — kontekst wejściowy rośnie do 12 000 tokenów. Koszt jednej takiej rozmowy: $0.042. Dwa razy więcej.

Jeśli 20% Twoich użytkowników prowadzi długie rozmowy — realny koszt jest 20-40% wyższy niż testowy.

Context window bloat — główny winowajca

Najczęstsza przyczyna wysokich kosztów w produkcji: kontekst który rośnie bez kontroli.

Winowajca 1: Za długi system prompt.

System prompt który zawiera całą dokumentację firmy, wszystkie edge cases które kiedykolwiek się zdarzyły i wszystkie procedury — jest za długi. Każde wywołanie agenta płaci za te tokeny, nawet gdy są nieistotne dla aktualnego zadania.

Dobry system prompt jest zwięzły i precyzyjny. Szczegółowa wiedza domenowa żyje w bazie RAG — agent pobiera ją gdy potrzebuje, nie trzyma w kontekście permanentnie.

Winowajca 2: Surowe wyniki narzędzi.

Narzędzie zwraca pełny obiekt JSON z API:

json
{
  "order_id": "12345",
  "customer_id": "67890",
  "items": [...],  // 50 pozycji
  "shipping_address": {...},
  "billing_address": {...},
  "payment_method": {...},
  "internal_notes": "...",
  "audit_log": [...],  // 200 wpisów
  "status": "shipped",
  "tracking_number": "PL123456789"
}

Użytkownik pytał o status zamówienia. Agent potrzebuje: status, tracking_number. Reszta to szum który kosztuje tokeny.

Rozwiązanie: wrapper narzędzia który ekstrahuje tylko relevantne pola zanim przekaże do modelu. Wynik 2 pola zamiast 500 tokenów pełnego obiektu.

Winowajca 3: Historia konwersacji bez kompresji.

Każda runda rozmowy dołącza do historii. Po 10 rundach kontekst jest duży. Po 30 — ogromny.

Rozwiązanie: rolling summary. Co N rund — agent podsumowuje starszą część historii jednym akapitem i usuwa szczegóły. Kontekst zostaje stabilny mimo rosnącej rozmowy.

Model routing — tańszy model dla prostszych zadań

Nie każde wywołanie agenta wymaga Sonnet 4. Rozkład zapytań w typowym agencie obsługi klienta:

  • 60%: proste sprawdzenia statusu → Claude Haiku (10x tańszy od Sonnet)
  • 30%: standardowe zapytania → Claude Sonnet
  • 10%: złożone analizy, reklamacje → Claude Sonnet lub Opus

Model routing to prosta klasyfikacja przed wywołaniem: oceń złożoność zapytania, wyślij do właściwego modelu.

Implementacja w n8n: węzeł klasyfikacji (tani model z pytaniem „oceń złożoność: proste/średnie/złożone”), potem switch node który kieruje do odpowiedniego modelu.

Implementacja w kodzie:

python
def route_to_model(query: str) -> str:
    # Prosta heurystyka bez dodatkowego wywołania modelu
    simple_patterns = [
        "status zamówienia", "gdzie moja paczka", 
        "kiedy dotrze", "numer śledzenia"
    ]
    
    if any(p in query.lower() for p in simple_patterns):
        return "claude-haiku-4"
    
    complex_patterns = [
        "reklamacja", "prawnik", "odszkodowanie", 
        "zrezygnuję", "umowa"
    ]
    
    if any(p in query.lower() for p in complex_patterns):
        return "claude-sonnet-4"  # lub opus dla krytycznych
    
    return "claude-haiku-4"  # default: tańszy model

Oszczędność: 40-60% kosztów przy minimalnej degradacji jakości dla prostych zapytań.

Prompt caching — 90% redukcja kosztów input

Anthropic, OpenAI i Google oferują prompt caching — gdy ta sama treść pojawia się na początku kontekstu wielokrotnie, jest cachowana i opłata za jej przetworzenie jest radykalnie niższa.

Dla Claude: tokeny cache write kosztują 25% standardowej ceny, tokeny cache read kosztują 10% standardowej ceny.

Praktycznie: Twój system prompt (1 500 tokenów) jest identyczny w każdym wywołaniu agenta. Bez cachowania — płacisz za 1 500 tokenów input przy każdym wywołaniu. Z cachowaniem — płacisz za cache write raz, potem 10% tej ceny przy kolejnych wywołaniach.

Dla agenta z 1 000 wywołań dziennie i system promptem 2 000 tokenów:

Bez cache: 1000 × 2000 × $3/1M = $6/dzień
Z cache:   1 × 2000 × $0.75/1M + 999 × 2000 × $0.30/1M
         = $0.0015 + $0.60 = $0.60/dzień

90% redukcji kosztów za system prompt. W skali miesiąca: $180 zamiast $180.

Implementacja: oznacz prefix system promptu jako cacheable (jeden parametr w API call dla Claude). Treść musi być identyczna między wywołaniami — żadnych dynamicznie wstawianych elementów w cachowanej części.

Latency — kiedy czas ma znaczenie

Latency agentowa to suma: czas modelu + czas narzędzi + czas retrieval + overhead orchestracji.

Dwa różne typy agentów mają fundamentalnie różne wymagania:

Synchroniczny (odpowiedź teraz): chatbot obsługi klienta, asystent w czasie rzeczywistym. Limit UX: 3-5 sekund. Przekroczenie = użytkownik myśli że coś się zawiesiło.

Asynchroniczny (wynik kiedy gotowy): analiza raportu, przygotowanie propozycji, research. Limit UX: minuty lub godziny. Użytkownik dostaje powiadomienie gdy gotowe.

Dla synchronicznych — trzy strategie redukcji latency:

Równoległe wywołania narzędzi. Zamiast:

Sprawdź zamówienie → poczekaj → sprawdź status dostawy → poczekaj → odpowiedz

Zrób:

Sprawdź zamówienie i status dostawy jednocześnie → poczekaj → odpowiedz

Oszczędność: 30-60% czasu dla niezależnych wywołań.

Streaming odpowiedzi. Zamiast czekać aż agent wygeneruje pełną odpowiedź — streamuj tokeny do interfejsu użytkownika od razu. Użytkownik widzi jak odpowiedź się pojawia. Całkowity czas jest taki sam — postrzegany czas jest radykalnie krótszy.

Mniejszy model tam gdzie możliwe. Claude Haiku odpowiada 3-5x szybciej niż Sonnet. Dla prostych zapytań routing do Haiku zmniejsza latency i koszty jednocześnie.

Obserwowalność agentów — co mierzysz, to kontrolujesz

Agent observability to monitoring który sprawia że agent w produkcji nie jest czarną skrzynką.

Pięć metryk które musisz mieć:

Token cost per conversation — nie per call. Agent może mieć 10 wywołań modelu w jednej konwersacji. Metryka per call ukrywa to. Metryka per conversation pokazuje realne koszty. Alarm gdy rośnie bez wyraźnego powodu.

Latency p95 — nie średnia. Średnia latency 2 sekundy jest akceptowalna. Ale jeśli 5% konwersacji trwa 20 sekund — Twoi użytkownicy to czują. p95 (95 percentyl) pokazuje ile trwa dla najwolniejszych konwersacji.

Tool call success rate — jaki procent wywołań narzędzi kończy się sukcesem. Spadek poniżej 95% to sygnał: narzędzie ma problemy, API zewnętrzne jest niestabilne, lub agent wywołuje narzędzia z błędnymi parametrami.

Conversation length distribution — histogram długości konwersacji. Ogon rozkładu (bardzo długie konwersacje) jest często źródłem nieproporcjonalnie wysokich kosztów. Jeśli 2% konwersacji jest 10x dłuższych niż średnia — to te 2% generuje dużą część rachunku.

Error rate — procent konwersacji które kończą się błędem lub eskalacją do człowieka. Trend rosnący = coś się pogorszyło (update modelu, zmiana w danych wejściowych, nowy typ zapytań).

Narzędzia

LangSmith — jeśli budujesz na LangChain/LangGraph, to naturalne centrum. Tracing każdego kroku, ewaluacja jakości, dashboard kosztów.

Anthropic Console — wbudowany tracing dla agentów na Claude API. Dobry punkt startowy bez dodatkowej konfiguracji.

OpenTelemetry + dowolny backend — emerging standard dla agentów AI. Strukturalne logi z krokami agent loop w formacie który wchodzi w Datadog, Grafana, New Relic.

n8n execution log — jeśli budujesz w n8n, masz wbudowany log każdego wykonania z czasami każdego node’a i wynikami. Wystarczy na start.

Jeden ważny szczegół: PII scrubbing w logach. Logi konwersacji mogą zawierać dane osobowe użytkowników. Konfiguracja automatycznego redagowania (imiona, emaile, numery zamówień) jest obowiązkowa jeśli przetwarza dane osobowe — to wymóg GDPR, nie opcja.

Kalkulator na start

Zanim wdrożysz agenta do produkcji — oblicz scenariusz:

Szacowane wywołania dziennie: _____
Średni kontekst wejściowy (tokeny): _____
Średnia długość odpowiedzi (tokeny): _____
Model: _____ (cena input/output per 1M)

Koszt/dzień = wywołania × (kontekst × cena_input + output × cena_output) / 1 000 000
Koszt/miesiąc = koszt/dzień × 30

Wariant pesymistyczny: pomnóż × 3 (długie konwersacje, pętle, edge cases)

Jeśli wariant pesymistyczny jest akceptowalny — wdrażaj. Jeśli nie — zanim wdrożysz, zaimplementuj model routing i prompt caching.


W następnym artykule serii: budujesz agenta, wiesz ile kosztuje, zabezpieczasz go — jak wiesz że robi to co powinien? Ewaluacja agentów, LLM-as-judge i CI/CD dla systemów agentowych.


Pojęcia ze słownika: Token cost · Latency agentowa · Agent observability · Agent loop · Model distillation · Hallucination detection

Agent kończy, ale zadania nie wykonał

Agent kończy, ale zadania nie wykonał

Objawy Agent odpowiada: „Przygotowałem i wysłałem potwierdzenie do klienta." Potwierdzenie nie zostało wysłane. Albo: „Zaktualizowałem wszystkie rekordy" — zaktualizował trzy z dwunastu. Albo: „Nie znalazłem żadnych zamówień" — bo narzędzie zwróciło błąd, którego nikt...

Agent zrobił coś, o co nikt nie prosił

Agent zrobił coś, o co nikt nie prosił

Objawy Operacja, której nikt nie zlecił. Dane wysłane pod adres, którego nie ma w żadnej konfiguracji. Rekord zmieniony poza zakresem zadania. Odpowiedź, z której wynika, że agent dostał instrukcje od kogoś innego niż ty. Cecha wspólna: technicznie wszystko zadziałało...

Agent zrobił to samo dwa razy

Agent zrobił to samo dwa razy

Objawy Ten syndrom różni się od pozostałych jedną rzeczą: objaw widzi klient, nie ty. Trzy identyczne wiadomości w skrzynce. Dwa zamówienia zamiast jednego. Podwójne obciążenie. Duplikaty rekordów, które ktoś zauważa tydzień później. W twoim dzienniku wszystko wygląda...

Agent gubi wątek w długim zadaniu

Agent gubi wątek w długim zadaniu

Objawy Pierwsze kroki idą wzorowo. Po kilkunastu agent zaczyna się rozjeżdżać. Przestaje przestrzegać reguły z promptu systemowego, której trzymał się na początku. Zmienia format odpowiedzi w połowie zadania. Wraca do czegoś, co już ustalił, i ustala to inaczej....

Agent podaje dane, których nie ma

Agent podaje dane, których nie ma

Objawy Numer zamówienia w idealnym formacie, którego nie ma w bazie. Kwota, której w dokumencie nie ma. Nazwa pola API, które nigdy nie istniało. Cytat z regulaminu, brzmiący dokładnie jak reszta regulaminu i w nim nieobecny. Cecha wspólna wszystkich tych przypadków:...

Działał wczoraj, dziś nie działa

Działał wczoraj, dziś nie działa

Objawy Nic się nie wywala. Nie ma wyjątków, nie ma timeoutów, dziennik wygląda tak samo jak zawsze. Po prostu odpowiedzi są gorsze. Postacie, w jakich to się objawia: Jakość. Agent zaczyna pomijać kroki, które wcześniej wykonywał, albo odpowiada ogólniej. Format....

Agent wybiera złe narzędzie

Agent wybiera złe narzędzie

Objawy Agent odpowiada nie na to pytanie. Pobiera listę zamówień, gdy pytano o jedno konkretne. Odpowiada z pamięci, choć miał sprawdzić w bazie. Albo sięga po właściwe narzędzie i wpisuje w argumenty coś, czego nie da się użyć. Sygnał, który odróżnia ten syndrom od...

Agent kręci się w kółko

Agent kręci się w kółko

Objawy Agent wykonuje kolejne obroty pętli, nie zbliżając się do zakończenia zadania. W dzienniku widać jedną z trzech postaci. Powtórzenie. To samo narzędzie, te same argumenty, raz za razem — czasem dziesiątki razy pod rząd. Oscylacja. Agent wywołuje na przemian dwa...