Skip to content
ВозможностиДокументацияЦеныПартнёрыPlaygroundFAQ
Budget ControlLLM APICost Optimization

Откуда растут счета за LLM: разбор паттернов расходов и архитектура budget governor

1 минута чтения

Счёт за $5,000: анатомия перерасхода

В мае 2026 года команда из 8 разработчиков получила счёт от Anthropic на $5,200 за Claude API. В апреле платили $1,100. Никто не менял настройки, не добавлял новых агентов. Что произошло?

Краткий ответ

Контроль расходов на LLM требует budget governor — sidecar-прокси, который перехватывает вызовы, считает стоимость с учётом цены модели и применяет лимиты ($/период) ещё до отправки запроса провайдеру. Три главные причины перерасхода — context bloat, retry storms и CI/CD waste. FlowLink автоматизирует truncation контекста, лимитирует повторы и переключается на дешёвые модели при превышении soft-limit.

Разбор billing-лога показал три паттерна, которые в совокупности увеличили расход в 4.7×:

4.7×

рост счёта за Claude API за один месяцс $1,100 в апреле до $5,200 в мае 2026 — без новых агентов и изменений настроек

Паттерн 1: Context bloat — невидимый рост расходов

Claude Code поддерживает контекст сессии между вызовами. Каждый раз, когда агент «смотрит» файл, делает git diff или читает лог — контекст растёт. Через 2 часа работы сессии может содержать 150,000 токенов контекста. Каждая следующая операция отправляет весь контекст.

Конкретные цифры из billing-лога:

billing-log.txt — sess_abc123
# session_id: sess_abc123, разработчик: ivan@
# Контекст растёт экспоненциально
Вызов 1: context_size=2048, cost=$0.003
Вызов 10: context_size=24000, cost=$0.032
Вызов 30: context_size=89000, cost=$0.118
Вызов 50: context_size=156000, cost=$0.207
Вызов 70: context_size=198000, cost=$0.263
# Итого за одну сессию: $4.87
# × 8 разработчиков × 20 рабочих дней = $780/мес только на context

Митигация

FlowLink автоматически truncates старые сообщения в контексте, оставляя последние N взаимодействий и summary предыдущих:

flowlink-agent.yaml
yaml
# flowlink-agent.yaml
context_management:
max_tokens: 60000 # Жёсткий лимит контекста
summarization_threshold: 40000 # При достижении — summarise
strategy: "sliding_window" # |rolling|sliding_window|summary|
keep_recent: 10 # Всегда храни последние 10 exchange

Паттерн 2: Retry storm — скрытый множитель

Когда LLM provider возвращает 429 Too Many Requests или 529 Overloaded, naïve retry logic с exponential backoff может генерировать больше запросов, чем оригинальный трафик:

retry-storm.log
# Realextract из логов
14:00:01 → POST /v1/messages → 429 (rate limit) # оригинальный запрос
14:00:06 → POST /v1/messages → 429 (retry 1)
14:00:16 → POST /v1/messages → 429 (retry 2)
14:00:36 → POST /v1/messages → 429 (retry 3)
14:01:16 → POST /v1/messages → 200 (retry 4, успех)
# 5 запросов вместо 1. context отправлен 5 раз.
# При context=100k tokens: 5×100k = 500k input tokens за одну операцию

дублирование input-токенов при retry storm5 запросов вместо 1 — весь context отправляется заново на каждой попытке

Реальный случай

В рассматриваемом случае retry storm совпал с периодом перегрузки Anthropic API (outage 12–15 мая). Агенты продолжали retry — и отправляли контекст по 150k токенов снова и снова.

Митигация

Жёсткий лимит повторов плюс failover на резервного провайдера с кэшированием ответа:

flowlink-governor.yaml
yaml
# flowlink-governor.yaml
retry_policy:
max_retries: 2 # Не более 2 повторов
backoff: "exponential"
base_delay: 2s
max_delay: 30s
jitter: true
# При persistent 429 — переключаемся на другого provider
failover:
trigger_after_retries: 2
fallback: "openai/gpt-4o"
cache_response: true # Кэшируем ответ fallback-провайдера

Паттерн 3: Token waste в CI/CD пайплайне

Claude Code, запущенный в GitHub Actions для code review на каждый PR, — типичный паттерн. Но если review запускается на каждый push в feature/* ветку, включая WIP-коммиты:

github-actions-billing.log
# Анализ: GitHub Actions billing breakdown
PR #412 (feature/auth): 14 pushes, 14 reviews
→ 14 × (avg 8k tokens input) = 112k tokens
→ Cost: $1.47
PR #415 (feature/dashboard): 23 pushes, 23 reviews
→ 23 × (avg 12k tokens) = 276k tokens
→ Cost: $3.63
# За неделю: 47 PRs × avg $2.10 = $98.70
# За месяц: ~$400 только на code review WIP-коммитов

Митигация

Запускайте review только на определённых событиях:

.github/workflows/claude-review.yml
yaml
# .github/workflows/claude-review.yml
on:
pull_request:
types: [ready_for_review] # Не draft, не push
paths:
- "src/**" # Не docs/, не README
# НЕ: on: [push] # ← это дорого

Архитектура Budget Governor

FlowLink Budget Governor работает как sidecar-процесс рядом с вашим AI-агентом. Он перехватывает все LLM-вызовы и применяет правила до того, как запрос отправляется к provider:

Архитектура Budget Governor
Жизненный цикл запроса через Governor
  1. LLM-агент
  2. Rate-limit фильтр
  3. Проверка бюджета
  4. Throttle / Failover
  5. Провайдер API

Вот полный конфиг budgets.json:

budgets.json
json
{
"version": "2",
"currency": "USD",
"period": "monthly",
"hard_limits": {
"global": 2000,
"per_agent": {
"claude-code": 800,
"cursor": 600,
"github-copilot": 400
},
"per_team": {
"backend": 800,
"frontend": 500,
"devops": 300,
"ml": 400
}
},
"soft_limits": {
"global": 1500,
"per_agent": {
"claude-code": 600
},
"action": "warn_and_throttle",
"throttle_to": "gpt-4o-mini"
},
"daily_spend_cap": 150,
"alerts": {
"thresholds": [50, 75, 90],
"channels": ["slack:#ai-budget", "email:finops@company.com"]
},
"attribution": {
"enabled": true,
"granularity": "per_pr", # расходы привязаны к PR/issue
"export_to": "bigquery" # для аналитики командам
}
}

Подход sidecar budget governor: плюсы и минусы

Плюсы

  • Перехват на стороне клиента — бюджет виден ещё до отправки запроса провайдеру
  • Автоматический failover на дешёвые модели (gpt-4o-mini) при достижении soft-limit
  • Per-agent и per-team attribution без изменения кода агента
  • Truncation и summarization контекста доступны из коробки

Минусы

  • Дополнительный sidecar-процесс в инфраструктуре рядом с каждым агентом
  • Минимальная задержка на прохождение governor (единицы миллисекунд)
  • Требует аккуратной настройки failover — иначе throttle режет качество ответов

Rate Limit vs Budget: когда что использовать

Частая ошибка — путать rate limiting с budget control. Это разные механизмы для разных целей:

Rate Limit vs Budget Governor: сравнение механизмов контроля расходов на LLM
КритерийRate LimitBudget Governor
ЕдиницаЗапросы/секундуДоллары/период
ЦельЗащитить provider от перегрузкиЗащитить бюджет компании
ОграничиваетСкорость, не стоимостьСтоимость с учётом цены модели
AdaptivityНет (фиксированный RPS)Да (переключение на дешёвые модели)
Примерrate=10 req/s$50/day, auto-switch to mini

FlowLink использует оба: rate limiting для защиты provider и budget governor для контроля расходов. Rate limit стоит перед governor — дешёвый фильтр от burst-трафика.

Per-Agent Attribution: кто сколько тратит

Без attribution вы видите общее число: «$5,200 за май». С attribution вы видите:

flowlink cost report --period=2026-05

С этими данными вы знаете где intervene: Ивану — summarization policy, PR review — event filter, Борису — file chunking.

Настройка Budget Governor за 5 шагов

От запуска sidecar до первого cost-отчёта.

  1. Запустите FlowLink как sidecar

    Разверните FlowLink рядом с AI-агентом: он перехватывает LLM-вызовы и начинает считать стоимость ещё до отправки запроса провайдеру.

  2. Задайте hard_limits

    В budgets.json укажите глобальный лимит и лимиты per-agent / per-team (например, claude-code $800/мес, backend $800/мес).

  3. Настройте soft_limits и throttle

    При достижении soft-limit governor переключается на дешёвую модель (action: warn_and_throttle, throttle_to: gpt-4o-mini), сохраняя работоспособность агента.

  4. Включите alerts

    Укажите пороги срабатывания (thresholds: [50, 75, 90]) и каналы — Slack (#ai-budget) и email finops.

  5. Включите attribution

    Привяжите расходы к PR/issue (granularity: per_pr) и экспортируйте в BigQuery для аналитики по командам.

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

Что такое budget governor для LLM?

Budget governor — это sidecar-прокси, который перехватывает LLM-вызовы вашего AI-агента и применяет лимиты расходов ($ за период) до того, как запрос уйдёт к провайдеру. В отличие от rate limit, он учитывает цену каждой модели и может переключать агента на более дешёвую модель при превышении soft-limit.

Чем budget governor отличается от rate limiting?

Rate limit считает запросы в секунду и защищает провайдера от перегрузки. Budget governor считает доллары за период и защищает бюджет компании, учитывая стоимость модели. FlowLink использует оба механизма: rate limit стоит первым как дешёвый фильтр burst-трафика, за ним — budget governor.

Как context bloat увеличивает счёт за LLM?

Каждый вызов агента отправляет весь накопленный контекст сессии. За 2 часа работы контекст может вырасти до 150 000–200 000 токенов, и каждая следующая операция платит за пересылку всего контекста заново. FlowLink решает это через truncation и summarization старых сообщений (стратегия sliding_window).

Что такое retry storm и как его ограничить?

Retry storm — это серия автоматических повторов при ошибках 429/529. Наивный exponential backoff может отправить контекст по 100k+ токенов 4–5 раз за одну операцию. Решение: жёсткий max_retries: 2, jittered backoff и failover на резервного провайдера с кэшированием ответа.

Нужны ли изменения в коде агента для внедрения FlowLink?

Нет. FlowLink работает как sidecar и не требует правок в коде агента — достаточно направить LLM-вызовы на governor. Конфигурация бюджетов, алертов и attribution описывается декларативно в budgets.json.

Контроль расходов на LLM — не про «запретить использовать AI». Это про видимость: знать, кто, сколько и зачем тратит. Budget Governor даёт эту видимость и инструменты для коррекции — без изменения рабочего процесса разработчиков.

Узнайте, где вы теряете деньги на LLM — за 3 минуты

FlowLink Budget Governor подключается к вашему Prometheus и показывает breakdown расходов по агентам, командам и паттернам. Без изменений в коде — только sidecar.

Посмотреть cost breakdown