Dify变量太乱?模板转换节点帮你一键格式化输出

Dify的“模板转换”节点就像是一个智能文字处理器,可以将内容以统一的标准格式化输出。例如:

  • 统一格式: 将用户的姓名、年龄、问题拼成一段规范的草稿。
  • 防止混乱: AI 有时处理多个变量会“打架”,先用模板节点理顺,再喂给 AI。
  • 生成结果统一/Markdown: 自动生成一份固定样式的报告或表格。

一. 什么是模板转换节点?

  • 输入:杂乱的数据。
  • 输出:统一格式化后的内容。
功能说明
数据重组把多个变量组合成一段文字
格式美化添加换行、标题、列表等格式
条件拼接根据条件选择不同内容
变量计算简单的数学运算和逻辑处理
Dify模板转换节点数据重组与格式美化功能示意图

二. 参数设置

  • 输入变量:前面要有个变量名称,后面的变量值里可以选择之前节点里产生的变量内容。
  • 代码:Dify 使用 Jinja2 模板引擎,掌握以下几个语法就能应对 90% 的场景。

语法一:变量插入

{# 基本语法:双大括号包裹变量名 #}
你好,{{name}}!

{# 使用 Dify 节点的输出变量 #}
用户问题是:{{#start.user_question#}}

实际例子:

输入变量:name = "小明"
模板:你好,{{name}}!
输出:你好,小明!

语法二:条件判断

{% if score >= 90 %}
  🏆 优秀!成绩:{{score}}分
{% elif score >= 60 %}
  ✅ 及格!成绩:{{score}}分
{% else %}
  ❌ 不及格,成绩:{{score}}分,需要补考
{% endif %}

语法三: 循环

{# 假设 items = ["苹果", "香蕉", "橙子"] #}
购物车商品:
{% for item in items %}
  - {{item}}
{% endfor %}

输出结果:

购物车商品:
  - 苹果
  - 香蕉
  - 橙子

语法四:过滤器(数据加工)

{# 常用过滤器 #}
{{ name | upper }}           {# 转大写 #}
{{ name | lower }}           {# 转小写 #}
{{ num | round(2) }}         {# 保留2位小数 #}
{{ text | truncate(100) }}   {# 截断100字符 #}
{{ list | length }}          {# 获取列表长度 #}
{{ text | default("无") }}   {# 设置默认值 #}

三. 邮件模板案例

目标:根据订单数据生成统一风格的邮件。假设下面是前面节点变量:

  {
    "customer": "李四",
    "amount": 1299.00,
    "items": ["无线耳机", "保护套"],
    "is_vip": true,
    "status": "paid"
  }

代码内容:

{% if order.is_vip %}
尊敬的 VIP 会员 {{order.customer}},
{% else %}
亲爱的 {{order.customer}},
{% endif %}

{% if order.status == "paid" %}
🎉 您的订单已支付成功!

订单金额:¥{{order.amount | round(2)}}
商品清单:
{% for item in order.items %}
  ✓ {{item}}
{% endfor %}

{% if order.is_vip %}
💎 VIP专属福利:您的订单已享受免费加急配送!
{% endif %}

预计发货时间:24小时内

{% else %}
⏳ 您的订单状态:{{order.status}},请耐心等待。
{% endif %}

如有问题,请联系客服:400-xxx-xxxx

输出结果(VIP用户):

尊敬的 VIP 会员 李四,

🎉 您的订单已支付成功!

订单金额:¥1299.00
商品清单:
  ✓ 无线耳机
  ✓ 保护套

💎 VIP专属福利:您的订单已享受免费加急配送!

预计发货时间:24小时内

如有问题,请联系客服:400-xxx-xxxx

最后再加入一个输出即可得到格式标准的答案。

订阅评论
提醒
guest
0 评论
最新
最旧 最多投票
内联反馈
查看所有评论

AI 小菌
现代响应式侧边栏
快捷菜单