Умова

Вузол, який порівнює одне значення з виконання із заданим значенням і відправляє флоу однією з двох гілок.

4 хв читання

Умова обирає гілку. Він порівнює одне значення з виконання із заданим вами значенням і виходить через Виконано або Не виконано.

Вузол
Умова
Тип
condition
Категорія
Рішення
Порти
  • Виконано met підключення обовʼязкове
  • Не виконано not_met підключення обовʼязкове
Завершує шлях
Ні

Що робить вузол

Вузол читає значення за шляхом зі свого поля — у вході, у контексті або у виході ранішого вузла — і порівнює його зі своїм значенням за своїм оператором. Якщо порівняння виконується, виконання виходить через Виконано, інакше — через Не виконано. Вузол ніколи не валить виконання: якщо шлях нічого не знайшов, умова не виконується; не виконується й порівняння, яке оператор не може зробити, — крім не дорівнює: для числа проти числа, записаного текстом, воно виконується (див. Помилки).

JSON
{ "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.

Порти

Вузол має два порти, Виконано і Не виконано, і обидва обов’язкові. Флоу, в якому будь-який із них нікуди не веде, не публікується.

Вихід

JSON
{ "met": true }

Наступний вузол читає його як nodes.<key>.output.met.

Помилки

Помилок вузол не кидає. Шлях, який нічого не знайшов, відправляє виконання через Не виконано за будь-якого оператора, а в трасування пишеться подія warning з unknown_path. Для оператора існує відсутність значення і є відповіддю, і нічого не пишеться.

Два значення, які оператор не може порівняти, — наприклад, слово там, де оператору порядку потрібне число, число там, де містить чекає текст або список, або число проти числа, записаного текстом, — дають подію warning з type_mismatch. Відповідь лишається відповіддю порівняння: така пара не виконується, і виконання виходить через Не виконано, крім не дорівнює: 5 не дорівнює "5", і виконання виходить через Виконано.

JSON
[
  { "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