Перевірка бюджету
Вузол, який питає, чи вкладається майбутній виклик моделі в політики, бюджети і, якщо ви її задали, власну алокацію вузла, — і розгалужує виконання до того, як зарезервовано будь-які гроші.
5 хв читання
Перевірка бюджету питає, чи був би дозволений майбутній виклик моделі, до того як зарезервовано будь-які гроші. Якщо відповідь — так, виконання йде до виклику. Якщо ні, виконання йде на гілку Відмова, і флоу вирішує, що почує той, хто викликає.
- Вузол
- Перевірка бюджету
- Тип
budget_check- Категорія
- Гроші
- Порти
- Дозволити
defaultпідключення обовʼязкове - Відмова
denyпідключення необовʼязкове
- Дозволити
- Завершує шлях
- Ні
Що робить вузол
Вузол оцінює виклик вузла AI-модель, до якого веде його ланцюжок, так само, як оцінюватиметься холд цього виклику. Потім він перевіряє виклик одним із двох способів — його задає Який бюджет перевіряти.
Глобальна політика — так перевіряє новий вузол. Вузол застосовує політики й читає грошові бюджети, під які підпадає виклик: організації, проєкту, операції та вашого клієнта. Якщо холд умістився б, виконання виходить через Дозволити. Якщо відмовляє політика або в бюджеті немає місця для холду, воно виходить через Відмова з
policy_deniedабоbudget_exceeded.Алокація вузла. Вузол спершу перевіряє, як описано вище, і відмова цієї перевірки головніша. Потім він перевіряє виклик за власним лімітом для моделі, до якої веде ланцюжок: те, у скільки обійшлися виклики після цього вузла, рахуючи за їхніми оцінками, разом із холдом цього виклику має вкладатися в ліміт. Модель без свого рядка отримує ліміт за замовчуванням, а без ліміту за замовчуванням проходить без ліміту вузла. Відмова алокації йде на Відмова з
budget_exceeded.
Вузол лише читає й нічого не резервує. Три обмеження залишено виклику моделі — він перевіряє їх, коли бере холд: бюджет На операцію, Одночасні резерви бюджету й кредити вашого клієнта. Тому в AI-модель є свій порт Відмова. Під навантаженням вузол може ще й пропустити виклик, холд якого потім буде відхилено.
Коли виклик оцінити не можна, вузол пропускає виконання, і вирішує виклик моделі.
Коли використовувати
Щоб відмовити до того, як зарезервовано гроші, і вибрати, що буде далі: дешевшу модель через Запасний шлях, відповідь із кешу, відмову з власним кодом через Відхилити запит.
Щоб дати одному флоу частку грошей на кожну модель окремо від бюджетів проєкту: задайте алокацію вузла.
Відмова цього вузла не надсилає подій вебхуків. operation.denied надсилається, коли сам виклик моделі відхилено політикою або бюджетом.
Виконання, яке закінчилося як rejected після відмови вузла, зберігає в cost.estimated оцінку відхиленого виклику: гроші, які відмова зберегла, а не витрачені. Гілка Відмова, яка відповідає без виклику моделі, закінчується як completed з тією самою оцінкою й без фактичної вартості.
Налаштування
| Налаштування | Для чого воно |
|---|---|
mode | Що перевіряє вузол — policy, політики й бюджети, під які підпадає виклик, або node, те саме й потім алокацію вузла. Новий вузол перевіряє policy. |
window | Період, у якому рахується алокація, — daily, monthly або total. Читається лише з алокацією. Без нього — monthly. |
allocations | Рядки алокації, по одному на модель, — код моделі й ліміт, десяткове число, записане текстом, наприклад 25.00. Модель трапляється не більше ніж в одному рядку. Читається лише з алокацією. |
default_limit | Ліміт моделі, у якої немає свого рядка, — десяткове число, записане текстом. Необов’язковий. Без нього така модель проходить без ліміту вузла. Читається лише з алокацією. |
У конструкторі Який бюджет перевіряти вибирає між варіантом Глобальна політика та алокацією вузла. Коли вибрано алокацію, Вікно задає період, у якому рахується ліміт, а Додати алокацію додає рядок: модель і її ліміт. Панель позначає чинний рядок — рядок моделі, до якої веде вузол. Ліміт за замовчуванням для моделі без рядка необов’язковий.
Те, що рахує алокація, стосується цього вузла цього флоу й однієї моделі та вікна. Ліміт — десяткове число з крапкою й без знака валюти, наприклад 25.00.
Порти
| Порт | Виконання виходить через нього, коли |
|---|---|
| Дозволити | Виклик було б дозволено. Обов’язковий |
| Відмова | Виклик відхилено. Необов’язковий |
Коли в Відмова немає зв’язку, відмова стає відповіддю на запит: той, хто викликає, отримує budget_exceeded або policy_denied, а виконання закінчується як rejected. Перевірка під час публікації попереджає про такий вузол — Порти й розгалуження.
Вихід
Коли виклик було б дозволено, вузол залишає те, що прочитав:
{
"allowed": true,
"available": "24.50000000",
"would_reserve": "0.00057600",
"node_budget": "within_limit",
"node_budget_limit": "25.00000000",
"node_budget_spent": "3.12000000"
}would_reserve— холд, який узяв би виклик, аavailable— те, що лишилося в найтіснішому з бюджетів, під які підпадає виклик.availableнемає, коли під виклик не підпадає жоден бюджет.Три поля
node_budgetє лише з алокацією.node_budgetкаже, як прочитано алокацію: тут — у межах ліміту, а інакше — що в моделі немає рядка або що виклик не вдалося оцінити.
Коли вузол відмовляє, denied_by каже, хто відмовив, — політики й бюджети чи алокація вузла:
{ "allowed": false, "error_code": "budget_exceeded", "denied_by": "policy" }{ "allowed": false, "error_code": "node_budget_exceeded", "denied_by": "node_allocation" }Вузол Умова на гілці Відмова читає їх за шляхом nodes.<key>.output.denied_by, де <key> — ключ цього вузла у флоу. Код, який той, хто викликає, отримує за відхилену алокацію, — budget_exceeded; node_budget_exceeded залишається у виході й у трасуванні.
Помилки
Налаштування вузла перевіряються під час перевірки флоу та під час його публікації.
В API запис issues називає таку перевірку в params.detail; його code — invalid_node_config.
| Перевірка | Повідомлення в конструкторі |
|---|---|
budget_check_unsupported_mode | «{node}» використовує неіснуючий режим бюджету. |
budget_check_unsupported_window | «{node}» використовує неіснуюче вікно бюджету. |
budget_check_invalid_default_limit | Ліміт за замовчуванням «{node}» — недопустима сума. |
budget_check_allocations_not_list | Алокації «{node}» мають бути списком. |
budget_check_needs_allocation | Вузлу «{node}» потрібна хоча б одна алокація або ліміт за замовчуванням. |
budget_check_allocation_not_object | У «{node}» є алокація, яка не є обʼєктом. |
budget_check_allocation_without_model | У «{node}» є алокація без обраної моделі. |
budget_check_duplicate_model | «{node}» виділяє бюджет на {model} двічі. |
budget_check_invalid_limit | Ліміт для {model} на «{node}» — недопустима сума. |
budget_check_unknown_model | Моделі {model} немає в каталозі. |
Перевіряється й місце вузла: він веде рівно до одного AI-модель — Фінансовий ланцюжок.
Приклад
- Запит — Типовий → Перевірка бюджету
- Перевірка бюджету — Дозволити → AI-модель
- AI-модель — Успіх → Повернути відповідь
- Перевірка бюджету — Відмова → Відхилити запит
Перевірка бюджету питає, чи вкладається виклик. Якщо так, AI-модель резервує гроші й викликає модель. Якщо ні, Відхилити запит завершує запит із кодом, який вибрав його автор, і жодних грошей не було зарезервовано.
Див. також
Фінансовий ланцюжок — вузли довкола виклику моделі й порядок, у якому вони стоять.
Бюджети — бюджети, які читає вузол.
Політики — правила, які можуть відхилити виклик.
Коли витрату відхилено — що отримує ваш застосунок за відхилений запит.
Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d