跳转到主要内容
⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版
模板节点使用 Jinja2 模板语法将来自多个来源的数据转换和格式化为结构化文本。使用它来组合变量、格式化输出,并为下游节点或最终用户准备数据。
Template node interface

模板节点配置界面

Jinja2 模板

模板节点使用 Jinja2 模板语法创建基于工作流数据自适应的动态内容。这提供了类似编程的功能,包括循环、条件判断和过滤器,用于复杂的文本生成。

变量替换

使用双花括号引用工作流变量:{{ variable_name }}。你可以使用点号和括号语法访问嵌套对象属性和数组元素。
{{ user.name }}
{{ items[0].title }}
{{ data.metrics.score }}

条件逻辑

使用 if-else 语句根据数据值显示不同内容:
{% if user.subscription == 'premium' %}
欢迎回来,高级会员!你可以访问所有功能。
{% else %}
考虑升级到高级会员以获得更多功能。
{% endif %}

循环和迭代

使用 for 循环处理数组和对象以生成重复内容:
{% for item in search_results %}
### 结果 {{ loop.index }}
**分数**: {{ item.score | round(2) }}
{{ item.content }}
---
{% endfor %}
Template formatting example

模板处理知识检索结果

数据格式化

过滤器

Jinja2 过滤器在模板渲染期间转换数据:
{{ name | upper }}
{{ price | round(2) }}
{{ content | replace('\n', '<br>') }}
{{ timestamp | strftime('%B %d, %Y') }}
{{ score | default('无可用分数') }}

错误处理

使用默认值和条件检查优雅地处理缺失或无效数据:
{{ user.email | default('未提供邮箱') }}
{{ metrics.accuracy | round(2) if metrics.accuracy else '未计算' }}

交互式表单

模板可以生成交互式 HTML 表单,用于在聊天界面中进行结构化数据收集:
<form data-format="json">
  <label for="username">用户名:</label>
  <input type="text" name="username" required />
  
  <label for="priority">优先级:</label>
  <input type="select" name="priority" data-options='["low","medium","high"]'/>
  
  <label for="message">消息:</label>
  <textarea name="message" placeholder="输入你的消息"></textarea>
  
  <input type="checkbox" name="urgent" data-tip="标记为紧急"/>
  <button data-variant="primary">提交</button>
</form>
Interactive form rendering

在聊天界面中渲染的交互式表单

当用户提交表单时,响应会成为结构化 JSON 数据,可立即在下游工作流节点中处理。

输出限制

模板输出限制为 80,000 个字符(可通过 TEMPLATE_TRANSFORM_MAX_LENGTH 配置)。这可以防止内存问题并确保大型模板输出的合理处理时间。

常见用例

报告生成 - 将来自多个来源的数据组合成具有一致结构和样式的格式化报告。 API 响应格式化 - 将内部数据结构转换为用户友好的格式以供外部使用。 大型语言模型提示词准备 - 将复杂数据结构化为格式良好的提示词,以提高大型语言模型处理准确性。 邮件和通知模板 - 基于用户数据和工作流结果生成具有动态内容的个性化消息。 **数据转换据格式和结构之间进行转换,以便与外部系统集成。

最佳实践

使用描述性变量名 使模板可读且易于维护,特别是在处理复杂数据结构时。 处理缺失数据 使用默认值和条件检查来防止模板渲染错误。 格式化以提高可读性 通过使用适当的间距、换行符和格式来创建干净、专业的输出。 使用示例数据测试 确保模板处理边缘情况并在不同输入场景下产生预期结果。