Сначала холд, потом трата: как вызов остаётся в бюджете

Как Slen резервирует деньги до вызова модели, что холд делает с вашими бюджетами и как его потом рассчитывают.

3 мин чтения

Каждый вызов модели во флоу начинается с холда. До того как спросят провайдера, Slen оценивает, сколько будет стоить вызов, и резервирует эту сумму в ваших бюджетах. После вызова он рассчитывает холд: списание записывает, сколько стоил вызов, а возврат отдаёт холд обратно. Поэтому бюджет может отклонить вызов до того, как тот что-либо стоил. API называет холд авторизацией, а консоль показывает холды на вкладке Авторизации страницы Операции.

Откуда берётся холд

Холд берёт узел AI-модель флоу — под вызов модели этого узла, а рассчитывает его Slen сам после вызова. Холд берёт только вызов модели во флоу.

Что холд делает с бюджетом

Холд — это оценка вызова, умноженная на множитель запаса, поэтому он немного больше, чем ожидаемая стоимость вызова. Бюджет учитывает списанное и зарезервированное вместе: новый холд разрешается, только если и то и другое вместе с новым холдом укладывается в лимит. Иначе вызов отклоняется с budget_exceeded.

Два вида бюджета считают другое. Бюджет На операцию отклоняет отдельный холд, который больше его лимита, с operation_limit_exceeded. Бюджет Одновременные резервы считает холды, открытые одновременно, и отклоняет ещё один с concurrency_limit_exceeded.

Откройте бюджет на странице Бюджеты, чтобы увидеть, как складываются две части: Списано — сколько стоили вызовы, В резерве — сколько держат открытые холды, а Доступно — что осталось от лимита.

Вызов, сделанный для одного из ваших клиентов, ещё и резервирует свою цену в кредитах на его счёте. Статья Кредиты клиентов объясняет этот второй холд.

Чем заканчивается холд

СтатусЧто произошло
authorizedХолд стоит: вызов вот-вот будет сделан, идёт или ещё не рассчитан
capturedВызов рассчитан: его стоимость потрачена, а холд вернулся
overrunВызов стоил больше своего холда. Вся стоимость всё равно потрачена
partially_capturedВызов рассчитан по использованию, которое заведомо неполное
releasedХолд вернули: вызова не было или он не удался
expiredХолд никто не рассчитал вовремя, и Slen вернул его сам

Холд живёт 15 минут. Вызов модели, который флоу передаёт провайдеру на выполнение в фоне, держит свой холд 30 минут от начала вызова. Этот срок ограничивает холд, а не вызов: провайдер продолжает работу, и вызов рассчитывается, когда закончится. В настройках сервиса эти сроки могут быть другими. Раз в минуту Slen возвращает холды, время которых вышло.

Холд, который уже вернули, всё ещё можно списать. Когда оказывается, что вызов был оплачен уже после того, как его холд вернули или он истёк, списание записывает его стоимость и ничего не возвращает второй раз. Тогда холд переходит из released или expired в статус рассчитанного вызова: captured, overrun или partially_captured. Поэтому released и expired значат, что зарезервированные деньги вернулись, а не что ничего не будет потрачено: читайте статус, когда вызов закончится.

Где видны холды

На странице Операции вкладка Авторизации перечисляет холды проекта от новых к старым. Оценка — сколько, как ожидалось, будет стоить вызов, Удержано — его холд, а Списано — сколько вызов стоил. Вкладка Реестр перечисляет движения денег, которые сделали холды. Холд и его списание — там две записи, поэтому не складывайте записи: статья Записи реестра объясняет, как их читать.

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

  • Операции — те же холды через API.

  • Оценка стоимости — сколько, как ожидается, будет стоить вызов, записано в трассировку до его холда.

  • Кредиты клиентов — холд на кредитах вашего клиента.

  • Политики — правила, которые могут отклонить вызов до его холда.

  • Бюджеты — создать бюджет и узнать, сколько от него осталось.