背景
在公开平台写文章,你会发现都要求上传封面图片,我比较懒,不想费心找图片,于是经常使用AI来生成图片。
现在有一个平台可以让你轻松实现一个"封面机器人小助手",赶紧用起来吧!
扣子是什么?
扣子(英文名称 Coze) 是新一代一站式 AI Bot 开发平台。无论你是否有编程基础,都可以在扣子平台上快速搭建基于 AI 模型的各类问答 Bot,从解决简单的问答到处理复杂逻辑的对话。而且你可以将搭建的 Bot 发布到各类社交平台和通讯软件上,让更多的用户与你搭建的 Bot 聊天。
官方文档介绍的比较详细,具体功能不做赘述。主要谈一下使用的感想。
扣子这个平台,集成了互联网检索、工作流、知识库、大模型、问题联想、大模型、Prompt、机器人打通(飞书、微信服务号等)
这意味着你要想定制自己的专属机器人,这个平台已经帮你把链路都打通了,从开发、调试、到上线,都将变得更简单,它还提供了丰富的插件,很多常见功能可以直接拿过来用。
接下来,就看看我们怎么通过这个平台,打造专属于自己的"封面生成"小助手。
提示怎么写?
Bot 的提示(人设和回复逻辑)是一种自然语言指令,告诉大模型(LLM)执行什么任务。想要搭建自己的机器人,第一步就要学会写提示。更多内容见官方文档《编写提示》
作为一个封面机器人,它的提示词应该写些什么呢?
首先,要告诉机器人,他的角色是什么,他擅长做什么事;
其次,要明确描述它掌握的技能;
最后,要告诉他什么不能做、不要做。
在我看来,这三点是一个机器人必备的。
怎么生成图片?
默认情况下,你只能和机器人对话、聊天,它无法为你生成图片。就像GPT3.5只支持文本聊天,GTP4才可以支持生成图片,想要机器人具备生成图片能力应该怎么做?
很简单,通过插件来支持。
插件是一个工具集,一个插件内可以包含一个或多个工具(API)。利用生成图片的插件,我们就能让机器人具备生成图片的能力。
扣子目前集成的插件超过 60 种,接下来就看看如何通过插件来拓展 Bot 的能力边界。
在扣子的开发调试界面,新增插件:
点击「插件」右侧的「+」,会弹出插件选择框,根据关键词搜索、选择自己想要的插件:
我选择了官方提供的"ByteArtist > ImageToolPro"插件来生成图片。
接下来,我们和机器人对话看看效果:
我们可以看到,确实根据要求生成了一张图片,且能看到调用插件"ByteArtist"的过程。但是,我们希望 Bot 在回复时直接展示图片,而不是再点击链接打开图片。
这样怎么实现呢?这里就必须介绍一下工作流了。
如何使用工作流?
工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排。
工作流由多个节点组成,其中 Start 节点和 End 节点是默认节点,不允许删除。
对于我们上一步的需求,想要直接把图片显示出来,只需在生成图片,改变 End 节点的回复方式即可。
首先,在工作流中新增一个插件,修改 End 节点的回答模式,选择「使用设定的内容直接回答」,并定义回答内容(markdown语法):
工作流配置完成后,需要试运行,我们输入「美丽的少女,向日葵花海,通用风格」试运行看看,结果不太理想,报错了。打开失败的节点,展开运行结果,我们可以看到,插件调用失败了。
为什么呢?我们看看这个插件的入参,model_type 和 propmt,从上面截图可以看出,参数的model_type明显不对。
没有使用工作流时,能直接调用插件得到图片,使用工作流后,插件"ImageToolPro"无法正常接受参数,为什么会出现这种结果?我们分析一下没有使用工作流时的执行过程:
从上图可以看到,调用 "ByteArtist.ImageToolPro" 插件之前,「美丽的少女,向日葵花海,通用风格」这几个词被解析成了这样一个参数:
javascript
{
"prompt": "美丽的少女,向日葵花海",
"model_type": 1
}
说明在工作流中,需要新增一个节点,用来处理用户输入的信息,得到"ByteArtist.ImageToolPro" 所需要的参数,怎么做呢?
我最初的想法是借助大模型(LLM)来处理用户指令,让大模型输出我们想要的结果。
在生成图片之前,新增一个大模型节点,配置信息如下,试运行了一下,除了最开始运行成功过一次,后续都没法正常得到结果,但是我把这段prompt 放到GPT4 模型去执行,是正常的。
没办法,只能重新换一种方案,通过增加「代码」节点,来处理输入变量:
试运行通过后,点击右上角「发布」按钮,发布这个工作流,然后在开发调试界面,新增工作流:
接下来还要修改一下 Bot 的人设与回复逻辑:
一切准备就绪,我们再调试看看结果:
到此,一个"封面机器人小助手"就大功告成了。
写作最后
本次最大的心得就在于工作流的运用,它可以把插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排。
我们可以把一些不需要用户关心的逻辑封装到业务流程里面,这样可以降低用户使用心智负担,也可以根据需要去优化机器人。
botId: 7330515609421381647