大家好,我是涛涛,欢迎来到我的空间。
一、工作流生成的痛点
现在,越来越多的人开始使用扣子,工作流也变得越来越复杂。比如生成历史人物、每天一首歌、独居女孩等内容。虽然随着大模型技术的进步,生成的视频质量在不断提升,但视频生成的成本也水涨船高。像一条5秒钟的视频,大概需要1元钱,而更长时间、更高质量的视频,价格可能甚至达到几块钱。
工作流的执行是连续的,一旦某个环节出现问题,整个流程就会被中断,这样就会导致浪费。如果再运行一次,之前生成的视频所消耗的费用就白白浪费掉了。搞的我心情崩溃。
那么,如何避免这种浪费呢?作为一名程序员,我绝对不能接受这种情况的发生。解决方案是:必须设计一种机制,确保在流程中出现问题时,避免重复生成,从而避免不必要的费用开支。
二、数据库设计逻辑
80%的费用通常是由20%的功能引起的。既然如此,我们就应该优先对视频生成进行优化。为了实现优化,我们需要保存上一次运行的结果,这样在再次运行时就不需要重新生成视频。特别是像历史人物、独居女孩等类型,生成的文本和提示词大多相似,因此我们可以通过缓存之前的生成结果来避免重复计算。
为了实现这一点,我们需要一个数据库来存储视频地址。为了能够区分每次生成的视频及其对应的工作流,我们设计了4个关键字段:
- 工作流ID(workflow ID):用来区分不同的工作流。
- 运行次数(Number):表示这是第几次运行。
- 批处理次数:在循环中的第几次批处理。
- 视频地址:存储生成的视频实际地址。
这些信息需要保存在数据库中,因此我们需要创建一个数据库节点,并将这些字段加入到表结构中。表名可以根据实际需求自定义,只要能清晰表达其功能即可。在这里,我命名为 video_list,用于存放所有生成的视频记录。
既然要保存到数据库里面,那首先我们得创建一个数据库。
操作步骤为首先进入资源库。点击右上角。资源图标从下拉菜单当中选择数据库。
选择创建一个coze数据库。数据库的名称可以自定义,只要能清晰地表达其含义、方便自己理解就可以。
下面是我自己数据库的结构。如果你不确定如何创建,可以参考我下面的示例,作为参考来帮助你构建自己的数据库。
字段名称自己能理解就行,拼音也可以。
三、流程图、程序逻辑
接下来,我们进入具体的流程。首先,为了避免重复生成视频,我们需要判断数据库中是否已有相关数据。那么,如何区分是需要新生成视频,还是读取以前的数据呢?我们在流程的起始节点加入了一个 runnum(如果这个字段有值,就表示我们应该去数据库查询相关数据;如果没有值,则说明是全新的任务。
无论是否有值,我们都会进行数据库查询。如果数据库能找到对应的视频记录,我们就直接使用现有的数据;如果查询不到,则需要重新生成视频,进入第二条分支进行生成。
视频生成完成后, 接下来是保存数据的步骤。生成的视频必须保存到数据库中,以防止数据丢失或找不到。在保存后,通过一个代码节点进行统一判断:如果数据库中已有相关内容,就直接使用数据库中的数据;如果没有,则使用新生成的视频。
最后, 这个节点的处理方式取决于下一个节点的需求:是返回一个数组、字符串数组,还是对象类型。这样,整个流程就可以根据需要灵活处理不同的数据格式。
四、节点设置
由于其他的操作很多人都会,如果不会的话看基础教程,那我们就直接从批处理节点开始。
开始节点
1、节点①数据库查询节点
2、节点② 选择器节点
3、节点③视频生成节点
这个节点的配置和普通的生成循环视频配置是一样的。只需要按照之前的视频配置方式进行设置,就可以了。
4、节点④数据新增节点
5、节点⑤ 代码 节点
6、整体逻辑
五、代码整个工作流如何获取
在整个流程中,代码节点的部分我也已经详细讲解并放到了我的会员专属课程里。如果你感兴趣,欢迎加入课程,后续我还会分享如何在本地批量生成自媒体内容的文章。此外,加入课程后,你还可以免费加入我们的交流群,和大家一起讨论、交流经验。