Умова
Вузол, який порівнює одне значення з виконання із заданим значенням і відправляє флоу однією з двох гілок.
4 хв читання
Умова обирає гілку. Він порівнює одне значення з виконання із заданим вами значенням і виходить через Виконано або Не виконано.
- Вузол
- Умова
- Тип
condition- Категорія
- Рішення
- Порти
- Виконано
metпідключення обовʼязкове - Не виконано
not_metпідключення обовʼязкове
- Виконано
- Завершує шлях
- Ні
Що робить вузол
Вузол читає значення за шляхом зі свого поля — у вході, у контексті або у виході ранішого вузла — і порівнює його зі своїм значенням за своїм оператором. Якщо порівняння виконується, виконання виходить через Виконано, інакше — через Не виконано. Вузол ніколи не валить виконання: якщо шлях нічого не знайшов, умова не виконується; не виконується й порівняння, яке оператор не може зробити, — крім не дорівнює: для числа проти числа, записаного текстом, воно виконується (див. Помилки).
{ "field": "context.plan", "operator": "eq", "value": "pro" }Коли використовувати
Обробити один вид запитів інакше, ніж інший: за тарифом, регіоном, розміром входу.
Відхилити запит до виклику моделі: ведіть одну з гілок у Відхилити запит.
Розгалужуватися за тим, що залишив раніший вузол, — за виходом Перетворення або за грошовими виходами вузлів перед AI-модель.
Вузол перевіряє одне порівняння. Для двох поставте два вузли поспіль.
Налаштування
| Налаштування | Для чого воно |
|---|---|
field | Шлях до значення, що перевіряється, — у вхід, у контекст або у вихід ранішого вузла, наприклад context.plan. Обов’язковий. |
operator | Як порівнюється значення — eq, neq, gt, gte, lt, lte, contains, in або exists. Обов’язковий. |
value | З чим порівнюється значення. Його тип зберігається — число, текст, true, false, null або список для in. Число для gt, gte, lt і lte; для exists не задається. |
У конструкторі налаштування — Поле, Оператор і Значення. Новий вузол перевіряє input.plan.
| Оператор | Виконується, коли значення за шляхом… |
|---|---|
| дорівнює, не дорівнює | дорівнює або не дорівнює значенню |
| більше ніж, більше або дорівнює, менше ніж, менше або дорівнює | так співвідноситься з числом |
| містить | — текст, у якому є текст значення, або список, серед елементів якого є значення |
| є одним із | — один з елементів списку |
| існує | взагалі є, навіть якщо це null. Значення задавати не потрібно |
Значення зберігає свій тип. У конструкторі значення дорівнює і не дорівнює зберігає свій тип, якщо читається як число,
true,false,nullабо JSON — список, об’єкт; усе інше — текст. Текст, який читається як одне з них, береться в лапки:"5". Список для є одним із вводиться через кому, і кожен елемент читається так само. Чотири оператори порядку приймають число, а містить — текст як він введений, тому в списку він знаходить текстовий елемент, але не число.Число не дорівнює тексту.
5і"5"не рівні: дорівнює не виконується, а не дорівнює виконується, і в обох випадках трасування каже, що дві сторони були різних типів. Два числа порівнюються як числа:1дорівнює1.0.Чотирьом операторам порядку потрібне число. Значення за шляхом може бути числом або десятковим рядком на кшталт
"12.50", тому грошова сума і число, яке той, хто викликає, надіслав текстом, порівнюються як числа.Рядок контексту обрізається по краях, а той, що лишився порожнім, стає
null: дорівнює""за контекстом ніколи не виконується, а не дорівнює""виконується для будь-якого надісланого значення. Порожнє значення перевіряють через дорівнюєnull.
Порти
Вузол має два порти, Виконано і Не виконано, і обидва обов’язкові. Флоу, в якому будь-який із них нікуди не веде, не публікується.
Вихід
{ "met": true }Наступний вузол читає його як nodes.<key>.output.met.
Помилки
Помилок вузол не кидає. Шлях, який нічого не знайшов, відправляє виконання через Не виконано за будь-якого оператора, а в трасування пишеться подія warning з unknown_path. Для оператора існує відсутність значення і є відповіддю, і нічого не пишеться.
Два значення, які оператор не може порівняти, — наприклад, слово там, де оператору порядку потрібне число, число там, де містить чекає текст або список, або число проти числа, записаного текстом, — дають подію warning з type_mismatch. Відповідь лишається відповіддю порівняння: така пара не виконується, і виконання виходить через Не виконано, крім не дорівнює: 5 не дорівнює "5", і виконання виходить через Виконано.
[
{ "type": "warning", "node_key": "check", "payload": { "reason": "unknown_path", "field": "context.plan" } },
{ "type": "warning", "node_key": "check", "payload": { "reason": "type_mismatch", "field": "input.amount", "operator": "gt" } }
]Налаштування перевіряються під час перевірки флоу та під час його публікації.
В API запис issues називає таку перевірку в params.detail; його code — invalid_node_config.
| Перевірка | Повідомлення в конструкторі |
|---|---|
condition_needs_field | Вузлу «{node}» потрібне поле для перевірки. |
condition_field_bad_path | «{node}» перевіряє «{path}» — це не шлях у вхідні дані, контекст або вузли. |
condition_field_unknown_node | «{node}» перевіряє «{path}», але вузла «{ref}» у флоу немає. |
condition_field_later_node | «{node}» перевіряє «{path}», але «{ref}» не виконується раніше за нього — його виходу там ще немає. |
condition_unsupported_operator | «{node}» використовує неіснуючий оператор. |
condition_needs_value | Вузлу «{node}» потрібне значення для порівняння. |
condition_value_not_number | Значення вузла «{node}» має бути числом: його оператор ({operator}) порівнює числа. |
condition_value_not_list | Значення вузла «{node}» має бути непорожнім списком: його оператор перевіряє, що поле входить до списку. |
Приклад
- Запит — Типовий → Умова
- Умова — Виконано → AI-модель
- Умова — Не виконано → Відхилити запит
- AI-модель — Успіх → Повернути відповідь
Вузол перевіряє, що context.plan дорівнює "pro". На запит цього тарифу відповідає модель; будь-який інший відхиляє Відхилити запит з кодом, який задав його автор.
Див. також
Контекст виконання та шляхи — що може читати шлях і що залишає кожен вузол.
Порти й розгалуження — обов’язкові порти й те, куди веде порт.
Надіслати запит — що лежить у контексті виклику.
Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d