Перейти к содержимому

Модуль XI — стоимость и AI FinOps

Модуль XI — это слой стоимости / FinOps для AI: он учитывает то, о чём сообщают коннекторы моделей и провайдеров, позволяет разбивать расходы по любому измерению атрибуции, прогнозирует текущий период и превращает бюджет в реальное принуждение, которое запрещает трату на потолке, а не только сигнализирует о ней. Эта страница — справочник по тому, что FinOps делает сегодня и где заканчиваются его гарантии.

FinOps не реализует заново интеграцию провайдеров — он потребляет поток стоимости моделей/провайдеров и учитывает то, что коннекторы авторитетно вывели или прочитали. Деньги всегда — целочисленное значение в микро-USD (миллионных долях доллара), никогда не float, так что суммы никогда не дрейфуют. Это модуль слоя Intelligence: он владеет приёмом данных (ingestion), бюджетами и аналитикой и предоставляет их через собственное API-пространство имён с RBAC-шлюзами и UI-представления, не касаясь ядра или своих соседей.

Модуль минимален по данным по построению: он хранит счётчики токенов, выведенные стоимости и ссылки атрибуции — никогда промпт, completion или секрет. Стоимость — это данные governance, поэтому чтения шлюзуются по ролям на API, и ни одна сумма в USD никогда не раскрывается конечному пользователю (это свойство канала, а не настройка UI).

Каждое событие cost.sampled (CostSample — см. шину событий) записывается двумя способами:

  • канонический, нормализованный журнал CostRecord (ядровая сущность, ключуемая по id), дедуплицируемый по естественному ключуидентичности бакета (provider / model / session / момент времени плюс каждое измерение атрибуции и происхождение), никогда его значению — так что повторно вытянутый открытый бакет или поздно устаканившийся отчёт апсёртятся на месте, а не считаются дважды в потоке at-least-once;
  • денормализованная строка read-model FinOps, ключуемая по естественным именам атрибуции (provider, model, agent, session, team, project), так что расходы эффективно агрегируются по любому из этих измерений — включая service_tier провайдера.

Бюджет — это ядровая Policy вида budget: измерение (global / model / provider / agent / session / team / project), лимит, период и пороги оповещений. Его action — одно из трёх: alert (только showback, безопасное значение по умолчанию, которое никогда не принуждает), throttle или block. Аналитика предоставляет разбивку расходов по любому измерению, итоги, серию дневного тренда, run-rate и трендовый прогноз текущего периода (с явной полосой доверия), представление эффективности prompt-cache и рекомендации по оптимизации — каждое обосновано записанными данными и честно в отношении своих допущений.

FinOps потребляет cost.sampled из шины событий и производит два эффекта. На ingest, когда потребление пересекает порог бюджета, который оно ещё не пересекало в этом периоде, оно записывает оповещение и эмитирует FindingReport (finding.reported) — только сигнал; доставка в Slack / SIEM / PagerDuty — работа модуля выходных коннекторов, а не FinOps.

Второй эффект — принуждение. Бюджет, чей actionthrottle или block, запрещает трату на потолке через seam BudgetGate, декларируемый в собственных терминах каждого действующего модуля (fire у оркестрации, open у голоса, resolve у роутера моделей); ни один модуль не импортирует FinOps. Шлюз работает ортогонально шлюзу одобрения — действие может быть одобрено человеком и всё равно запрещено бюджетом — и отвечает по cap-эффективной трате с причиной без денег (ни USD, ни имени бюджета на read-only маршруте). Жёсткий block запрещает с HTTP 402, мягкий throttle — с HTTP 429, а отказ пишется в журнал, доступный только для добавления, и аудируется. См. Управление и одобрение.