Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Отслеживание затрат

PRX включает встроенную систему отслеживания затрат, мониторящую потребление токенов и расходы на API по всем LLM-провайдерам. CostTracker накапливает использование по запросам, сессиям и провайдерам -- обеспечивая полную видимость того, как агенты потребляют ресурсы API.

Обзор

Каждый запрос к LLM в PRX генерирует запись TokenUsage, содержащую входные токены, выходные токены и связанную стоимость. Эти записи агрегируются CostTracker и могут запрашиваться для отчётности, контроля бюджета и обнаружения аномалий.

Запрос к LLM

    ├── Провайдер возвращает метаданные использования
    │   (input_tokens, output_tokens, кэш-попадания)


Создана запись TokenUsage

    ├── Накопление в CostTracker
    │   ├── Разбивка по запросу
    │   ├── Итоги по сессии
    │   ├── Итоги по провайдеру
    │   └── Итоги по модели

    ├── Проверка бюджета (при настроенных лимитах)
    │   ├── В пределах бюджета -> продолжить
    │   └── Превышен бюджет -> предупреждение / остановка

    └── Запись в конвейер наблюдаемости
        (метрики, журналы, спаны трассировки)

Конфигурация

Включение и настройка отслеживания затрат в config.toml:

toml
[cost]
enabled = true

# Валюта для отображения (не влияет на расчёты).
currency = "USD"

# Как часто сбрасывать накопленные затраты в постоянное хранилище.
flush_interval_secs = 60

# Сохранять данные затрат между перезапусками.
persist = true
persist_path = "~/.local/share/openprx/cost.db"

Бюджетные лимиты

Установите лимиты расходов для предотвращения неконтролируемых затрат:

toml
[cost.budget]
# Дневной лимит расходов по всем провайдерам.
daily_limit = 10.00

# Месячный лимит расходов.
monthly_limit = 200.00

# Лимит на сессию (сбрасывается при старте новой сессии).
session_limit = 2.00

# Действие при достижении лимита: "warn" или "stop".
# "warn" -- запись предупреждения, запросы продолжаются.
# "stop" -- блокировка дальнейших запросов к LLM до сброса периода.
on_limit = "warn"

Лимиты по провайдерам

Переопределение бюджетных лимитов для конкретных провайдеров:

toml
[cost.budget.providers.openai]
daily_limit = 5.00
monthly_limit = 100.00

[cost.budget.providers.anthropic]
daily_limit = 8.00
monthly_limit = 150.00

Структура TokenUsage

Каждый запрос к LLM создаёт запись TokenUsage:

ПолеТипОписание
input_tokensu64Количество токенов в промпте (системный + пользовательский + контекст)
output_tokensu64Количество токенов в ответе модели
cache_read_tokensu64Токены, обслуженные из кэша провайдера (кэширование промптов Anthropic)
cache_write_tokensu64Токены, записанные в кэш провайдера
total_tokensu64input_tokens + output_tokens
costf64Расчётная стоимость в настроенной валюте
providerstringИмя провайдера (напр., "openai", "anthropic")
modelstringИдентификатор модели (напр., "gpt-4o", "claude-sonnet-4-20250514")
timestampdatetimeВремя выполнения запроса
session_idstringСессия агента, сгенерировавшая запрос

CostTracker

CostTracker -- центральная точка агрегации всего использования токенов. Он поддерживает текущие итоги по провайдеру, по модели, по сессии, дневные (сброс в полночь UTC) и месячные (сброс 1-го числа). Трекер потокобезопасен и обновляется после каждого ответа LLM.

Данные цен

PRX содержит встроенную таблицу цен для распространённых провайдеров и моделей. Цены определены за миллион токенов:

ПровайдерМодельВходные (за 1М)Выходные (за 1М)
OpenAIgpt-4o$2.50$10.00
OpenAIgpt-4o-mini$0.15$0.60
OpenAIo3$10.00$40.00
Anthropicclaude-sonnet-4-20250514$3.00$15.00
Anthropicclaude-haiku-35-20241022$0.80$4.00
Anthropicclaude-opus-4-20250514$15.00$75.00
Googlegemini-2.0-flash$0.075$0.30
DeepSeekdeepseek-chat$0.14$0.28

Пользовательские цены

Переопределение или добавление цен для моделей, отсутствующих во встроенной таблице:

toml
[cost.pricing."openai/gpt-4o"]
input_per_million = 2.50
output_per_million = 10.00

[cost.pricing."custom/my-model"]
input_per_million = 1.00
output_per_million = 3.00

Для самостоятельно размещённых моделей (Ollama, vLLM), где вызовы API бесплатны, установите цены в ноль:

toml
[cost.pricing."ollama/llama3"]
input_per_million = 0.0
output_per_million = 0.0

Отчёты об использовании

Команды CLI

bash
# Просмотр сводки затрат текущей сессии
prx cost

# Просмотр дневной разбивки
prx cost --period daily

# Просмотр месячной разбивки по провайдерам
prx cost --period monthly --group-by provider

# Просмотр затрат за конкретный период
prx cost --from 2026-03-01 --to 2026-03-15

# Экспорт в CSV
prx cost --period monthly --format csv > costs.csv

# Экспорт в JSON (для программного потребления)
prx cost --period daily --format json

Пример вывода

PRX Cost Report (2026-03-21)
════════════════════════════════════════════════════
Provider     Model                   Tokens (in/out)    Cost
─────────────────────────────────────────────────────────────
anthropic    claude-sonnet-4-20250514      45.2K / 12.8K    $0.33
openai       gpt-4o                  22.1K / 8.4K     $0.14
openai       gpt-4o-mini              8.3K / 3.1K     $0.00
─────────────────────────────────────────────────────────────
Total                                75.6K / 24.3K    $0.47

Budget Status:
  Session: $0.47 / $2.00 (23.5%)
  Daily:   $3.82 / $10.00 (38.2%)
  Monthly: $42.15 / $200.00 (21.1%)

Бюджетные оповещения

При приближении затрат к бюджетному лимиту PRX предпринимает действия в зависимости от настройки on_limit:

Порогon_limit = "warn"on_limit = "stop"
80% лимитаЗапись предупрежденияЗапись предупреждения
100% лимитаЗапись ошибки, продолжениеБлокировка запросов к LLM, уведомление пользователя
Сброс лимита (новый день/месяц)Сброс счётчиковСброс счётчиков, разблокировка запросов

Бюджетные оповещения также передаются как события наблюдаемости. При включённых метриках Prometheus экспортируются следующие датчики:

prx_cost_daily_total{currency="USD"} 3.82
prx_cost_monthly_total{currency="USD"} 42.15
prx_cost_session_total{currency="USD"} 0.47
prx_cost_budget_daily_remaining{currency="USD"} 6.18
prx_cost_budget_monthly_remaining{currency="USD"} 157.85

Интеграция с наблюдаемостью

Данные затрат интегрируются со стеком наблюдаемости PRX:

  • Prometheus -- счётчики токенов и датчики затрат по провайдерам/моделям
  • OpenTelemetry -- атрибуты спанов prx.tokens.input, prx.tokens.output, prx.cost
  • Журналы -- затраты по запросам журналируются на уровне DEBUG, предупреждения о бюджете на уровне WARN

Замечания по безопасности

  • Данные о затратах могут раскрывать паттерны использования. Ограничьте доступ к отчётам о затратах в многопользовательских развёртываниях.
  • Постоянная база данных затрат (cost.db) содержит историю использования. Включите её в стратегию резервного копирования.
  • Бюджетные лимиты обеспечиваются локально. Они не взаимодействуют с лимитами расходов на стороне провайдера. Настраивайте оба для эшелонированной защиты.

Связанные страницы

Released under the Apache-2.0 License.