在 AI 应用开发中,让大模型"写一篇文章"并不难,难的是把输入、大纲、扩写、校验、输出串成一条稳定可复用的流程。Dify 的可视化工作流正好适合解决这类问题:不需要从零写后端服务,也能把文章生成过程编排成一条清晰的自动化流水线。
直接用一句 Prompt 让大模型写文章,通常只能完成简单任务。一旦需求变复杂,就会遇到这些问题:
表格
问题 | 表现 |
|---|---|
流程不稳定 | 每次输出结构不一致,有时有大纲,有时直接写正文 |
质量难控制 | 主题、风格、字数、平台要求难以统一约束 |
难以复用 | 换个主题或平台,又要重新写 Prompt |
扩展困难 | 想加知识检索、多平台改写、人工审核时不好维护 |
工作流的价值在于:把文章生成拆成多个节点,每个节点只做一件事。比如一个节点负责生成大纲,一个节点负责扩写正文,一个节点负责格式化输出。这样更容易调试,也更适合长期复用。
在 Dify 中,文章生成通常可以选择两种应用类型:
Workflow 适合一次性执行、无记忆的任务,比如:
它的流程通常是:开始 → 处理节点 → 结束。
Chatflow 适合需要上下文记忆的场景,比如:
如果只是“输入主题 → 生成文章”,优先选 Workflow;如果需要反复沟通和修改,再考虑 Chatflow。
一个文章生成工作流通常由以下几类节点组成。
开始节点负责接收用户输入,例如:
topic:文章主题style:写作风格,如干货、故事、新闻、技术解读target_audience:目标读者word_count:目标字数platform:发布平台,如公众号、知乎、小红书这些变量后续都会被其他节点引用。
第一个 LLM 节点通常不直接写全文,而是先生成文章大纲。
你是一位专业的内容创作者。
请根据用户输入的主题生成一篇结构清晰的文章大纲。
主题:{{topic}}
风格:{{style}}
目标读者:{{target_audience}}
目标字数:{{word_count}}
要求:
1. 只输出大纲,不输出正文
2. 包含 3-5 个一级标题
3. 每个标题下简要说明写作方向
4. 结构要符合所选风格这样做的好处是:先让模型确定结构,再分步扩写,文章逻辑会更稳定。
第二个 LLM 节点基于大纲生成正文。
你是一位擅长写作的编辑。
请根据以下大纲撰写完整文章。
主题:{{topic}}
风格:{{style}}
目标读者:{{target_audience}}
大纲:
{{outline}}
要求:
1. 语言自然流畅
2. 逻辑清晰,段落之间有衔接
3. 不随意偏离主题
4. 避免空泛套话
5. 控制整体字数接近 {{word_count}}这里的关键是:让扩写节点只负责写内容,不负责重新设计结构。结构由大纲节点控制,正文节点负责填充。
如果文章需要发布到不同平台,可以用条件分支节点判断输出方向。
如果 platform 等于 "小红书"
则生成短段落、口语化、带标题符号
如果 platform 等于 "公众号"
则生成完整长文,结构更正式
否则
按默认风格输出这样可以避免每次都手动修改 Prompt。
如果文章较长,一次性生成容易出现结构松散、后半段质量下降的问题。这时可以用迭代节点,把大纲拆成多个章节,逐段生成。
流程可以是:
开始
→ LLM 生成大纲
→ 参数提取器提取章节列表
→ 迭代节点逐章扩写
→ 模板转换节点拼接全文
→ 结束迭代节点适合这些场景:
文章生成完成后,可以用模板节点统一输出格式。
# {{topic}}
{{article_content}}
---
风格:{{style}}
目标读者:{{target_audience}}
字数:约 {{word_count}} 字这样输出的内容更适合直接复制发布,也方便后续接入 API。
下面是一个适合新手搭建的基础流程:
开始
→ LLM 生成大纲
→ LLM 扩写正文
→ 模板转换格式化
→ 结束各节点职责如下:
表格
节点 | 作用 |
|---|---|
开始 | 接收主题、风格、字数等输入 |
LLM 生成大纲 | 先确定文章结构 |
LLM 扩写正文 | 根据大纲生成完整文章 |
模板转换 | 统一标题、正文、元信息格式 |
结束 | 输出最终文章内容 |
这个流程简单,但已经能满足大多数日常写作需求。
如果希望文章质量更高,可以升级为:
开始
→ LLM 生成大纲
→ 参数提取器提取章节
→ 迭代节点逐章扩写
→ 变量聚合拼接内容
→ 模板转换输出
→ 结束这个版本更适合:
它的优势是:每一章单独生成,模型压力更小,内容也更不容易跑偏。
Dify 工作流大部分配置不需要写代码,但有些细节用少量代码会更高效。
例如,可以用代码节点把大纲文本解析成结构化数据:
function main({ outline }) {
const lines = outline.split("\n").filter(line => line.trim());
return {
sections: lines
};
}这段代码的作用很简单:把大纲按行拆分成数组,方便后续迭代节点逐章扩写。
再比如,可以用模板转换节点拼接最终文章:
# {{topic}}
{{final_content}}这类处理不需要复杂编程,只是把上游变量整理成最终输出格式。
搭建完成后,不要直接发布,建议先逐步测试。
先看大纲节点是否稳定,再看正文节点是否按大纲扩写。不要一上来就测试整条流程。
调试时使用固定主题,比如:
主题:远程办公的效率提升方法
风格:干货
目标读者:职场新人
字数:1500这样可以判断输出波动是来自 Prompt,还是来自变量传递。
每个节点执行后,都应该检查:
如果希望大纲稳定,可以在提示词中明确要求:
只输出大纲内容,不要输出解释、前言或总结。这样可以减少后续解析出错。
调试通过后,Dify 工作流可以发布为:
如果是团队使用,建议把输入字段设计得清晰一些,例如:
主题:必填
风格:下拉选择
目标读者:选填
字数:默认 1500
平台:默认通用这样非技术人员也能直接使用。
Dify 文章生成工作流适合这些实际应用:
它更适合作为“初稿生成器”或“内容加工器”,而不是完全替代人工写作。最终发布前,建议再做一次人工校对。
做 Dify 文章生成工作流时,可以记住这个原则:
先结构化,再扩写;先单节点稳定,再串联整条流程。
不要一开始就设计太复杂的流程。可以先从“开始 → 大纲 → 正文 → 结束”跑通,再逐步加入条件分支、迭代节点、知识检索和代码处理。这样既能快速验证效果,也方便后续持续优化。
用 Dify 工作流自动生成文章:从搭建到实战
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。