Узел Template преобразует и форматирует данные из нескольких источников в структурированный текст с помощью шаблонизатора Jinja2. Используйте его, чтобы объединять переменные, форматировать результаты и подготавливать данные для последующих узлов или конечных пользователей.
Интерфейс настройки узла Template

Интерфейс настройки узла Template

Шаблонизатор Jinja2

Узлы Template используют синтаксис шаблонизатора Jinja2 для создания динамического содержимого, которое адаптируется в зависимости от данных рабочего процесса. Это даёт возможности, близкие к программированию: циклы, условия и фильтры для сложной генерации текста.

Подстановка переменных

Ссылайтесь на переменные рабочего процесса с помощью двойных фигурных скобок: {{ variable_name }}. Вы можете обращаться к свойствам вложенных объектов и элементам массивов через точечную нотацию и квадратные скобки.

Условная логика

Показывайте разное содержимое в зависимости от значений данных с помощью конструкций if-else:

Циклы и итерации

Обрабатывайте массивы и объекты с помощью циклов for для генерации повторяющегося содержимого:
Обработка результатов поиска по базе знаний с помощью узла Template

Обработка результатов поиска по базе знаний с помощью узла Template

Форматирование данных

Фильтры

Фильтры Jinja2 преобразуют данные при отрисовке шаблона:

Обработка ошибок

Корректно обрабатывайте отсутствующие или некорректные данные с помощью значений по умолчанию и условных проверок:

Интерактивные формы

Шаблоны могут генерировать интерактивные HTML-формы для структурированного сбора данных в Chatflow. При отправке значения формы передаются в чат как следующее сообщение конечного пользователя. Формат зависит от атрибута data-format элемента <form>:
  • data-format="json": значения сериализуются как объект JSON. Последующий узел Code или Экстрактор параметров может выполнить JSON.parse (или сопоставить по шаблону), чтобы извлечь каждое поле.
  • Не задан (или любое другое значение): значения передаются как обычный текст, по одной паре name: value в строке. Так проще для чтения LLM.
Например:
Интерактивная форма, отрисованная в интерфейсе чата

Поддерживаемые теги

Не оставляйте пустые строки между тегами внутри <form>. Пустая строка завершает блок HTML при разборе markdown, и любые теги после разрыва не будут отрисованы как поля формы.

Поддерживаемые типы полей ввода

  • Любое другое значение type отрисовывает заглушку «Unsupported tag» вместо поля.
  • Атрибуты валидации HTML5, такие как required, min, max и pattern, не применяются.
  • Браузеры могут автоматически заполнять <input type="password"> и <input type="email"> сохранёнными учётными данными для текущего сайта; используйте <input type="text"> для полей, которые не должны заполняться заранее.

Кнопки быстрого ответа

Отдельный элемент <button>, размещённый за пределами любой формы <form>, отрисовывается как кликабельная кнопка в чате. Используйте такие кнопки, чтобы предлагать готовые ответы или внешние ссылки прямо в сообщении ассистента. Например:
Кнопка быстрого ответа
Если заданы оба атрибута, приоритет имеет data-link. Кнопка без обоих атрибутов отрисовывается, но при нажатии не выполняет никаких действий. Применяйте data-variant и data-size для стилизации, используя те же значения, что перечислены для кнопок формы выше.
В отличие от кнопок формы, отдельные кнопки передают data-variant и data-size в базовый компонент без валидации. Нераспознанное значение может привести к тому, что кнопка отрисуется как обычный текст, а не как стилизованная кнопка.Используйте только перечисленные выше значения.

Ограничения вывода

Вывод узла Template ограничен 400 000 символами (настраивается через TEMPLATE_TRANSFORM_MAX_LENGTH). Это предотвращает проблемы с памятью и обеспечивает разумное время обработки для больших объёмов вывода шаблона.