【从零开始学Dify】 Dify + 视觉模型构建文生视频工作流
DIfy工作流通过将复杂任务分解为多个步骤(如LLM提示词扩充、视频生成、结果修饰等)提升AI应用的性能和稳定性。本文以"小猫游泳"为例,演示了文生视频工作流的完整流程:用户输入关键词后,LLM扩充描述,TEXT TO VIDEO生成视频,LLM2修饰输出,最终返回包含视频链接的结果。该工作流显著降低了系统复杂度,减少了对单一模型能力的依赖,同时提高了任务的可解释性和容错性。示
目录题

DIfy 工作流
工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。
Dify 工作流分为两种类型:
- Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
- Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。
这里文生视频我只需要生成视频即可,所以我选择Workflow
创建工作流
文生视频工作流:
- 用户输入关键字(提示词)
- LLM 对用户的输入进行扩充描述
- TEXT TO VIDEO 接收LLM输入,执行生成视频
- LLM2 对 TEXT TO VIDEO输出的text进行修饰(可以控制最终输出)
- 结束输出LLM2的text
具体工作流如下:
工作流运行效果如下,输入提示词:小猫游泳,工作流就开始执行
整个工作流的输入输出如下:
- 开始输入:
{
"query": "小猫游泳",
"sys.files": [],
"sys.user_id": "9347ec70-d7db-4943-9e69-b0bed251bc54",
"sys.app_id": "a5cba457-16ce-4493-901c-3a78408cbef4",
"sys.workflow_id": "5708888f-e53d-4000-bebd-af01b2fee66b",
"sys.workflow_run_id": "2a9ffa7b-0a7c-4619-9885-161f90f0af7e"
}
- 开始输出:
{
"query": "小猫游泳",
"sys.files": [],
"sys.user_id": "9347ec70-d7db-4943-9e69-b0bed251bc54",
"sys.app_id": "a5cba457-16ce-4493-901c-3a78408cbef4",
"sys.workflow_id": "5708888f-e53d-4000-bebd-af01b2fee66b",
"sys.workflow_run_id": "2a9ffa7b-0a7c-4619-9885-161f90f0af7e"
}
- LLM输入:
{}
- LLM数据处理:
{
"model_mode": "chat",
"prompts": [
{
"role": "system",
"text": "适当补充用户输入的文本,生成更加丰富的描述,文字长度不要太多。\n这是用户输入的文本:小猫游泳",
"files": []
}
],
"model_provider": "langgenius/siliconflow/siliconflow",
"model_name": "deepseek-ai/DeepSeek-V3"
}
- TEXT TO VIDEO 输入:
{
"prompt": "一只毛茸茸的小黄猫在水池里欢快地划动着小爪子,溅起晶莹的水花。它眯着圆溜溜的眼睛,小耳朵不时抖落水珠,蓬松的尾巴像螺旋桨一样在水里摆动。阳光透过水面映照出斑驳的光影,小猫时而潜入水中追逐水泡,时而浮出水面发出奶声奶气的\"喵呜\"声,俨然是个快乐的小游泳健将。"
}
- TEXT TO VIDEO 输出:
{
"text": "正在使用豆包 API 生成视频...视频生成任务已创建,任务ID: cgt-20250714084017-c5wg6,等待视频生成完成...视频正在生成中,已等待 5 秒...视频正在生成中,已等待 10 秒...视频正在生成中,已等待 15 秒...视频正在生成中,已等待 20 秒...视频生成成功!视频链接: https://ark-content-generation-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-1-0-lite-t2v/02175245361727400000000000000000000ffffac180e538b30a4.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYjg3ZjNlOGM0YzQyNE1MmI2MDFiOTM3Y2IwMTY3OTE%2F20250714%2Fcn-beijing%2Fto%2Frequest&X-Tos-Date=20250714T004038Z&X-Tos-Expires=86400&X-Tos-Signature=178334c684aa6ab440110f510e892417a1ca794e54f8059dd71d703ae772be1&X-Tos-SignedHaders=host",
"files": [],
"json": [
{
"type": "video",
"url": "https://ark-content-generation-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-1-0-lite-t2v/02175245361727400000000000000000000ffffac180e538b30a4.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYjg3ZjNlOGM0YzNGE1MmI2MDFiOTM3Y2IwMTY3OTE%2F20250714%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20250714T004038Z&X-Tos-Expires=86400&X-Tos-Signature=178334c684aa6dab4401f510e892417a1ca794e54f8059dd71d703ae772be1&X-Tos-SignedHeaders=host"
}
]
}
- LLM2输入:
{}
- LLM2数据处理:
{
"model_mode": "chat",
"prompts": [
{
"role": "system",
"text": "提示用户视频生成成功,并且要求最终生成的视频正在使用豆包 API 生成视频...视频生成任务已创建,任务ID: cgt-20250714084017-c5wg6,等待视频生成完成...视频正在生成中,已等待 5 秒...视频正在生成中,已等待 10 秒...视频正在生成中,已等待 15 秒...视频正在生成中,已等待 20 秒...视频生成成功!视频链接: https://ark-content-generation-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-1-0-lite-t2v/02175245361727400000000000000000000ffffac180e538b30a4.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYjg3ZjNlOGM0YzQyNGE1MmI2MDFiOTM3Y2IwMTY3OTE%2F20250714%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20250714T004038Z&X-Tos-Expires=86400&X-Tos-Signature=178334c684aa6dab440110f510e892417a1ca794e54f8059dd71d703ae772be1&X-Tos-SignedHeaders=host直接点击播放就可以观看,",
"files": []
}
],
"model_provider": "langgenius/siliconflow/siliconflow",
"model_name": "deepseek-ai/DeepSeek-V3"
}
- 结束输入:
{
"result": "您的视频已成功生成!🎬\n\n视频链接已准备好,您可以点击下方播放按钮直接观看:\n\n[播放视频](https://ark-content-generation-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-1-0-lite-t2v/02175245361727400000000000000000000ffffac180e538b30a4.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYjg3ZjNlOGM0YzQyNGE1MmI2MDFiOTM3Y2IwMTY3OTE%2F20250714%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20250714T004038Z&X-Tos-Expires=86400&X-Tos-Signature=178334c684aa6dab440110f510e892417a1ca794e54f8059dd71d703ae772be1&X-Tos-SignedHeaders=host)\n\n如果遇到播放问题,建议:\n1. 确保网络连接稳定\n2. 尝试复制链接到浏览器地址栏打开\n3. 该链接将在2025年7月15日前有效\n\n希望您喜欢这个由豆包AI生成的视频!如需其他帮助请随时告知。"
}
- 结束输出:
{
"result": "您的视频已成功生成!🎬\n\n视频链接已准备好,您可以点击下方播放按钮直接观看:\n\n[播放视频](https://ark-content-generation-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-1-0-lite-t2v/02175245361727400000000000000000000ffffac180e538b30a4.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYjg3ZjNlOGM0YzQyNGE1MmI2MDFiOTM3Y2IwMTY3OTE%2F20250714%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20250714T004038Z&X-Tos-Expires=86400&X-Tos-Signature=178334c684aa6dab440110f510e892417a1ca794e54f8059dd71d703ae772be1&X-Tos-SignedHeaders=host)\n\n如果遇到播放问题,建议:\n1. 确保网络连接稳定\n2. 尝试复制链接到浏览器地址栏打开\n3. 该链接将在2025年7月15日前有效\n\n希望您喜欢这个由豆包AI生成的视频!如需其他帮助请随时告知。"
}
1、添加模型
在创建工作流之前,需要先添加模型。选择工作室
菜单,点击头像
,选择设置
点击左侧菜单“模型供应商”,安装模型,我这里安装了通义前问和硅基流动,并且一定要添加对应模型的API-KEY,可以在Dify市场中查看并添加更多的模型。
建议先添加模型,工作流、知识库等应用中都需要模型处理,下面的案例我直接安装过了
2、创建应用
点击导航栏“工作室”菜单,选择“创建空白应用”
随后我们选择“工作流”,填写应用名称:文生视频工作流、描述:可选
然后就进入到工作流中
3、Workflow的系统变量
了解一下Workflow的系统变量
变量名称 | 数据类型 | 说明 | 备注 |
---|---|---|---|
sys.files | Array[File] | 文件参数,存储用户初始使用应用时上传的图片 | 图片上传功能需要在应用编辑页面右上角的“功能”处开启 |
sys.user_id | String | 用户 ID,每个用户在使用工作流应用时,系统会自动向用户分配唯一标识符,用以区分不同的对话用户 | |
sys.app_id | String | 应用 ID,系统会向每个 Workflow 应用分配一个唯一的标识符,用以区分不同的应用, 并通过这些参数记录当前应用的基本信息 | 面向具备开发能力的用户,通过这些参数定位不同的 Workflow 应用 |
sys.workflow_id | String | Workflow ID,用于记录当前 Workflow 应用内所有节点信息 | 面向具备开发能力的用户,可以通过此参数追踪并记录 Workflow 内的包含节点信息 |
sys.workflow_run_id | String | Workflow 应用运行 ID,用于记录 Workflow 应用中的运行情况 | 面向具备开发能力的用户,可以通过此参数追踪应用的历史运行情况 |
正如下所示:
4、添加用户输入变量
首先点击图中的加号按钮
设置变量为文本
,变量名称query
,显示名称query
,最大长度256
,最后点击确定
5、添加LLM节点
点击开始
后面的添加节点
按钮,选择节点中的LLM
,目前是让用户输入的提示词,让LLM
适当补充用户输入的文本,生成更加丰富的描述。
节点添加成功之后,我们可以设置模型,硅基流动中的可选模型有很多,我选择deepseek-V3模型
,上下文这里不需要所以不做设置,SYSTEM
是给LLM的提示词,这里我输入:适当补充用户输入的文本,生成更加丰富的描述,文字长度不要太多。并且提供大模型用户的输入内容为
注意:在添加模型的时候,可以设置一下模型的参数
模型参数的具体解释如下:
参数 | 描述 |
---|---|
温度 (Temperature) | 控制生成文本的多样性。较低的温度(如0.2)会生成更确定、保守的响应,较高的温度(如0.8或1.0)会使生成的文本更具创意和多样性,但可能带来不准确的结果。 |
最大标记 (Maximum Tokens) | 设置模型一次生成文本的最大标记数。一个标记通常是一个词或标点符号。较大的最大标记数允许生成更长的文本,而较小的数值则限制输出的长度。 |
Top P | Top P采样控制模型生成时考虑的概率选项数量。Top P值为1时,模型会考虑所有可能的输出,较低的值限制选择概率最高的一部分词汇,生成的文本更为保守。 |
取样数量 (Sampling Quantity) | 控制生成文本时的采样数量,影响模型生成的候选回答数。较大的数值会生成更多答案,较小的数值则会生成较少。 |
频率惩罚 (Frequency Penalty) | 控制避免重复词汇的程度。较高的频率惩罚让模型更倾向于选择不重复的词语和短语,避免文本中的冗余。 |
回复格式 (Response Format) | 控制模型输出的格式,例如简单的文字回复、列表或表格等,具体设置可能影响回答的组织方式。 |
6、安装文生视频插件
首先我们安装文生视频的插件,这是必须的,因为需要依赖视觉模型来处理,这里我使用的是Doubao Image and Video Generator
。
点击页面插件
按钮
在安装插件
中选择插件源
为Marketplace
,
搜索Doubao Image and Video Generator
,点击安装
按钮
安装完之后,可以在插件中看到
接下来需要进行授权,填写API-KEY
API-Key在火山方舟的左侧菜单中的下方,拿到KEY直接去Dify授权
注意:使用豆包的视觉模型需要先在这里测试一下,这里还需要开通一些服务
点击API接入,进行视觉模型授权,授权成功如下,否则,在Dify文生图会报错
7、添加文生视频节点
点击LLM旁边的添加节点,选择工具中的Doubao Image and Video Generato
插件,可以看到它可以文生图、文生视频、图生视频,这里选择文生视频,也就是Text to Video
设置Text to Video模型的提示词,将LLM的输出作为Text to Video的输入
8、添加LLM节点
此时已经拿到了Text to Video模型生成的视频了,Text to Video模型输出结果将会被LLM处理之后输出,这里可以设置输出结果的形式。
选择模型-设置提示词,置于为什么我要这么设置,是因为Text to Video模型输出的结果中text是一个很长的字符串,包括视频链接,不怎么友好。
9、添加结束节点
添加结束节点,将LLM2的结果作为输出结果
一个完整的工作流就设置成功了
10、发布测试
点击发布,随后可以运行该工作流
测试一下,输入:小猫游泳,随后工作流就开始执行,最终生成视频
我多生成了几个视频,截图如下:
最后
如果对dify工作流不怎么了解的话,可以查看一下文档:https://docs.dify.ai/zh-hans/guides/workflow/readme
更多推荐
所有评论(0)