Преобразование

Узел, который собирает один объект из значений выполнения и фиксированных значений — для узлов после него и для ответа.

3 мин чтения

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

Узел
Преобразование
Тип
transform
Категория
Решение
Порты
  • По умолчанию default подключение обязательно
Завершает путь
Нет

Что делает узел

Узел проходит свои поля по порядку. Поле с путём берёт значение по этому пути; поле с фиксированным значением берёт это значение. Объект, который составляют поля, — выход узла, и выполнение выходит через По умолчанию.

JSON
{
  "fields": [
    { "to": "tier", "from": "context.plan", "default": "free" },
    { "to": "channel", "value": "web" }
  ]
}

Путь, который ничего не нашёл, даёт полю его значение по умолчанию или null, если у поля его нет. Путь, который нашёл null, даёт null: значение есть.

Когда использовать

  • Ответить вызывающему своим объектом: Вернуть ответ с источником Выход узла отвечает всем выходом этого узла.

  • Собрать значения под короткими именами для Условие или Заметка в трассировке после него.

Узел не собирает промпт модели: AI-модель берёт сообщения из input.messages запроса.

Настройки

НастройкаДля чего она
fieldsПоля объекта, который собирает узел, от 1 до 32, по порядку. У каждого есть имя (to) и либо путь (from) с необязательным значением по умолчанию (default), либо фиксированное значение (value).

В конструкторе Добавить поле добавляет поле. У поля есть Название, Источник — Из пути или Фиксированное значение — и, для пути, значение по умолчанию, которое берётся, когда путь ничего не находит.

  • Имя — от 1 до 64 латинских букв, цифр и подчёркиваний и не начинается с цифры. У двух полей не может быть одного имени.

  • У узла от 1 до 32 полей.

  • У поля есть путь или фиксированное значение, но не оба сразу.

  • В конструкторе фиксированное значение сохраняет свой тип, если читается как число, true, false, null или JSON; всё остальное — текст.

Порты

У узла один порт, По умолчанию, и он обязателен. Флоу, в котором он никуда не ведёт, не публикуется.

Выход

JSON
{ "tier": "pro", "channel": "web" }

Следующий узел читает поле как nodes.<key>.output.<name> — здесь nodes.build.output.tier, если ключ узла — build.

Ошибки

Ошибок узел не выбрасывает. Пути, которые ничего не нашли, называет одно событие warning в трассировке.

JSON
{ "type": "warning", "node_key": "build", "payload": { "reason": "unknown_path", "paths": ["context.plan"] } }

Настройки проверяются при проверке флоу и при его публикации: путь начинается с input, context или nodes, а путь в nodes называет узел, который выполняется раньше этого.

В API запись issues называет такую проверку в params.detail; её code — invalid_node_config.

ПроверкаСообщение в конструкторе
transform_needs_fieldУзлу «{node}» нужно хотя бы одно собираемое поле.
transform_too_many_fields«{node}» собирает больше {max} полей.
transform_field_not_objectУ «{node}» есть поле, которое не является объектом.
transform_field_without_nameУ «{node}» есть поле без пригодного названия: сначала латинская буква или подчёркивание, дальше буквы, цифры и подчёркивания, не длиннее 64 символов.
transform_field_both_sourcesУ поля «{field}» узла «{node}» указаны и путь, и фиксированное значение.
transform_field_without_sourceПолю «{field}» узла «{node}» нужен либо путь, либо фиксированное значение.
transform_field_bad_pathПоле «{field}» узла «{node}» читает «{path}» — это не путь во входные данные, контекст или узлы.
transform_field_repeated«{node}» собирает поле «{field}» больше одного раза.
transform_field_unknown_nodeПоле «{field}» узла «{node}» читает «{path}», но узла «{ref}» во флоу нет.
transform_field_later_nodeПоле «{field}» узла «{node}» читает «{path}», но «{ref}» не выполняется раньше него.

Пример

  • Запрос — По умолчанию → Преобразование
  • Преобразование — По умолчанию → Вернуть ответ

Флоу не вызывает модель. Преобразование собирает объект выше, а Вернуть ответ отвечает им. Выполнение заканчивается статусом completed, и его output — этот объект.

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