Порти й розгалуження: як флоу обирає шлях

Порт — це іменований вихід вузла. Які порти обов’язково підключати і що відбувається, коли вузол виходить через непідключений.

2 хв читання

Вузол закінчує роботу, виходячи через один зі своїх портів — іменованих виходів. Зв’язок починається в порту й веде до наступного вузла, тому порт, через який вийшов вузол, і є гілкою, якою йде флоу.

Один порт — один зв’язок

Більшість вузлів має один порт, Типовий. Вони роблять свою роботу й передають виконання далі. Вузол, який ухвалює рішення, має порт на кожен результат.

  • Запит — Типовий → Умова
  • Умова — Виконано → AI-модель
  • Умова — Не виконано → Відхилити запит
  • AI-модель — Успіх → Повернути відповідь

Тут Умова виходить через Виконано або через Не виконано, і кожен із двох портів веде до свого вузла.

  • Порт має не більше одного зв’язку. Другий зв’язок із того самого порту — помилка, і флоу не публікується.

  • В один вузол може приходити кілька зв’язків. Гілки знову сходяться там, де це зручно для флоу.

  • API називає порт за кодом — met, not_met, rate_limit. Конструктор показує його назву вашою мовою.

Обов’язкові й необов’язкові порти

Обов’язковий порт має бути підключений. Флоу, у якому обов’язковий порт нікуди не веде, не публікується.

Більшість портів обов’язкові. Необов’язкові — це порти, через які вузол виходить, коли виклик відхилено або він завершився помилкою.

  • AI-модель — Помилка, Пул вичерпано і Відмова необов’язкові. Обов’язковий лише Успіх.

  • Перевірка бюджету — Відмова необов’язковий.

  • HTTP-запит — Помилка необов’язковий.

Порт, який нікуди не веде

Необов’язковий порт можна залишити без зв’язку. Коли вузол виходить через такий порт, іти нікуди, і те, що обробила б гілка, стає відповіддю на весь запит.

  • Відмова повертається тому, хто викликав, як відмова. Коли Перевірка бюджету відмовляє, а гілки Відмова у нього немає, той, хто викликав, отримує budget_exceeded або policy_denied, і виконання закінчується зі статусом rejected.

  • Помилка повертається тому, хто викликав, як ця помилка, і виконання закінчується зі статусом failed.

Один порт має запасний вихід. Коли спроби виклику моделі закінчилися без відповіді, AI-модель виходить через порт Пул вичерпано. Коли в цього порту немає зв’язку, а в порту Помилка він є, виконання йде гілкою Помилка. Коли не під’єднано жодного з них, той, хто викликав, отримує помилку pool_exhausted.

Про два такі порти перевірка під час публікації попереджає, бо без них змінюється те, що отримує ваш застосунок.

  • AI-модель без гілки Помилка — помилка провайдера завершує помилкою всю операцію.

  • Перевірка бюджету без гілки Відмова — відмова йде тому, хто викликав, а не гілкою.

Попередження публікацію не зупиняє.

unrouted_port — це код виконання, яке вийшло з вузла через порт без зв’язку й не мало ні помилки, ні відмови, щоб відповісти ними. Перевірка обов’язкових портів потрібна для того, щоб опублікований флоу до нього не доходив.

Вузли без портів

Повернути відповідь і Відхилити запит портів не мають, бо вони закінчують шлях. Кожен шлях флоу має закінчитися в одному з них. Будь-який інший вузол, до якого доходить шлях і з якого не виходить жоден зв’язок, — помилка, і флоу не публікується.

Порти всіх вузлів

ПортКлючВузли
Типовийdefault
  • Запит підключення обовʼязкове
  • Оцінка вартості підключення обовʼязкове
  • Перевірка бюджету «Дозволити» підключення обовʼязкове
  • Резерв бюджету підключення обовʼязкове
  • Списання та повернення підключення обовʼязкове
  • Нотатка у трасуванні підключення обовʼязкове
  • Перетворення підключення обовʼязкове
  • Запис у кеш підключення обовʼязкове
  • Запасний шлях підключення обовʼязкове
  • Черга підключення обовʼязкове
  • HTTP-запит підключення обовʼязкове
Успіхsuccess
  • AI-модель підключення обовʼязкове
Помилкаerror
  • AI-модель
  • HTTP-запит
Пул вичерпаноrate_limit
  • AI-модель
Відмоваdeny
  • Перевірка бюджету
  • AI-модель
Виконаноmet
  • Умова підключення обовʼязкове
Не виконаноnot_met
  • Умова підключення обовʼязкове
Влучанняhit
  • Пошук у кеші підключення обовʼязкове
Промахmiss
  • Пошук у кеші підключення обовʼязкове
Схваленоapproved
  • Потрібне схвалення підключення обовʼязкове
Відхиленоrejected
  • Потрібне схвалення підключення обовʼязкове

Що читати далі

Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d