一、铺垫
因为平常写文章比较多,并且微信公众号是强制你要有文章封面的,虽然封面可以在一些图片网站,比如Unsplash上寻找,但现在是AI时代,而且AI绘画的技术也比较成熟了,所以自然是希望AI为我们打工了。
目前AI绘画比较出名的有Stable Diffusion、DALLE和Midjourney等,Stable Diffusion 是开源免费的,但需要你的电脑有一张显卡,DALLE 和 Midjourney 则是需要付费。
综合考虑,我最终选择白嫖Coze的文生图功能,它目前是支持 Stable Diffusion 和 DALLE 插件的。
二、创建AI Bot
我们先从最简单的 AI Bot搞起,具体的创建流程这里就不赘述了。
这是我最初创建的AI Bot,主要用到了三个插件,分别是 Notion 和前面提到的两个文生图插件。
用Notion插件是因为我的文章是用它管理的,我的想法是直接输入一个Notion链接,让AI读取里面的内容,并最终用文生图插件生成封面。
使用这个插件需要先授权才能读取到内容
起初这个Notion插件还是成功运行的,并生成了几张图片,但后面再运行的时候就报错了
三、创建工作流
上面的AI Bot 存在两点问题,一是Notion插件不稳定,这个我后续更换成了知识库的形式;二是你每次生成封面的时候都得输入一遍提示词,这对于想偷懒的我不太能接受,所以我就想创建一个工作流提高这个步骤的效率,并顺便熟悉下Coze的工作流如何使用。
3.1 工作流基础知识
第一,每个工作流都有一个开始节点和结束节点,最后一个节点必须是结束节点
第二,节点之间可以相连,从而下一个节点可以获取上一个节点内容,或者上上节点的内容
第三,开始节点和结束节点之间可以嵌入基础节点、插件、其他工作流
第四,如果使用条件节点,也就是If-else,else节点必须也得连到其他节点,就是说else也得有结果,不能空着
不然你可能会收到类似的错误
第五,如果想要完整地调试整个流程,可以点击右上角的 Test Run 按钮;如果想单独调试某个节点也可以,点击该节点上面的启动图标即可(某些节点如条件节点是不支持的)
调试之后,可以点击旁边的Show Result查看结果(这点做得真不错,很方便)
第六,工作流发布
请注意,工作流发布之后才能被自己和他人所使用,而且如果你再次对工作流进行修改后,必须 Test Run 成功后才能再次发布。
详情参考官方文档:Coze - Coze 文档中心
3.2 第一版工作流
因为是第一次使用工作流,所以也踩了一点坑,我一开始的工作流是这样的
- 1.开始节点:传入
notion_link
参数 - 2.Notion插件获取内容:Notion插件根据
notion_link
链接获取内容 - 3.获取图片宽度:这是因为我想指定图片宽度
- 4.获取图片高度:这是因为我想指定图片高度
- 5.调整图片宽高:这是图片宽高是从Bot里面提取的,不一定存在,所以需要用代码调整并赋予默认值
- 6.LLM输出提示词:大模型根据第2步的内容输出提示词
- 7.SD文生图:根据第5步得到的宽高和第6步得到的提示词生成图片
- 8.结束节点:输出第7步的结果
这里需注意的是,SD有两个版本,如果是v1.0 版本,只支持指定尺寸;如果是 v1.6 版本,则宽高尺寸范围在 [320, 1536] 之间,默认是512。(默认使用 v1.6 版本)
而且这里还发现Coze一个做得不是很好的地方,就是我有个参数原本不应该有输入,但是不小心选了,这时候无法清除,只能替换为其他输入参数(比如Seed不应该接受width参数的输入)
但这个版本有两个问题,一是Notion插件不稳定,用过一次后就无法再获取内容了,提示 “Server Internel Error”,二是 Stable Diffusion 生成的图片没有预想的好,文字很模糊,类似下面这张图,所以就有了第二版
3.3 第二版工作流(最终版)
由于第一版的两个问题,最终改进后的版本如下:
- 1.开始节点:传入
unit_name
参数,这是知识库Unit的名称 - 2.知识库匹配内容:根据前面的
unit_name
匹配对应的Unit - 3.获取图片宽度:这是因为我想指定图片宽度
- 4.获取图片高度:这是因为我想指定图片高度
- 5.调整图片宽高:这是图片宽高是从Bot里面提取的,不一定存在,所以需要用代码调整并赋予默认值
- 6.LLM输出提示词:大模型根据第2步的内容输出提示词
- 7.DALLE3文生图:根据第6步得到的提示词生成图片
- 8.结束节点:输出第7步的结果
这里也有几个注意点,第一是如果使用DALLE3
,第3,4,5步其实可以略过,因为DALLE3不支持自定义宽高(我这里保留是方便后续修改)
第二就是你在用LLM的时候,记得在提示词那里引用输入内容,不然LLM不知道你输入了什么内容
四、如何使用上述工作流
为什么我在标题上说这是一次不太成功的尝试呢,是因为虽然这个工作流看起来能用,但是只能给自己用,不能给别人用(很尴尬,后面才发现的)
因为工作流里面的知识库其实就是个小型数据库,它适合的场景应该是获取某些特定的知识,而不是像我一样,只是为了分析总结生成提示词(如果后面官方能指定别人的知识库就很Nice了)。
我自己用的话效果如下(需要把文章先上传到知识库):
如果内容不存在,会提示这个:
如果想看我的工作流实现的朋友,可以在工作流搜索:EasyCover
五、总结
虽然这是一次不那么成功的尝试,但好在也趁这个机会了解了Coze工作流的具体玩法,总体不亏。如果大家有什么好的改进想法,或者对工作流有什么不懂的,也可以下方留言!
注:原文链接,也欢迎关注 AI技术巫 公众号