Как флоу складывается из узлов

Форма, которая есть у каждого флоу, — вход, решения, вызов модели и ответ — и таблица всех узлов конструктора.

3 мин чтения

Флоу — это граф, который решает, сколько запросу можно потратить. Его узлы — шаги этого решения, а связи между ними говорят, какой шаг следующий. Эта страница показывает форму, которая есть у каждого флоу, и перечисляет все узлы, которые знает конструктор.

От запроса до ответа

  • Запрос — По умолчанию → AI-модель
  • AI-модель — Успех → Вернуть ответ
  • AI-модель — Отказ → Отклонить запрос

Запрос называет код операции, и запускается флоу, привязанный к этому коду. Один запуск флоу — это выполнение. Оно начинается во входном узле и идёт от узла к узлу по связям, по одному узлу за раз, пока какой-то узел его не завершит.

  • Запрос — входной узел. Сюда приходит запрос, и во флоу такой узел ровно один.

  • Узлы в середине принимают решения. Они проверяют бюджет, заглядывают в кеш, сравнивают поле запроса, ждут человека. Каждый из них выходит через один из своих портов, и порт выбирает ветку — см. Порты и ветвление.

  • AI-модель вызывает модель. Это единственный узел, который тратит деньги.

  • Вернуть ответ и Отклонить запрос — конечные узлы. Первый отвечает вызывающему, второй отклоняет запрос с кодом ошибки. Выполнение, которое закончилось в первом, получает статус completed, а во втором — rejected.

Что должно быть в каждом флоу

Флоу проверяется при публикации. Флоу, который нарушает одно из этих правил, не публикуется.

  • В нём один входной узел, и только один.

  • Каждый путь заканчивается в конечном узле.

  • Ни одна связь не ведёт назад, в узел, который путь уже прошёл. Флоу идёт вперёд.

  • Каждый обязательный порт каждого узла подключён.

  • Оценка стоимости, Проверка бюджета и Резерв бюджета ведут к одному вызову модели, а Списание и возврат идёт после его порта Успех, — их правила даёт статья Финансовая цепочка.

Узел, до которого нельзя дойти от входного, публикацию не останавливает. Проверка о нём предупреждает. Все проверки с их кодами перечисляет статья Проверки при публикации.

Группы палитры

Конструктор раскладывает узлы по группам в том порядке, в каком запрос обычно их встречает.

ГруппаДля чего её узлы
ВходТочка, в которой приходит запрос
ДеньгиШаги вокруг денег вызова — его ожидаемая стоимость, проверка бюджета, резерв и его закрытие, одобрение человеком
РешениеВыбор ветки, преобразование данных, заметка в трассировке
КешОтвет из кеша вместо повторной платы за тот же ответ
МодельВызов модели и отметка пути, по которому идут, когда первый выбор отклонён
ВыходОтвет вызывающему, отказ в запросе или ожидание перед тем, как флоу пойдёт дальше

Один узел, HTTP-запрос, заморожен, если сервис не настроен иначе. Версия, опубликованная с ним, продолжает работать, а палитра его больше не предлагает. В новой версии его быть не может: черновик, в котором есть этот узел, не публикуется, пока узел не убран. Что узел делает в версии, опубликованной с ним, говорит статья HTTP-запрос.

Все узлы

УзелТипКатегорияПорты
Запрос sdk_requestВходdefault
Оценка стоимости estimate_costДеньгиdefault
Проверка бюджета budget_checkДеньгиdefault, deny
Резерв бюджета reserve_budgetДеньгиdefault
Списание и возврат capture_releaseДеньгиdefault
Требуется одобрение require_approvalДеньгиapproved, rejected
Условие conditionРешениеmet, not_met
Заметка в трассировке logРешениеdefault
Преобразование transformРешениеdefault
Поиск в кеше cache_lookupКешhit, miss
Запись в кеш cache_writeКешdefault
AI-модель ai_modelМодельsuccess, error, rate_limit, deny
Запасной путь fallbackМодельdefault
Вернуть ответ return_responseВыходНет
Отклонить запрос rejectВыходНет
Очередь queueВыходdefault
HTTP-запрос Замороженhttp_requestВыходdefault, error

Что читать дальше

  • Порты и ветвление — какие порты есть у узла, какие из них обязательно подключать и что делает неподключённый.

  • AI-флоу — как запрос находит свой флоу и через какие состояния проходит флоу.

  • Глоссарий — код операции, версия, выполнение.

  • Откройте флоу на экране AI-флоу или начните с готового на экране Шаблоны.

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