Opóźnienie i koszt na każdym etapie
Mierz zużycie tokenów i czas rzeczywisty dla każdego węzła, aby znaleźć wolne i kosztowne etapy.
Opóźnienie i koszt na każdym etapie to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Dlaczego metryki dla poszczególnych kroków?
Całkowite opóźnienie i koszt informują, że system działa wolno lub jest drogi — ale nie wskazują, KTÓRY krok działa wolno lub generuje wysoki koszt. Aby to naprawić, trzeba mierzyć każdy krok osobno.
Rejestrowanie opóźnienia
Dodaj je do każdego spanu:
start = time.time()
# ... do work ...
span.duration_ms = (time.time() - start) * 1000Kategorie opóźnień
Typowe wolne kroki w agentach:
- Wywołanie LLM — 500ms do 10s
- Wyszukiwanie w internecie — 200ms do 2s
- Tworzenie embeddingu — 50ms do 200ms
- Zapytanie do bazy danych — 5ms do 500ms
Rejestrowanie kosztu
W przypadku kroków LLM pomnóż liczbę tokenów przez cenę:
PRICES = {
'gpt-4o-mini': {'in': 0.150 / 1e6, 'out': 0.600 / 1e6},
'gpt-4o': {'in': 2.50 / 1e6, 'out': 10.00 / 1e6},
'claude-sonnet-4-5': {'in': 3.00 / 1e6, 'out': 15.00 / 1e6}
}
def compute_cost(model, tokens_in, tokens_out):
p = PRICES[model]
return tokens_in * p['in'] + tokens_out * p['out']
cost = compute_cost('gpt-4o-mini', 1000, 500)
print(f"Cost for 1000 in / 500 out tokens on gpt-4o-mini: ${cost:.6f}")
Agregacja na poziomie trace'a
Sumuj spany na poziomie trace'a:
def trace_metrics(spans):
return {
'duration_ms': sum(s.duration_ms for s in spans),
'cost_usd': sum(s.cost_usd or 0 for s in spans),
'tokens': sum((s.tokens_in or 0) + (s.tokens_out or 0) for s in spans),
'step_count': len(spans)
}
from types import SimpleNamespace
spans = [
SimpleNamespace(duration_ms=120, cost_usd=0.002, tokens_in=100, tokens_out=50),
SimpleNamespace(duration_ms=340, cost_usd=0.005, tokens_in=200, tokens_out=80),
]
print(trace_metrics(spans))
p50 / p95 / p99
Nie patrz na średnie — opóźnienia agentów mają długi ogon. Raportuj percentyle:
import numpy as np
durations = [t.duration_ms for t in last_1000_traces]
print('p50:', np.percentile(durations, 50))
print('p95:', np.percentile(durations, 95))
print('p99:', np.percentile(durations, 99))Koszt na użytkownika
Codziennie sumuj koszt według user_id:
SELECT user_id, SUM(cost_usd) AS daily_cost
FROM traces
WHERE created_at::date = current_date
GROUP BY user_id
ORDER BY daily_cost DESC
LIMIT 100Koszt według nazwy kroku
Które kroki generują największy koszt? Grupuj według nazwy:
SELECT name, SUM(cost_usd) AS total
FROM spans
WHERE trace_id IN (SELECT id FROM traces WHERE created_at::date = current_date)
GROUP BY name
ORDER BY total DESCWykresy kaskadowe opóźnień
Dla jednego trace'a narysuj kaskadę spanów w stylu wykresu Gantta. Najdłuższy pasek wskazuje wąskie gardło.
Większość interfejsów do tracingu renderuje taki wykres automatycznie.
Alerty dotyczące wartości odstających
- Wysyłaj alert, jeśli opóźnienie p95 wzrośnie dwukrotnie w porównaniu z poprzednim tygodniem
- Wysyłaj alert, jeśli dzienny koszt wzrośnie powyżej 2x normy
- Wysyłaj alert, jeśli koszt dowolnego użytkownika przekroczy $X / dzień
Porównanie dwóch modeli
Metryki dla poszczególnych kroków umożliwiają porównywanie modeli metodą A/B:
# Run 100 traces with gpt-4o-mini and 100 with haiku
# Compare p95 latency and average cost
# Pick the winner for the use case
print("Run 100 traces with gpt-4o-mini and 100 with haiku")
print("Compare p95 latency and average cost")
print("Pick the winner for the use case")
Śledzenie rozkładu tokenów
Histogram tokenów wejściowych i wyjściowych ujawnia problemy: na przykład stałe osiąganie max_tokens oznacza obcięcie danych wyjściowych, czyli błąd.
Dlaczego percentyle?
Dlaczego raportować opóźnienie p95 zamiast średniej?
Podsumowanie
Opóźnienie i koszt każdego kroku, agregowane na poziomie trace'a i użytkownika; percentyle zamiast średnich; alerty dotyczące wartości odstających. To jest Państwa pulpit nawigacyjny.
Ucz się AI Agents dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 60
- Lekcje
- 239
Często zadawane pytania
Czy lekcja „Opóźnienie i koszt na każdym etapie” jest bezpłatna?
Tak — pełny tekst „Opóźnienie i koszt na każdym etapie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Opóźnienie i koszt na każdym etapie”?
Mierz zużycie tokenów i czas rzeczywisty dla każdego węzła, aby znaleźć wolne i kosztowne etapy. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Opóźnienie i koszt na każdym etapie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego agenci potrzebują śledzenia
- Rejestrowanie wywołań narzędzi oraz danych wejściowych i wyjściowych
- Opóźnienie i koszt na każdym etapie
- Wizualizacja uruchomień agentów (Langfuse, LangSmith)