Все ноды/Input / Output/Boundaries
Выход
Точка выхода workflow. Принимает финальный результат и возвращает его пользователю (или как ответ API). Опц. вход files (PT_FILE, несколько ссылок) отдаёт файлы вместе с ответом: внешние/webdav-ссылки скачиваются в системный стор, уже-наши файлы пробрасываются без перезаписи, и в чате показываются (картинка/аудио/вложение). Должна быть хотя бы одна. Поддерживает стриминг ответа. Не имеет exec_out.
Тип в графе: exit
Exec
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Ответ модели с запасным текстом ошибки
Выход отдаёт ответ в чат и подменяет системное сообщение своим, если запуск упал.
- Исполнение + данные
- LLM
- Исполнение + данные + стрим
Запускается сразу
Как применять
Выход — это то, что воркфлоу вернёт: реплику в чат, ответ на вызов по API, сообщение в Telegram. Он обязателен, и в подавляющем большинстве графов он один: все ветки сходятся в него, а не заводят каждая свой.
Как это работает
Значение приходит на порт end — им же идёт стриминг, поэтому ответ модели печатается в чате
по мере генерации. Если поле «Выражение вывода» непустое, оно заменяет пришедшее значение
целиком: удобно, когда воркфлоу дёргают по API и ответ надо собрать из нескольких нод
({{ nodes.answer.output }}), и вредно, если поле заполнили «на всякий случай» — тогда правки
графа выше перестают влиять на ответ.
Порт files возвращает файлы вместе с ответом. Связей в него можно тянуть несколько; внешние
ссылки и файлы с WebDAV скачиваются в файловое хранилище рабочего пространства (там их видно
на вкладке «Файлы»), а те, что уже лежат в нём, просто пробрасываются без копирования. В чате
они показываются картинкой, плеером или вложением.
«Сообщение об ошибке» срабатывает только на необработанном сбое — когда упавшую ноду
некуда было увести по ветке on_error. В шаблоне доступны {{ error }},
{{ failed_node_id }} и {{ failed_node_type }}; пустое поле означает стандартное сообщение
платформы. Если выходов несколько, текст берётся у того, который в этом запуске отработал.
Исполнительного выхода у ноды нет: после выхода не идёт ничего.
Частые ошибки
- По выходу на каждую параллельную ветку. Два выхода, живые в одном запуске, — ошибка
exec.multi_exit_raceна запуске и деплое (в редакторе это предупреждение). Оба пишут результат, побеждает последний в порядке нод графа, а в чате виден только тот, кто заговорил первым. Сводите ветки в один выход, при необходимости через wait_all. Отдельные выходы законны только для взаимоисключающих веток — ветвей одного if или switch. - Выход, до которого доходит только связь данных. Он не запустится, а запуск закончится
пустым результатом. Валидатор ловит это как
graph.exit_no_exec_trigger: нужна связь исполнения по всему пути от входа. - Ждать сообщения, когда отвечать нечем. Пустое значение на
endв чат не уходит вовсе — и это не ошибка: статус запуска останетсяcompleted.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Messageend | Исполнение + данныеexecute_data | — | Final value returned to the user. Overridden by the Output Expression field when that is non-empty. |
Filesfiles | Данныеdata | file | Files returned alongside the answer. несколько связей |
Выходы
—
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Сообщение об ошибкеerror_text | string | "" | Текст, который пишется в чат при необработанном исключении в воркфлоу. Пусто — используется сообщение платформы по умолчанию. поддерживает шаблоны |
Выражение выводаoutput_mapping | string | "" | Выражение, формирующее финальный вывод, напр. {{nodes.llm_1.output}}. Непустое значение ЗАМЕНЯЕТ то, что пришло на порт End; оставьте пустым, чтобы вернуть значение с End как есть. поддерживает шаблоны |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.