Dify 中级实验03模板转换实战——如何用零 Token 完成文本加工Dify 实验系列 · 中级 03/20 | 实验编号DIFY-102-04上篇中级实验02问题分类器——智能路由引擎如何四路分发1. 实验目的掌握Template Transform模板转换节点——基于 Jinja2 模板引擎的文本加工不消耗 LLM Token。理解它比 LLM 节点更适合哪些场景格式确定、规则明确的文本组装报告、邮件、摘要模板用模板零成本秒出只有需要「理解语义」的加工才用 LLM。2. 场景设计电商评论汇总数据库/API 返回原始评价 JSON需要按三种格式输出——摘要summary、分析报告report、邮件正文email。输入product_name: 智能手表 reviews: [{user: 张三, rating: 5, content: 很好用, date: 2026-07-16}, ...] format_type: summary / report / email下拉选择输出按格式类型走对应模板纯 Jinja2 渲染零 Token。3. 节点拓扑开始product_name / reviews / format_type ↓ 解析评价 JSONCode校验 结构化 ↓ 生成采集时间Code当前时间模板不能用 now() ↓ 格式类型分支IF-ELSE3 分支 ├── summary → 摘要模板 → 结束 ├── report → 报告模板 → 结束 └── email → 邮件模板 → 结束4. 关键配置4.1 输入解析Codereviews 是 JSON 字符串先解析成结构化数据同时做空值兜底defmain(reviews:str)-dict:importjsontry:datajson.loads(reviewsor[])exceptException:data[]ifisinstance(data,dict):datadata.get(data,[])return{reviews:data,count:len(data)}4.2 模板转换节点核心摘要模板——空值保护 平均分计算 评分分布{% set rr reviews if reviews else [] %} 【{{ product_name }}】用户评价摘要共 {{ rr | length }} 条 {% set total_rating rr | map(attributerating) | sum %} {% set avg_rating (total_rating / rr | length) | round(1) if rr | length 0 else 0 %} 平均评分{{ avg_rating }} / 5 {% for r in rr %} - {{ r.user }}{{ r.rating }}星{{ r.content }} {% endfor %}报告模板——评分分布统计 按评分排序{% set rr reviews if reviews else [] %} # {{ product_name }} 用户评价分析报告 ## 概览 - 评价总数{{ rr | length }} - 数据采集时间{{ report_time }} ## 评分分布 {% set ratings [5,4,3,2,1] %} {% for r in ratings %} {% set count rr | selectattr(rating, equalto, r) | list | length %} {{ r }} 星{{ count }} 条 {% endfor %}4.3 采集时间Code⚠️Jinja2 模板里没有 now() 函数——Dify 模板环境不提供时间函数。要输出时间用上游代码节点生成再传参defmain()-dict:importdatetimereturn{report_time:datetime.datetime.now().strftime(%Y-%m-%d %H:%M)}5. 运行验证实测三种格式输出summary→ 摘要文本评价数/均分/逐条report→ 结构化报告概览/评分分布/明细email→ 邮件正文主题 关键数据 收尾验证要点输出内容完全由模板渲染节点执行耗时毫秒级、Token 消耗为 0——对比 LLM 生成同格式文本的耗时与成本。6. 采坑点坑现象修复模板用 now()运行报错模板环境无时间函数上游 Code 节点生成时间传参空 reviews 直接遍历无数据时模板报错/输出异常{% set rr reviews if reviews else [] %}空值保护平均分除零reviews 为空时1/0报错if rr | length 0 else 0保护模板转换节点被 LLM 替代每次请求烧 Token、耗时长格式确定场景一律用模板零成本 选型心法规则明确的文本组装 → 模板转换零 Token需要理解语义的加工 → LLM。同一个工作流里两者配合模板负责结构LLM 负责内容。7. 实验文档及源码获取实验文档完整操作步骤DIFY-04模板转换——高级文本加工厂.md源码可直接导入dify102_04_模板转换工厂.yml文章聚焦核心配置与采坑点实验的完整分步操作节点搭建/参数表/调试指引见实验文档原文。下一篇Dify 中级实验04迭代进阶——如何批量处理数据并守住性能边界