Блог
Технические обзоры

Квоты и учёт затрат: движок hold-and-settle

Как quota engine Simmetric Chat охватывает токены, хранилище и настоящие деньги - дизайн без второго счётчика на ledger'е, семантика fail-open когда ничего не настроено, и двухфазная hold-and-settle-бронь, делающая потолки расхода заслоном, а не отчётом.

Simmetric Team8 мин чтения14/10/2026
Квоты и учёт затрат: движок hold-and-settle

Потолки, что действуют прежде, чем расход случится

Потолки потребления в многопользовательской AI-установке обычно живут в дашборде - отчёте, который читаешь после того, как счёт существует. Quota engine Simmetric Chat ставит их раньше: в путь запроса, до первого LLM-вызова. Движок покрывает три рода потолков - токены, хранилище и стоимость (арифметика настоящих денег, в центах) - и делает это одной формой везде: один ledger как истина потребления, производные балансы, заслоны до хода, и всегда явный отказ.

Эта статья проходит дизайн: инвариант «нет второго счётчика» на ledger'е, цепочку разрешения, решающую потолок каждого пользователя, работу скользящего окна сброса (история никогда не стирается), и двухфазную бронь hold-and-settle, делающую стоимостную квоту настоящим заслоном, а не отложенной тревогой.

Инструмент оператора (_community_-класс функций). Факты: FACT-CENSUS.md F-QUOTA-1.

Нет второго счётчика

Единственный незаменимый инвариант: истина потребления живёт в СУЩЕСТВУЮЩЕМ token-usage ledger'е платформы. Балансы, holds и якоря сброса - производное состояние - никогда вторая счётная таблица, что могла бы отплыть от реальности. Следствия:

  • Сброс - якорь ledger'а, а не протирание. Сброс пишет строку-якорь, ограничивающую скользящее окно; история использования/расходов никогда не стирается и не обнуляется. Оператор может аудитить назад в любой момент.
  • Заслоны - на уровне службы и до хода - они идут там, где живут доменные данные (до первого LLM-вызова в оркестраторе, до ingesta в путях загрузки). Мидлвэра для обхода нет: проверка в самом пути службы.
  • Математика денег - Decimal-в-центы. Всякая стоимостная выкладка проходит десятичный слой и приземляется целыми центами - никогда плавающая точка, никогда дрейф округления.

Цепочка разрешения

Потолок пользователя решается трёхступенчатой цепочкой, по порядку:

  1. Пользовательская накладка - админ напрямую ставит токен/складские/стоимостные потолки именованному пользователю.
  2. Пресет установки - стандартные ключи уровня установки в системной конфигурации (токен-потолок, гигабайты склада, потолок стоимости в EUR).
  3. Без лимита - sentinel "0"/пустой = НЕ настроено, и движок отказывает открыто: нулевое поведенческих изменение для установок, что никогда не трогают квоты.

Fail-open - свойство с явной формой: quota engine - opt-in инструмент оператора, и «не настроено» обязано никогда не превращаться молча в «заблокировано».

Три рода

Токен-квоты катятся по оконной сумме потребления с ledger'а, ограниченной новейшим якорем сброса. Разрешение возвращает лимит и его исходный уровень - интерфейс может сказать, какая строка решила, по каждому пользователю. Превышение = именованная квотная ошибка, чей payload - ключ, который фронтенд, виджет и коннекторные обработчики читают одинаково.

Складские квоты принуждаются в путях загрузки до отправки в collector: пользовательская накладка, стандарт установки, или без лимита.

Стоимостные квоты - рука настоящих денег - дизайном hold-and-settle, ниже.

Hold-and-settle

Расход в токенах случается, когда случаются токены; расход в евро случается, пока течёт стрим. Стоимостный заслон потому бронирует ДО LLM-вызова и оседает по шве использования:

  1. Reserve (до вызова) - условное обновление, чей предикат база оценивает с блокировкой строки (потрачено + оценка ≤ потолка): N одновременных запросов СЕРИАЛИЗУЮТСЯ вместо того, чтобы проскользнуть всем скопом через устаревшую проверку, плюс строка hold в той же транзакции (бронь атомарна с проверкой).
  2. Settle (по шве) - hold финализируется и возмещает оценку минус факт. Принимое окно - пролётный перебор (факт > оценки) - без мид-стрим-убийства по стоимостной причине; инвариант в покое точен: осевший расход + открытые holds ≤ потолок.

Эта пара даёт стоимостной квоте свойство, которого отчёт иметь не может: потолок действует прежде, чем расход обязуется модели, через row-locked бронь, честную под конкуренцией.

Ценообразование: по модели, заморожено снимком, никогда беззвучно бесплатно

Источник цены по строке: замороженный снимок цен моделей, где есть (поздняя правка тарифа никогда не переписывает историю), иначе ставки резерва установки (доктрина SC-4: модель без цены никогда не обходит стоимостную квоту - неотрицающий встроенный пол действует с warn-once-логом, потому ничто не может показаться бесплатным по недосмотру). Валюты: ledger ведёт итоги по каждой валюте (USD, EUR, GBP, JPY, CNY, INR в v1 - без пересчёта); расход приземляется на done-событии стрима.

Настройка живёт в операторском пути: Settings → Providers → ценовая действие модели (ставки входа/выхода за 1M токенов + валюта), или по-пользовательское ценообразование для own-provider-ключей. N/A = «задайте ставку»; $0.00 = явно бесплатно (локальные модели возвращены в 0).

Principal виджета

Анонимные посетители виджета - не пользователи: потребление виджета привязывается к principal организации виджета - трафик виджета черпает из квотной цепи той организации, а не выдумывает идентичности по гостю. Коннекторный трафик и внутренние чаты делят тот же единственный оркестратор, потому доходные заслоны равномерно покрывают все три класса чат-поверхностей.

Читать дальше

Путеводитель несёт полную операторскую справку - ключи, endpoint'ы, поведение сброса, деталь ценообразования - на /ru/docs/quotas-and-costs:

Provenance: Simmetric Chat docs/QUOTAS.md (v0.28.1, Phases 207/216) + docs/MODEL_COSTS.md (Phases 203/209/216), quotaService.ts/costQuotaService.ts - на зафиксированном census'ом документальном состоянии (SHA aca5b8ff).

Похожие статьи

Синтез-конвейер: противоречия, бюджеты, одобрение
Технические обзоры

Синтез-конвейер: противоречия, бюджеты, одобрение

Как конвейер синтеза Simmetric Chat собирает документы архива в вики-страницы - ходы LLM с бюджетом на прогон, обнаружение противоречий с фильтром сходства и LLM-судьёй, и заслон выборочного одобрения прежде, чем что-то тронет файловую систему.

Simmetric Team · 16/10/20267 мин чтения
Wiki-движок знаний: правила, директивы и синтез
Технические обзоры

Wiki-движок знаний: правила, директивы и синтез

Как wiki-движок Simmetric Chat управляет записями в архивы трёхслойной моделью инструкций - жёсткие правила, принуждаемые кодом, консультативный schema prompt каждого архива, структурированные поля - и что цепочка приоритетов значит на практике.

Simmetric Team · 11/10/20267 мин чтения
Adapter-Contract коннекторов: каналы и лимиты
Технические обзоры

Adapter-Contract коннекторов: каналы и лимиты

Как Simmetric Chat направляет внешние каналы (Telegram, Discord, Slack, WhatsApp) через единый adapter contract в ту же обоснованную RAG-pipeline - с ограничением запросов и дневных сессий на защите workspace.

Simmetric Team · 10/10/20267 мин чтения