Как финансовые узлы стоят вокруг вызова модели

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

4 мин чтения

Четыре узла группы Деньги палитры стоят вокруг вызова модели: Оценка стоимости, Проверка бюджета, Резерв бюджета и Списание и возврат. Вместе с вызовом они составляют финансовую цепочку. Пятый узел группы, Требуется одобрение, ждёт решения человека и в цепочку не входит — Требуется одобрение. Эта страница говорит, что добавляет каждый узел цепочки и в каком порядке флоу может их рисовать.

Кто двигает деньги

Деньги вызова двигает только AI-модель. Когда выполнение доходит до него, Slen резервирует ожидаемую стоимость вызова в ваших бюджетах, вызывает провайдера и после ответа рассчитывает холд. Флоу без Оценка стоимости, Резерв бюджета и Списание и возврат резервирует и тратит ровно столько же, сколько тот же флоу с ними.

  • Проверка бюджета — единственный узел цепочки, который что-то решает. Он спрашивает, был бы вызов разрешён, и отказывает до того, как зарезервированы какие-либо деньги.

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

Сам холд объясняет статья Как работает резервирование бюджета.

Порядок цепочки

  • Запрос — По умолчанию → Оценка стоимости
  • Оценка стоимости — По умолчанию → Проверка бюджета
  • Проверка бюджета — Разрешить → Резерв бюджета
  • Резерв бюджета — По умолчанию → AI-модель
  • AI-модель — Успех → Списание и возврат
  • Списание и возврат — По умолчанию → Вернуть ответ
  • Проверка бюджета — Отказ → Отклонить запрос
  • Узлы перед вызовом — Оценка стоимости, Проверка бюджета и Резерв бюджета — ведут к узлу модели друг через друга, а когда цепочка ветвится, — через узлы Условие.

  • Списание и возврат стоит сразу после узла модели, на его порту Успех.

  • Ветка Отказ узла Проверка бюджета выходит из цепочки. Модель на этой ветке — другой вызов, со своей цепочкой.

Цепочка принадлежит одному вызову модели. Флоу, который вызывает несколько моделей, рисует цепочку для каждого вызова, которому она нужна, и каждый вызов резервирует и рассчитывается сам по себе.

Что требует проверка при публикации

Флоу, который нарушает одно из этих правил, не публикуется.

  • Каждый из узлов Оценка стоимости, Проверка бюджета и Резерв бюджета ведёт ровно к одному AI-модель — только через узлы цепочки и узлы Условие. Узел, который не ведёт ни к одной модели, — это misplaced_finance_node, а узел, чьи ветки ведут к двум моделям или больше, — ambiguous_finance_chain. Узел другого вида на пути, например Преобразование, обрывает там цепочку.

  • Каждая связь, которая приходит в Списание и возврат, идёт от порта Успех узла AI-модель, и хотя бы одна такая связь есть. Узел с любой другой связью или без связей — это misplaced_finance_node.

  • Ни до Очередь, ни до Требуется одобрение нельзя дойти от Резерв бюджета раньше, чем до модели: park_inside_finance_chain. Проверка идёт по всем связям, кроме ветки Отказ, через узлы любого вида — Условие после Резерв бюджета, чья другая ветка ведёт к Очередь, тоже нарушает правило. У ожидающего выполнения ничего не зарезервировано, а холд берётся, когда делается вызов.

Порядка узлов перед вызовом между собой проверка не требует: она спрашивает, куда они ведут.

Что каждый узел оставляет в трассировке

УзелЧто трассировка выполнения показывает на нём
Оценка стоимостиСобытие estimated с прогнозом вызова, а когда вызов получил ответ, — второе событие estimated с оценкой, по которой взят его холд
Проверка бюджетаСобытие budget_denied или policy_denied, когда он отказывает
Резерв бюджетаСобытие reserved холда вызова, когда вызов получил ответ
AI-модельПопытки у провайдера и ответ. События estimated, reserved и captured вызова стоят здесь, когда в его цепочке нет узла, который бы их принял
Списание и возвратСобытие captured вызова. Стоимость вызова в метриках конструктора считается на этом узле, а не на узле модели

Два события estimated узла Оценка стоимости различаются полем source: preflight — это прогноз, authorize — оценка холда.

Когда выполнение проходит узлы перед вызовом и затем выходит из цепочки — Условие отправляет его другим путём или Проверка бюджета отказывает, — холд так и не берётся, и никаких событий холда на них не пишется.

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