English translation is not available yet. Showing Russian content.

Как вы измеряете «cost of reasoning» у агента (не только токены, но и шаги, время, ошибки)?

Краткий тезис

Cost of reasoning — это совокупная стоимость выполнения агентом цепочки действий (шагов) для решения задачи. Она включает не только стоимость токенов LLM, но и задержки (latency), количество шагов, а также штрафы за ошибки (повторные попытки, откаты). Измерение ведётся через формулу Cost = Σ(шаг_i)[токены_i × цена + latency_i + penalty_за_ошибку_i], а ключевой метрикой является cost per successful task (стоимость одного успешно выполненного задания). Оптимизация достигается pruning'ом (отсечением) ненужных шагов, кэшированием и улучшением планирования.


1. Термин: Cost of reasoning (стоимость рассуждения)

Cost of reasoning — это метрика, которая оценивает все ресурсы, затраченные агентом на генерацию ответа или выполнение действия. В отличие от простого RAG, где стоимость — это в основном токены на retrieval + генерацию, у агента добавляются:

  • Шаги (steps): количество вызовов LLM, вызовов инструментов, циклов планирования.
  • Задержка (latency): время выполнения каждого шага (включая ожидание API, выполнение кода).
  • Ошибки (errors): неудачные попытки, которые требуют повторных шагов или отката (rollback).

Почему это важно: без учёта этих компонентов можно получить агента, который формально решает задачу, но тратит в 10 раз больше ресурсов, чем необходимо. На production это ведёт к высоким финансовым затратам и плохому UX из-за долгого ожидания.


2. Формула стоимости и её компоненты

Базовая формула:

Cost = Σ(шаг_i) [токены_i × цена_токена + latency_i + penalty_за_ошибку_i]

Где:

КомпонентОписаниеЕдиница измерения
токены_iКоличество входных + выходных токенов на шаге iтокены
цена_токенаСтоимость одного токена для используемой модели (например, $0.01/1K токенов)$/токен
latency_iВремя выполнения шага i (включая сетевые задержки)секунды
penalty_за_ошибку_iШтраф за неудачный шаг (может быть равен стоимости повторного шага или фиксированной величине)$ или баллы

Пример расчёта:

  • Шаг 1: планирование — 500 токенов, цена $0.005, latency 2 с, без ошибок.
  • Шаг 2: вызов инструмента — 200 токенов (запрос), latency 5 с, ошибка → penalty = стоимость повторного шага (700 токенов + 5 с).
  • Шаг 3: повторный вызов — 700 токенов, latency 5 с, успех.

Итоговая стоимость: (500×0.00001 + 2) + (200×0.00001 + 5 + (700×0.00001+5)) + (700×0.00001+5) = ... (в условных единицах).


3. Мониторинг cost per successful task

Cost per successful task (CPST) — это средняя стоимость одного успешно завершённого задания. Формула:

CPST = (суммарная стоимость всех попыток) / (количество успешных задач)

Зачем: позволяет сравнивать эффективность разных агентов или версий одного агента. Если CPST растёт, значит агент стал делать больше лишних шагов или чаще ошибаться.

Пример:

  • 100 задач, 80 успешных, 20 неудачных.
  • Суммарная стоимость всех 100 попыток = $50.
  • CPST = $50 / 80 = $0.625 за успешную задачу.

Дополнительно: можно считать cost per attempt (стоимость одной попытки) и success rate (доля успешных попыток). Комбинация этих метрик даёт полную картину.


4. Оптимизация через pruning ненужных шагов

Pruning (отсечение) — это удаление шагов, которые не влияют на результат или могут быть объединены. Методы:

  • Статический pruning: на основе анализа логов убираются шаги, которые никогда не меняют ответ (например, избыточные проверки).
  • Динамический pruning: агент сам решает, какие шаги пропустить, используя confidence score или early stopping.

Пример: агент для ответа на вопрос сначала ищет в БД, потом проверяет факты, потом генерирует ответ. Если поиск дал высокую уверенность, шаг проверки можно пропустить.

Инструменты: логирование всех шагов (с помощью tracing — трассировки) и анализ графа выполнения. Популярные библиотеки: LangSmith, Weights & Biases, OpenTelemetry.


5. Метрики для измерения ошибок (penalty)

Ошибки в контексте агента делятся на:

  • Execution errors: инструмент вернул ошибку (например, API timeout).
  • Reasoning errors: агент сделал неверный вывод (например, выбрал неправильный инструмент).
  • Hallucination errors: агент выдал факт, не подтверждённый контекстом.

Penalty может быть:

  • Финансовый: стоимость повторного шага (токены + время).
  • Временной: добавление фиксированного штрафа за каждый неудачный шаг (например, +10 секунд к latency).
  • Комбинированный: penalty = cost_retry + α × latency_retry, где α — вес времени.

Метрики ошибок:

  • Error rate: доля шагов, завершившихся ошибкой.
  • Retry count: среднее количество повторных попыток на задачу.
  • Rollback frequency: как часто агент откатывается к предыдущему состоянию.

6. Инструменты и подходы для измерения

ИнструментНазначениеПример использования
LangSmithТрейсинг шагов, логирование токенов и времениВизуализация цепочек вызовов, подсчёт стоимости
Weights & BiasesМониторинг экспериментов, сравнение агентовЛогирование CPST, error rate
OpenTelemetryСбор метрик latency и ошибок в productionИнтеграция с Prometheus + Grafana
Custom loggingСпецифичные метрики (penalty, pruning)JSON-логи каждого шага с полями: step_id, tokens, latency, error, penalty

Пример кода для логирования (Python):

import time
import json

class AgentLogger:
    def __init__(self):
        self.steps = []
    
    def log_step(self, step_name, tokens, latency, error=False):
        step = {
            "step": step_name,
            "tokens": tokens,
            "latency": latency,
            "error": error,
            "penalty": 0
        }
        if error:
            # penalty = стоимость повторного шага (оценивается позже)
            step["penalty"] = self._estimate_retry_cost(tokens, latency)
        self.steps.append(step)
    
    def _estimate_retry_cost(self, tokens, latency):
        # упрощённо: штраф равен стоимости ещё одного такого же шага
        return tokens * TOKEN_PRICE + latency * TIME_PENALTY
    
    def total_cost(self):
        return sum(s["tokens"] * TOKEN_PRICE + s["latency"] * TIME_PENALTY + s["penalty"] for s in self.steps)

7. Сравнение с простым RAG (без агента)

ПараметрПростой RAGAgentic RAG
Количество шагов2 (retrieval + generation)3–10+ (планирование, вызовы инструментов, проверки)
Основные затратыТокены retrieval + generationТокены + latency + penalty за ошибки
Измерение стоимоститокены × ценаΣ(шаг)[токены×цена + latency + penalty]
ОптимизацияУлучшение retrieval, кэшированиеPruning шагов, early stopping, better planning

Вывод: в Agentic RAG cost of reasoning — более сложная метрика, требующая учёта динамики выполнения.


8. Пет-проект для закрепления

Задача: Разработать агента для ответа на вопросы по документации (например, по Python), который умеет искать в нескольких источниках (веб, локальная БД, код). Измерить и оптимизировать его cost of reasoning.

Инструменты:

  • Python + LangChain или собственный фреймворк.
  • LangSmith для трейсинга.
  • SQLite для хранения логов.
  • Модель: GPT-4o-mini (дешёвая) для экспериментов.

Шаги:

  1. Реализовать агента с 3 шагами: анализ запроса → поиск → генерация ответа.
  2. Добавить логирование каждого шага (токены, latency, ошибки).
  3. Посчитать CPST на 50 вопросах.
  4. Ввести pruning: если поиск дал высокий score (например, >0.9), пропустить шаг проверки фактов.
  5. Сравнить CPST до и после pruning.

Ожидаемый результат: снижение CPST на 20–40% без потери качества ответов (проверить accuracy на тестовом наборе).


9. Связь с другими вопросами

ВопросТема
5Оценка retrieval — основа для понимания влияния ошибок поиска на cost
7Latency — один из компонентов cost of reasoning
9Обновление документов может влиять на количество шагов (например, переиндексация)
1Архитектура RAG — база для построения агента
2Проблема контекста может увеличивать количество шагов (разбиение запроса)
3Chunking влияет на retrieval и, косвенно, на cost (больше чанков → больше шагов)

10. Навигация


Навигация