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:
{
"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:
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











