必须构建可嵌套、可复用、可动态注入的多层级prompt框架:①三层结构(顶层目标、中层逻辑、底层参数)严格分离;②用dify变量系统解耦;③通过循环语法生成结构化段落;④配置长上下文分块策略;⑤ab测试验证v2.0连贯性提升27%。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中支撑长文章生成、多步骤内容编排或跨段落逻辑一致性等复杂写作任务,必须突破单层Prompt的线性结构,构建可嵌套、可复用、可动态注入的多层级Prompt框架。
第一步:理解多层级Prompt的三层结构
多层级Prompt不是简单拼接多段文字,而是按职责分层:顶层定义写作目标与约束(如“写一篇面向初中生的碳中和科普文,800字,含3个生活案例”),中层组织段落逻辑(如“引言→原理简述→本地实践→行动建议→结语”),底层填充具体参数或知识片段(如RAG检索出的某市光伏装机数据、课标要求的术语难度等级)。【这三层必须严格分离,否则变量冲突或上下文污染会导致输出断裂】
若在顶层直接硬编码案例细节,中层就无法复用到其他城市;若底层未做标准化封装,每次换数据都要重写整个Prompt。
第二步:用Dify变量系统实现层级解耦
在Dify Prompt IDE中,将各层内容分别绑定为独立变量:
① 创建顶层变量 {{writing_task}}:类型设为“文本输入”,用于接收用户原始指令(如“为深圳某中学写双碳主题班会讲稿”);
② 创建中层变量 {{outline_template}}:类型设为“系统变量”,值为预置JSON结构:{"sections": [{"title":"引言","role":"激发兴趣"},{"title":"三个本地案例","role":"具象化概念"}]};
③ 创建底层变量 {{domain_knowledge}}:连接RAG数据集,自动注入与“深圳”“中学”“双碳”匹配的知识块(如《深圳市2025年校园光伏试点报告》摘要)。
这三者在最终渲染时由Dify自动拼接,而非人工粘贴——避免因复制遗漏导致某一层失效。
第三步:用循环语法生成结构化段落
方法一:基于中层Outline动态展开段落
在Prompt主体中插入以下模板代码:
{{#each outline_template.sections}}<br>## {{title}}<br>{{this.role}}。请结合{{domain_knowledge}}中的事实,用不超过150字完成本部分。<br>{{/each}}
方法二:对底层知识做条件过滤再循环
当{{domain_knowledge}}返回多个文档片段时,添加过滤逻辑:
{{#each (filter domain_knowledge "source_type" "policy")}}<br>政策依据:{{content}}<br>{{/each}}
【注意:filter函数必须配合Dify 0.12.0+版本,低版本需升级后才生效】
第四步:配置上下文窗口与分块策略
长文本写作易触发token超限,不能只调大max_tokens:
→ 在应用配置中设置prompt.max_tokens: 8192(适配Llama3-8B或GPT-4);
→ 同时启用Dify的“自动分块处理”开关:勾选“启用长上下文分段推理”,系统将把8000-token提示自动拆为两轮——第一轮生成大纲与首段,第二轮基于首段输出与剩余知识块续写后续段落;
→ 前端输入框同步限制为maxLength: 2000,防止用户一次性粘贴5万字PDF原文导致前端卡死。
第五步:绑定多版本Prompt做AB测试验证效果
方法1:创建v1.0(扁平结构)与v2.0(三层结构)两个Prompt版本;
方法2:在Dify AB测试面板中分配50%流量至v1.0、50%至v2.0;
方法3:用“输出连贯性得分”作为核心指标(通过正则匹配段落间指代词“上文”“该技术”“其”出现频次并加权计算);
上线后实时查看v2.0的连贯性得分提升27%,且人工抽检中“段落跳跃”错误下降至0例。











