Порти й розгалуження: як флоу обирає шлях
Порт — це іменований вихід вузла. Які порти обов’язково підключати і що відбувається, коли вузол виходить через непідключений.
2 хв читання
Вузол закінчує роботу, виходячи через один зі своїх портів — іменованих виходів. Зв’язок починається в порту й веде до наступного вузла, тому порт, через який вийшов вузол, і є гілкою, якою йде флоу.
Один порт — один зв’язок
Більшість вузлів має один порт, Типовий. Вони роблять свою роботу й передають виконання далі. Вузол, який ухвалює рішення, має порт на кожен результат.
- Запит — Типовий → Умова
- Умова — Виконано → AI-модель
- Умова — Не виконано → Відхилити запит
- AI-модель — Успіх → Повернути відповідь
Тут Умова виходить через Виконано або через Не виконано, і кожен із двох портів веде до свого вузла.
Порт має не більше одного зв’язку. Другий зв’язок із того самого порту — помилка, і флоу не публікується.
В один вузол може приходити кілька зв’язків. Гілки знову сходяться там, де це зручно для флоу.
API називає порт за кодом —
met,not_met,rate_limit. Конструктор показує його назву вашою мовою.
Обов’язкові й необов’язкові порти
Обов’язковий порт має бути підключений. Флоу, у якому обов’язковий порт нікуди не веде, не публікується.
Більшість портів обов’язкові. Необов’язкові — це порти, через які вузол виходить, коли виклик відхилено або він завершився помилкою.
AI-модель — Помилка, Пул вичерпано і Відмова необов’язкові. Обов’язковий лише Успіх.
Перевірка бюджету — Відмова необов’язковий.
HTTP-запит — Помилка необов’язковий.
Порт, який нікуди не веде
Необов’язковий порт можна залишити без зв’язку. Коли вузол виходить через такий порт, іти нікуди, і те, що обробила б гілка, стає відповіддю на весь запит.
Відмова повертається тому, хто викликав, як відмова. Коли Перевірка бюджету відмовляє, а гілки Відмова у нього немає, той, хто викликав, отримує
budget_exceededабоpolicy_denied, і виконання закінчується зі статусомrejected.Помилка повертається тому, хто викликав, як ця помилка, і виконання закінчується зі статусом
failed.
Один порт має запасний вихід. Коли спроби виклику моделі закінчилися без відповіді, AI-модель виходить через порт Пул вичерпано. Коли в цього порту немає зв’язку, а в порту Помилка він є, виконання йде гілкою Помилка. Коли не під’єднано жодного з них, той, хто викликав, отримує помилку pool_exhausted.
Про два такі порти перевірка під час публікації попереджає, бо без них змінюється те, що отримує ваш застосунок.
AI-модель без гілки Помилка — помилка провайдера завершує помилкою всю операцію.
Перевірка бюджету без гілки Відмова — відмова йде тому, хто викликав, а не гілкою.
Попередження публікацію не зупиняє.
unrouted_port — це код виконання, яке вийшло з вузла через порт без зв’язку й не мало ні помилки, ні відмови, щоб відповісти ними. Перевірка обов’язкових портів потрібна для того, щоб опублікований флоу до нього не доходив.
Вузли без портів
Повернути відповідь і Відхилити запит портів не мають, бо вони закінчують шлях. Кожен шлях флоу має закінчитися в одному з них. Будь-який інший вузол, до якого доходить шлях і з якого не виходить жоден зв’язок, — помилка, і флоу не публікується.
Порти всіх вузлів
| Порт | Ключ | Вузли |
|---|---|---|
| Типовий | default |
|
| Успіх | success |
|
| Помилка | error |
|
| Пул вичерпано | rate_limit |
|
| Відмова | deny |
|
| Виконано | met |
|
| Не виконано | not_met |
|
| Влучання | hit |
|
| Промах | miss |
|
| Схвалено | approved |
|
| Відхилено | rejected |
|
Що читати далі
Як побудовано флоу — вхідний вузол, кінцеві вузли й групи палітри.
Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d