一念生花,Coze 结合VisActor 文生图实战总结
共 6374字,需浏览 13分钟
·
2024-08-02 23:40
前言
词云魔方
逢年过节发送祝福语是中国人特有的礼节,然而准备拜年祝福语也是让人伤透脑筋,大多数人都是拷贝网络上流行的“段子”,改一下名字就发出来了。更有甚者连名字都不改,略显尴尬。
但是如果可以让 AI 总结你想对特定对象说的祝福语,并生成一张专属词云呢?
今年过年期间还有一个男性朋友们最忧愁喜欢的节日——情人节,送上一张情人节卡片,是不是可以瞬间拉升甜蜜感呢?
通过 Coze、VisActor 两大套件的加持,我们使用2天时间,快速实现了基于对话生成词云的智能体——“词云魔方”。
Coze 是什么?
Coze 是新一代的 AI 机器人开发平台,可以理解为字节跳动版的GPTs。无论用户是否有编程经验,都可以通过该平台快速创建各种类型的聊天机器人、智能体、AI应用和插件,并将其部署在社交平台和即时聊天应用程序中。
只要你有想法,都可以用扣子快速、低门槛搭建专属于你的 Chatbot,并一键发布到豆包、飞书、微信服务号,或者海外的 Discord、WhatsApp、Twitter 等各个渠道。
VisActor 是什么?
VisActor 是从字节跳动大量可视化场景沉淀而来。在覆盖常规可视化场景的同时,以叙事可视化为新的着力点,以智能可视化为目标,形成了包括渲染引擎、可视化语法、数据分析组件、图表组件、表格组件、GIS组件、图可视化组件、智能组件等多个模块以及周边生态组成的可视化解决方案。
作为一个完备的解决方案,VisActor在可视化完整流程的各个关键节点提供能力支持。完整介绍可以参考VisActor——面向叙事的智能可视化解决方案 - 掘金。
其中 VMind 是VisActor 解决方案中负责智能可视化的模块,目前已经实现基于大语言模型做图表智能推荐和生成的基础能力。
功能设计
因为距离春节放假只有两天时间,时间紧任务重,所以我们将词云魔方的功能锁定在春节和情人节。功能面向实用,开发成本最小,可以快速上线来设计。
展现形式
-
展现形式只支持词云,词云模版支持如下几种:
用户交互
计划支持的用户prompt:
-
制作一个送给“女朋友”的情人节词云 -
给我生成一个拜年词云 -
以“xxx”为核心词生成一个拜年词云 -
以“xxx”为核心词,以“xx给您拜年了”为标题生成一个词云
生成产物
生成静态图片,如果还有多余时间,尝试生成gif和短视频。
技术方案
对上述功能进行拆解,我们要解决如下几个核心问题:
-
词云渲染 -
词云代码生成 -
用户意图理解 -
Bot 创建与管理
结合Coze 与 VisActor现有能力,我们快速设计了如下解决方案:
功能实现
词云渲染
@VisActor/VChart 提供了完备的词云自定义和渲染能力(参考:https://www.visactor.io/vchart/demo/word-cloud-chart/word-cloud-shape-rotate),可以直接在 VChart 官网站点(https://visactor.com/)上进行词云效果的测试。
通过VChart提供的exportImg或getImageBuffer方法,我们可以将图表保存为图片。
调试好的 VChart spec,我们会集成到VMind Service 的内部逻辑,作为内置模版。
VMind Service
VMind 本身具备根据数据自动推断图表类型,并智能生成spec 的能力,但是本次任务需要对结果进行约束,VMind node 服务对VMind 组件进行了一层封装,只允许VMind 在我们规定的词云模版中进行选择生成。
一个基础的词云模板需要包含其词云形状所对应的图片信息、背景图片、动画效果以及尺寸等信息,其类型声明为:
export interface WordCloudTemplate {
type: WordCloudType
size: '2*3' | '1*1' | '3*2' | '9*5';
width: number,
height: number,
maskShape: string[];
maskShapeURL: string[];
background: string[];
backgroundURL: string[];
animation: any[];
spec: any;
}
Service 对外暴露统一的词云生成接口:
generateWordCloud(fillingWords, title, WordCloudType.NEW_YEAR)
VMind 会根据传入的参数自动生成VChart spec,并调用VChart 渲染图片,上传到cdn,返回图片地址给 Coze 的wordcloud 插件。
插件开发
coze平台提供了“插件”能力。一个插件就是一系列的外部API,bot在后续交互中将在合适的时机调用插件,并使用插件返回的结果完成后续任务。在coze插件商店中,展示了当前可用的插件。
词云魔方使用了wordcloud插件进行词云绘制,可在插件商店通过搜索进行访问。
创建服务
Coze 插件依赖调用后端服务来完成功能,我们创建了wordcloud插件对应的node服务,该服务调用VMind Service 来完成具体的任务。
wordcloud插件包含以下三个工具,分别对应node端的3个API;每种工具负责生成一种主题的词云:
//新年主题
@Post('/generateNewYearWordCloud')
public async generateNewYearWordCloud(@Body('fillingWords') fillingWords?: string, @Body('title') title?: string) {
return this.generateWordCloud(fillingWords, title, WordCloudType.NEW_YEAR)
}
//情人节主题
@Post('/generateValentineWordCloud')
public async generateValentineWordCloud(@Body('fillingWords') fillingWords?: string, @Body('title') title?: string) {
return this.generateWordCloud(fillingWords, title, WordCloudType.VALENTINE)
}
//通用主题
@Post('/generateCommonWordCloud')
public async generateCommonWordCloud(@Body('fillingWords') fillingWords?: string, @Body('title') title?: string) {
return this.generateWordCloud(fillingWords, title, WordCloudType.COMMON)
}
每个API会接收 VMind Service 返回的图片链接,传递给bot。
创建插件
我们也可以开发自己的插件并将其上传到插件市场。点击“创建插件”按钮,输入插件名称、插件描述和插件调用地址。注意插件名称和描述将会传递给大模型,使用清晰、准确的名称和描述将有助于模型理解插件的用途,提高调用插件的准确率。
创建插件后,需要继续创建工具,供模型进行调用。插件是具有相同url的API的集合,一个工具就是一个具体的API,是供模型调用的最小单位。模型通过“插件名称.工具名称”的形式进行插件调用。点击右上角的“创建工具”按钮,输入工具名称、工具描述、工具路径,以及工具的输入和输出参数,并进行调试与校验。注意在调试通过后才能进行插件的发布。
插件需要发布后才能供bot使用。点击插件详情页的“发布”按钮,可对插件进行发布。
插件添加与调试
插件发布后,需要添加到bot中才能进行使用。在bot编辑页面,点击“技能”栏目中的“添加插件”,我可能可以为bot添加插件:
将wordcloud插件下的三个工具添加到bot中,我们可以在右侧的“预览与调试”栏目与bot进行对话,测试bot能否成功调用插件。
模型调用插件时会有相关的提示,点击可展开查看插件调用细节。我们可以检查模型调用的工具类型、参数、返回值是否符合预期,并通过编辑prompt和插件信息进行相关调整,使模型能够准确调用插件完成相关任务。
提示词设计
在编辑页面左侧的“人设与回复逻辑”文本框中可以输入系统级别的prompt,设定bot的人设与回复逻辑。在prompt中,可以告诉大语言模型与当前bot相关的上下文,例如bot的语言风格,所拥有的技能,可调用的插件等,还可以引导模型一步步完成任务、添加限制等。bot将会使用相关的上下文与用户进行交互,使用prompt中所提及的技能,遵循相关约束,并在合适的时机调用插件完成任务。
点击右上角的“优化”按钮,还可调用大语言模型优化当前的prompt。
在bot编辑页面中间的“技能”栏目中,我们可以为bot指定插件、工作流等外部资源;在“记忆”栏目中,可以添加知识库和长期记忆选项。在“高级”栏目中,我们可以为bot设置开场白和预置问题,这将会在用户第一次打开bot时进行展示。我们可以在其中教会用户如何使用你的bot,并进行一定的引导。
Bot 创建
登录coze平台,点击左上角的“创建Bot”,输入Bot名称和功能介绍,并上传头像。还可点击AI生成按钮,根据描述生成一张头像。
创建成功后进入bot编辑页面。
Bot 发布
bot调试完成后,我们可以点击右上角的“发布”按钮,输入相关信息,将bot发布到相关平台。我们还可以勾选“提交到扣子Bot商店”,使更多人可以使用你的bot。
我们可以在下面的链接体验词云魔方:
-
https://www.coze.cn/store/bot/7338692117402927145
上线体验
发布到Coze 和 豆包之后,就可以邀请朋友来体验了!
总结展望
Coze 开发体验
Coze平台提供了这样一个开放的环境,用户可以在这里快速搭建自己的bot,无论是用于工作便利,还是个人娱乐。同时,用户还能将自己的bot发布到coze商店、豆包等平台,分享自己的创新和智慧。
整个体验下来,Coze 提供了最简洁的方式,基本可以无脑搭建简单的bot。对于复杂的功能,还是需要用户有一定的 编码能力的。
期待Coze 后续的插件市场更加丰富,编排能力也更加强大。
VMind 与词云魔方未来规划
由于时间关系,词云魔方只是使用了VMind 及VisActor其他组件的一小部分能力。未来我们将添加各种各样的主题模板,如节日、生肖等,给用户的创作提供更多可能和灵感。同时,我们还将支持生成GIF动图,让词云展现出独特的动态效果,使其具有更强的视觉冲击力和表达力。
当然,我们也会突破词云的限制,将词云魔方升级成为“卡片魔方”,可以生成使用范围更广,效果更惊艳的作品。同时也借此,整体推动VMind的升级,使其更加智能化,在代码生成,图表配置,自动美化,故事编排等各个方面都能有质的提升,并通过开源服务更多的开发者。
相关链接:
Coze:https://www.coze.cn/
词云魔方:https://www.coze.cn/store/bot/7338692117402927145(点击原文链接,可以跳转)
VisActor:https://www.visactor.io/
VMind:https://www.visactor.io/vmind
VChart:https://www.visactor.io/vchart
欢迎star:https://github.com/VisActor/VMind
https://github.com/VisActor/VChart