2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

【Dify工作流实操案例】根据用户输入的一段文本自动调用fluxpro绘制成多张配图

发布日期:2024-08-28 14:11:29 浏览次数: 5297
作者:提示日记

微信搜一搜,关注“提示日记”

 最近有一些小伙伴采购了我的小说自动配图工作流,但是在使用的时候,有人反馈看不懂工作流的逻辑,希望我可以讲讲,以便更好地学习dify的一些节点知识。我想了一下,如果完全照着正在挂售的自动配图工作流去讲,那对已购的小伙伴是不公平的。虽然我不能原封不动的讲解,但是这类工作流的核心逻辑可以讲解一下。


本次讲解演示的前置条件:

  1. 必要】dify版本:必须>=0.7.0。

  2. 建议】已经参照我之前教程在dify中添加的fluxpro自定义工具。本次讲解使用这个工具。

  3. 建议】推荐使用GPT4o-mini模型。本次讲解使用这个模型。



01

工作流的全局思路


其实这类工作流,要说起来,也比较简单,并没有很多dify新手玩家理解的那么难,其核心就是在迭代逻辑的处理上。

  1. 开始节点用于接受用户的输入,再预设一个num变量容许用户选择创作几张图;

  2. 大模型对输入的长文本进行分镜处理,当然这个环节重点是把提示词写好,本次示例我会留下大致的提示词,大家自行优化调试。

  3. 将大模型的分镜脚本做成数组类型,传递给迭代节点进行循环。

  4. 迭代节点要处理的工作就有一定的垂直度了,首先要解析迭代中的每一个item中我们需要的字段,然后将这些提取出来的字段发给大模型进行提示词加工,接着讲加工后的内容使用代码节点进行拼接,拼接的内容交给fluxpro工具去生成图片,再提取fluxpro工具返回结果中的图片URL地址,最后通过模板转换节点预设一个单item回复格式。

  5. 迭代节点结束后,我们再跟一个模板转换节点,将迭代节点输出的每一个item中所有的内容都展示出来,最后跟上一个回复节点展示到用户面前。



其中的关键,就是迭代节点前中后三个环节的数据处理,迭代节点中的逻辑,我写的基本上就是必不可少的,所以这些工作就一定要去做好。


当然,挂售的那个自动配图工作流,在迭代节点中搭配开始节点,做了一些功能的扩展,这个不是重点,你掌握了这个最基础的核心逻辑,你自己手搓其他功能进去,依然是可以的。


本次示例,我将参照上述写的5个步骤,尽可能详细讲解。


02


工作流步骤示例


一、开始节点:


由于dify的工作流总运行时间是有时长限制的,所以这里我并不建议大家填写过大的数值,所以最好还是预设成一个下拉选项,免得fluxpro账户扛不住,也免得dify工作流运行超时。


二、镜头分镜(LLM节点)



提示词参考:(只是一个大概,请自行优化)

# 角色:专业的影视编剧## 背景:需要根据指定的剧本内容,分析剧本的剧情,构建不同的拍摄镜头,确保每一个镜头要表达的内容与剧本内容一致。## 注意事项:保持创作的创造性,但是不能脱离剧本表达的内容。## 简介:本人是一位有丰富电影拍摄经验的专家,善于根据剧本的内容,创造出符合内容的拍摄镜头,并能准确地描述每一个镜头的内容。## 技能:- 充分理解剧本的剧情、角色变化、场景变化。- 丰富的定量和定性研究能力。- 善于提取分析要点,给出镜头描述。- 善于按照json格式,将一段完整的剧情分割成不同的、连贯的、指定数量的镜头描述,并通过json格式返回。## 目标:- 全面分析剧本内容。- 按照剧本内容,制作指定数量的镜头脚本。- 将所有的镜头脚本按照json格式输出。## 约束:- 不要过度解释。- 不要输出非json格式的内容。- 确保各部分之间的过渡顺畅,保持连贯的流畅性。- 输出应不包含任何XML标签。仅提供包含以下键和值的JSON数组:“tittle”(镜头编号),“content”(每个镜头定格画面的内容)。## 工作流程:1. 根据提供的剧本,充分理解剧本的内容。2. 根据指定的镜头数量,将剧本内容制作成对应数量的镜头描述。3. 每一个镜头都需要描述成具体的定格画面内容。4.每一个镜头的定格画面内容由不超过20个标签组成,每个标签必须是镜头内包含的元素。5.镜头元素包含了:人物描述、场景描述、镜头拍摄手法描述、事件描述等。5.将所有的镜头描述都按照json格式返回。## 输出格式:[ { "tittle": "镜头1", "content": "这里展示你创作的镜头定格画面的内容"}, { "tittle": "镜头2", "content": "这里展示你创作的镜头定格画面的内容"}...] 现在我向你提供关于剧本的所有内容,你需要按照上述的要求严格执行。{ "content": "【{{#sys.query#}}】" }, 根据我提供的信息,制作{{#1723462898707.num#}}个拍摄镜头的定格画面描述,必须按照json格式返回给我。


三、string转数组(代码节点)


参考代码:(仅供参考,如遇bug,自行优化)

def main(jingtou: str) -> dict:import json    data = json.loads(jingtou)    # string转数组对象    result = [{'tittle': item["tittle"], 'content': item["content"]} for item in data]    return {'result': result}


四、迭代逻辑(迭代节点)

4.1 迭代节点的变量设置,如下图所示:

输入变量解读:

就是string转数组对象的代码节点输出变量。

输出变量解读:

这是迭代节点内部最后一个模板转换节点的输出变量。


4.2 提取字段(迭代节点中的第一个节点,代码节点)

输出变量解释:

  • tittle:表示这是镜头的名称。

  • content:表示镜头脚本内容。(此时还是中文)


提取这两个参数,是为了后续我们需要预设单item输出的内容样式和处理镜头脚本内容为图片提示词。

这两个参数是必须要提取的,一是为了最终用户看到的图片对应的名称,二是要将镜头剧情加工成配图。

4.3 转换为图片提示词(迭代节点中的第二个节点,LLM节点

llm主要是将刚提取出来的content内容转成图片提示词。

此时llm提示词,你可以参考如下所示:(仅供参考,自行优化)

system部分:

# 角色:Ai绘图专家## 背景:你是一个专业的AI绘图专家,你对flux文生图大模型非常精通。你善于根据指定的文本内容,转写成绘图的提示词。我用自然语言告诉你要生成的prompt的主题,你的任务是根据这个主题想象一幅完整的画面,然后转化成一份详细的、高质量的prompt,让flux文生图大模型可以生成高质量的图像。## 注意事项:- 保持创作的创造性,但是不能脱离镜头表达的核心内容。-flux文生图大模型是一款利用深度学习的文生图模型,支持通过使用 prompt 来产生新的图像,描述要包含或省略的元素。-你写的prompt需要严格遵守指定的语法和格式。-prompt 用来描述图像,由普通常见的单词构成,使用英文半角","作为分隔符。-prompt 可用于描述人物、风景、物体或抽象数字艺术图画。你可以根据需要添加合理的、但不少于5处的画面细节。##Prompt中() 和 [] 语法:-调整关键字强度的等效方法是使用 () 和 []。(keyword) 将tag的强度增加 1.1 倍,与 (keyword:1.1) 相同,最多可加三层。[keyword] 将强度降低 0.9 倍,与 (keyword:0.9) 相同。##Prompt 格式要求:- prompt 内容包含画面主体、材质、附加细节、图像质量、艺术风格、色彩色调、灯光等部分,但你输出的 prompt 不能分段,例如类似"medium:"这样的分段描述是不需要的,也不能包含":"和"."。- 画面主体:不简短的英文描述画面主体, 如 A girl in a garden,主体细节概括(主体可以是人、事、物、景)画面核心内容。这部分根据我每次给你的主题来生成。你可以添加更多主题相关的合理的细节。- 对于人物主题,你不需要回复任何关于人的描述。- 材质:用来制作艺术品的材料。例如:插图、油画、3D 渲染和摄影。- 附加细节:画面场景细节,或人物细节,描述画面细节内容,让图像看起来更充实和合理。这部分是可选的,要注意画面的整体和谐,不能与主题冲突。- 图像质量:这部分内容开头永远要加上“(best quality,4k,8k,highres,masterpiece:1.2),ultra-detailed,(realistic,photorealistic,photo-realistic:1.37)”, 这是高质量的标志。其它常用的提高质量的tag还有,你可以根据主题的需求添加:HDR,UHD,studio lighting,ultra-fine painting,sharp focus,physically-based rendering,extreme detail description,professional,vivid colors,bokeh。- 色彩色调:颜色,通过添加颜色来控制画面的整体颜色。- 灯光:整体画面的光线效果。## 目标:- 全面分析文本内容,充分理解文本内容表达的构图意境。- 按照文本内容,制作英文的prompt。## 约束:- 直接输出你创作的图像提示词,不要回复与任务无关的任何内容。- 你回复的结果必须以英文半角","结束。- tag 内容用英语单词或短语来描述,并不局限于我给你的单词。注意只能包含关键词或词组。- 注意不要输出句子,不要有任何解释。- tag数量限制20个以内,单词数量限制在30个以内。- tag不要带引号("")。- tag 按重要性从高到低的顺序排列。- 我给你的主题可能是用中文描述,你给出的prompt只用英文,不要包含中文。- 你写出的prompt,不容许包含涉及画面风格的描述。## 工作流程:1. 根据提供的剧本,充分理解剧本的内容。2. 根据指定的镜头数量,将剧本内容制作成对应数量的镜头描述。3. 每一个镜头都需要全部用英文描述成具体的定格画面内容。

user部分:

现在我向你提供关于待处理文本的所有内容,你需要按照上述的要求严格执行。{ "content": "【{{#1723797309206.content#}}】" }根据我提供的信息,制作1个定格画面的英文prompt返回给我。

此时,你要重点处理的是system部分的提示词。推荐使用GPT4o-mini来处理,准确度要高一些。

4.4 摄影写实(迭代节点中的第三个节点,代码节点

这是本次示例演示的一个绘制风格,旨在将用户输入的内容,都转绘成摄影写实风格的配图,当然,你换成其他风格肯定是可以的。但这不在本次讨论范围之内。

def main(arg1: str) -> str:arg=",Street style photography,advertising design poster, movie poster,cinematic,Side profile, shallow focus, warm light, Sony A7R IV, expressive,exquisite details.8k,highdefinition, high-quality."return {"result": arg1 + arg,}


变量解释:

  • arg1变量就是llm节点输出变量

  • arg变量是我们自己写的补充提示词

最后我们将两个部分的提示词加起来,得到一个写实风格的完整文生图提示词。

4.5 fluxpro工具迭代节点中的第四个节点,工具节点

将写实风格的完整提示词作为fluxpro工具的提示词即可。

4.5 参数提取迭代节点中的第五个节点,参数提取节点

我知道很多小伙伴不善于使用代码节点提取参数,所以本次演示,我们使用参数提取节点来处理。

输入变量就是fluxpro工具的输出结果。

增加一个参数,如:URL。用于提取fluxpro 工具返回结果中的图片URL地址,这个参数提取出来,我们是在下个节点使用的。

4.6 item数据展示(迭代节点中的第六个节点,模板转换节点

输入变量:

  • tittle:4.1提取的那个tittle值

  • content:4.1提取的content值

  • url:4.5参数提取节点提取的url值


五、拼接所有迭代item内容(迭代节点后的第一个节点,模板转换)

{% for section in arg %}
{{ section }}
----------------------------------
{% endfor %}


在模板转换节点中,我们只需要使用jinja2语法,写一个for循环,将迭代节点产生的所有item都拼接起来。

最后跟上一个回复节点即可。


到这里为止,一个完整的工作流就做完了。

输出的样子大概如下所示:

其实在dify工作流中,对于新手玩家而言,迭代节点可能是最复杂的一个节点,当然,如果你具备一定的编程能力,你很多时候用脚本代码就能撸,但是真要理解迭代这个节点,还是有点绕的。

如果你对迭代节点有了一些兴趣,不妨看看我之前写的另一篇文章:

手把手教你dify工作流迭代节点内容拼接的两种方法

至此,整个工作流的逻辑基本讲完,有些地方或许写得不够好,大家多担待。我知道有不少小伙伴主要是玩coze的,这个没关系的,我虽然是拿dify作为示例讲解,重点还是希望能给广大爱好者一个参考,引导思路的。在coze上参照这个思路,你也可以做一个全自动化配图智能体。我相信coze上也有人做这类智能体,只是人家没告诉你怎么做而已。

讲点心里话:我之所以讲这些,虽然都很基础,也不代表我将dify玩的多好。只是我认为,随着AI的发展,智能体步入竞品质的趋势越发明显,核心逻辑掌握了,才有竞品质的基础,这一点是我一直想讲的。





53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅