Себестоимость AI-диалога: budget cap, routing моделей и cost/ticket за 30 дней
Себестоимость AI-диалога я контролирую четырьмя рычагами: budget cap на один диалог, routing cheap→strong только по правилам, метрика cost per closed ticket и дашборд за 30 дней. Без cap и routing «успешный» агент просто сжигает маржу на длинных тредах.
Я не оптимизирую «токены ради токенов». Я считаю деньги на закрытый тикет/диалог и режу хвосты, где модель думает впустую. Ниже — production-контур для МСП, который собираю за 2–4 недели.
Budget cap на диалог: жёсткий потолок
Cap — это не «лимит в .env на месяц», а потолок на conversation_id с понятным поведением при превышении.
| Параметр | Зачем | Типовое значение для МСП |
|---|---|---|
max_usd_per_dialog | стоп по деньгам | $0.15–0.80 в зависимости от канала |
max_tokens_in / max_tokens_out | защита от простыней | in 12–40k, out 1–4k на ход |
max_turns | анти-зацикливание | 12–25 ходов |
max_tool_calls | tool-storm | 8–20 на диалог |
max_wall_time_min | зомби-сессии | 30–90 мин |
Поведение при hit cap (фиксирую до боя):
- Soft stop — агент завершает ход коротким «передам человеку», пишет reason
BUDGET_CAP. - Handoff — задача владельцу + summary без повторного «дорогого» reasoning.
- No silent drop — клиент не остаётся в пустоте; статус в CRM обязателен.
- Исключения — VIP/эскалация L2 только по whitelist, с отдельным cap.
Чеклист внедрения cap:
- счётчик cost обновляется после каждого completion и tool-раунда;
- cap читается из конфига канала (TG ≠ email ≠ голос);
- алерт в Slack/TG, если 5%+ диалогов упираются в cap за сутки;
- postmortem на top-10 самых дорогих диалогов раз в неделю.
Routing cheap / strong: когда дорогая модель
Дорогая модель по умолчанию — самый частый способ убить unit-экономику. Я держу две+ линии и маршрутизатор.
| Слой | Модель (логика) | Когда |
|---|---|---|
| L0 classifier | tiny / cheap | intent, язык, spam, «нужен человек?» |
| L1 workhorse | mid / cheap | FAQ, статус заказа, шаблонные ответы |
| L2 strong | frontier | сложный scope, конфликт, юр./деньги, 3-й failed L1 |
| L3 human | — | cap, policy, клиент просит человека |
Правила routing (примеры, которые реально режут cost):
| Сигнал | Действие |
|---|---|
| Известный intent + hit KB | L1, без strong |
| Confidence L1 < порога | один retry L1 с другим prompt или escalate L2 (не оба сразу) |
| Слова: договор, претензия, возврат денег | сразу L2 или human |
| Тред > N ходов без resolve | L2 один раз, затем human |
| Tool-only шаг (записать поле CRM) | mini / cheap, без «рассуждений» |
Анти-паттерны:
- Strong на каждый turn «на всякий случай».
- Двойной вызов cheap+strong параллельно без нужды.
- Гигантский system prompt + вся история на L2, когда хватило summary.
- RAG «всё подряд» в контекст вместо top-k.
Cost per closed ticket и дашборд 30 дней
Считать «$/1k tokens» полезно инженеру. Собственнику нужен cost per closed ticket (или per resolved dialog) и воронка потерь.
Формула, которую я кладу в дашборд:
cost_per_closed = (sum model_cost + sum tool_cost + sum embed_cost) / count(closed_with_reason)
Дополнительно:
| Метрика | Смысл | Красная зона |
|---|---|---|
cost_p50 / cost_p95 диалога | хвост дорогих тредов | p95 > 5–8× p50 |
% dialogs_hit_cap | cap слишком жёсткий или агент тупит | > 8–10% |
% routed_L2 | strong ест бюджет | растёт без роста CSAT/close |
turns_to_resolve | болтливость | растёт при том же close-rate |
cost / closed vs baseline week0 | тренд 30 дней | +30% без объяснения |
human_takeover_rate | cap/quality | скачок = смотреть quality, не только $ |
Минимальный дашборд (Grafana/Metabase/таблица — не важно):
- День → spend total, dialogs, closed, cost/closed.
- Разрез: канал, intent top-10, model tier.
- Top-20 самых дорогих
conversation_idсо ссылкой на trace. - Алерты: суточный spend > plan; p95 cost; spike L2 share.
Таблица «что править за 30 дней»:
| Неделя | Фокус | Ожидаемый эффект |
|---|---|---|
| 1 | cap + логи cost на turn | видимость, стоп сюрпризов |
| 2 | routing L0/L1, урезать system/history | −20–40% spend на FAQ |
| 3 | tool-cost, лишние вызовы CRM/search | −10–25% на agentic-тредах |
| 4 | калибровка порогов escalate + top expensive | стабилизация cost/closed |
Практика: как не сломать качество, режа cost
Cost-only оптимизация роняет CSAT. Я держу пару quality-метрик рядом с деньгами.
| Quality | Рядом с cost | Правило |
|---|---|---|
| CSAT / оценка диалога | cost/closed | нельзя резать L2, если CSAT падает > X |
| % resolve without human | hit_cap | если resolve↓ и hit_cap↑ — cap мал или KB дырявая |
| Regress suite (N сценариев) | после смены routing | merge только если suite зелёный |
| Доля «пустых» ответов | turns | дешевле не значит короче до абсурда |
Чеклист перед сменой модели/роутера в prod:
- Eval-набор из реальных тикетов (не синтетика alone).
- Canary 10–20% трафика.
- Сравнение cost/closed и resolve/CSAT на canary.
- Откат одной кнопкой (feature flag routing).
- Запись в changelog: что ждали по $ и что получили за 72 часа.
Часто задаваемые вопросы
С чего начать, если сейчас «просто один GPT на всё»?
С логирования cost на conversation_id и cap. Routing без цифр — гадание. Через неделю top-expensive уже подскажут, куда ставить cheap.
Budget cap не будет бесить клиентов обрывом?
Будет, если silent drop. Нужен soft stop + handoff и нормальный текст. На практике упираются в cap единицы процентов, если L1/KB настроены.
Чем cost per closed лучше cost per message?
Message дешёвый и бесполезный как KPI бизнеса: агент может дешево болтать 40 ходов. Closed ticket привязан к работе, которую вы продаёте клиенту внутри.
Нужен ли отдельный FinOps-человек?
На объёме МСП достаточно дашборда и 30 минут в неделю у техлида/интегратора. FinOps имеет смысл, когда агентов много и spend пятизначный.
Читайте также
- Cost per resolved: unit-экономика AI за 90 дней
- Production AI-контур: очереди, retry, идемпотентность, HITL
- Observability AI-агентов: eval, логи, red team, scorecard за 14 дней
Нужен контур cap + routing + дашборд cost/ticket под ваш AI-канал — напишите на https://raisovich.ru
Зачем routing cheap/strong, если cap уже стоит?
Cap режет хвост по деньгам; routing не даёт дорогой модели ходить на FAQ и tool-only шаги, где хватает L1 — так падает cost/closed без silent drop.
Какие метрики смотреть на дашборде за 30 дней?
Cost per closed, p50/p95 диалога, доля hit cap, share L2 и turns_to_resolve рядом с CSAT — иначе оптимизация только по $ роняет качество.
Как безопасно сменить модель или роутер в prod?
Eval на реальных тикетах, canary 10–20%, сравнение cost/closed и resolve/CSAT, feature flag для отката и changelog за 72 часа.
Подпишитесь на @raisovich_news
Первыми получайте новые статьи об AI-автоматизации, нейросетях для бизнеса и создании сайтов. Без спама — только полезный контент.
Часто задаваемые вопросы
Зачем routing cheap/strong, если cap уже стоит?
Cap режет хвост по деньгам; routing не даёт дорогой модели ходить на FAQ и tool-only шаги, где хватает L1 — так падает cost/closed без silent drop.
Какие метрики смотреть на дашборде за 30 дней?
Cost per closed, p50/p95 диалога, доля hit cap, share L2 и turns_to_resolve рядом с CSAT — иначе оптимизация только по $ роняет качество.