0Pricing
AI Agents · Урок

Задержка и стоимость каждого шага

Измеряйте расход токенов и реальное время выполнения каждого узла, чтобы находить медленные и дорогие шаги.

«Задержка и стоимость каждого шага» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Зачем измерять каждый шаг?

Суммарные задержка и стоимость показывают, что система медленная или дорогая, но не WHICH шаг медленный или дорогой. Для исправления проблемы необходимо измерять каждый шаг.

Запись задержки

Добавляйте её в каждый span:

start = time.time()
# ... do work ...
span.duration_ms = (time.time() - start) * 1000

Категории задержки

Типичные медленные шаги в агентах:

  • Вызов LLM — от 500 мс до 10 с
  • Веб-поиск — от 200 мс до 2 с
  • Создание эмбеддинга — от 50 до 200 мс
  • Запрос к базе данных — от 5 до 500 мс

Запись стоимости

Для шагов с LLM умножайте количество токенов на цену:

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}")

Агрегация на уровне trace

Суммируйте span на уровне trace:

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

Не смотрите на средние значения: задержки агентов имеют распределение с тяжёлым хвостом. Отчитывайтесь по процентилям:

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))

Стоимость на пользователя

Ежедневно суммируйте стоимость по 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 100

Стоимость по имени шага

Какие шаги определяют основную стоимость? Группируйте по имени:

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 DESC

Водопадные диаграммы задержки

Для одного trace стройте водопадную диаграмму span в стиле диаграммы Ганта. Самая длинная полоса — ваше узкое место.

Большинство интерфейсов трассировки строят такую диаграмму автоматически.

Оповещения об аномалиях

  • Оповещайте, если задержка p95 за неделю удвоилась
  • Оповещайте, если дневная стоимость превысила обычную более чем в 2 раза
  • Оповещайте, если стоимость для одного пользователя превышает $X в день

Сравните две модели

Метрики каждого шага позволяют сравнивать модели методом 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")

Отслеживайте распределение токенов

Гистограмма входных и выходных токенов выявляет проблемы: например, постоянное достижение max_tokens означает обрезание выхода, а значит, является ошибкой.

Зачем нужны процентили?

Зачем сообщать о задержке p95, а не о среднем значении?

Повторим

Задержка и стоимость каждого шага, агрегированные по trace и пользователю; процентили вместо средних значений; оповещения об аномалиях. Это ваша панель мониторинга.

Часто задаваемые вопросы

Урок «Задержка и стоимость каждого шага» бесплатный?

Да — полный текст урока «Задержка и стоимость каждого шага» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Задержка и стоимость каждого шага»?

Измеряйте расход токенов и реальное время выполнения каждого узла, чтобы находить медленные и дорогие шаги. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Задержка и стоимость каждого шага»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Зачем агентам трассировка
  2. Журналирование вызовов инструментов и входов/выходов
  3. Задержка и стоимость каждого шага
  4. Визуализация запусков агентов (Langfuse, LangSmith)
← Назад к AI Agents