跳转到内容

我们的 Bot 获得了「掘金 x 扣子 Hackathon 活动 - 深圳站」的总冠军

行百里者半八十 AI花果山

01 背景

AI Hackathon 之旅:AI 技术、创意与实践相结合。

上周末(3 月 30 号),我和队友 ETERNCHAN 参加了字节掘金 x 扣子在深圳举办的线下 Hackathon 活动,这个活动是由字节的 稀土 掘金技术社区( juejin.cn )和 扣子( coze.cn )共同发起,面向开发者群体的 AI 技术实践活动,旨在通过动手实操的方式,帮助开发者将想法和创意进行落地。

这次 Hackathon 活动,不仅仅是一次简单的技术交流会,更是一个将我们脑海中的灵光乍现转化为实际动手能力的实验室,也是一次将 AI 技术、创意与实践相结合的活动。

活动日程如下👇,可以看到,每个小组有两个小时捏 bot 的时间。

02 扣子

字节跳动的 AI Bot 开发平台,创建属于你的 AI 智能体应用。

扣子( coze.cn )是由字节跳动推出的 AI Bot 开发平台。它整合了插件、长短期记忆、 工作流 等多种功能,能够帮助用户低门槛、快速地搭建个性化或具备商业价值的智能体(Agent),并一键发布到 飞书 、 微信公众号 和掘金等各个渠道。

扣子是一个灵活多用的 AI 开发平台,不仅适用于构建对话式 Bot,也很擅长各类 AI 任务的精细编排,比如构建融合检索与生成的 RAG 系统、搭建复杂的工作 pipeline。

关于扣子和 Agent,笔者此前写了几篇相关的文章,可以参考:

  1. 使用 coze 打造私人播客助手 - 根据个人喜好自动化生成播客
  2. 使用「扣子」搭建你的专属 AI Bot(附详细案例教程)
  3. LLM Agents 指南:入门与实现

03 小说跃动

3.1 头脑风暴

在头脑风暴中诞生的创意:与小说角色进行沉浸式对话交互。

我们头脑风暴想了几个 idea,最后敲定了一个 idea: 跟小说人物角色对话 。选择这个 idea 有几个原因:

  1. 沉浸式角色互动 :与小说中的角色进行实时对话,提供一种全新的交互体验,这种互动使得小说角色和故事变得生动起来。
  2. 情境模拟与 角色扮演 :用户可以在某些情节中扮演某个角色,身临其境与小说人物角色进行互动,甚至从不同的视角探索剧情。
  3. 具备一定的 商业模式 :提供基本的免费体验(如内容梗概等),并通过订阅服务提供额外的功能,如作者的二次创作、定制的故事体验等。

3.2 主要功能

将文学与技术巧妙地结合在一起,让用户能够与小说中的角色进行对话。

基于上面的想法,我们给 bot 起了个形象的名称: 小说跃动(原先叫小说跳动)

一句话概括就是: 让小说人物角色跃然纸上,穿越时空,和小说人物角色对话,为读者打开一个充满想象力和互动乐趣的娱乐世界,带来全新的互动体验。

在实际开发过程中,我们实现的功能主要有以下几个👇 :

下面,我来介绍下整个 Bot 的开发过程。

3.3 开发调试

想法很美好,现实很骨感。

在开发过程中,我们遇到的最大问题就是: Bot 遵循 指令 的能力较差 。比如在 Prompt 要求 Bot 当用户选定某个角色时,需要输出一张角色照,它就是不能很好地遵循。还有就是我们尝试让 Bot 扮演不同的小说角色,但对话风格没有角色的性格特点。

针对遇到的一些问题, 我们引入了 工作流 ,对复杂的业务流程进行编排,使得 Bot 的输出更加可控和稳定

这个 Bot 涉及到的技术能力整体如下:

下面是这个 Bot 的整体开发环境:

  • 最左边是 Bot Prompt
  • 中间是给 Bot 增强的技能,如插件、 工作流 ,这里使用了 3 个工作流,工作流里面集成了知识库、代码处理还有生成角色照等功能
  • 最右边是调试预览

值得一提的是,本次活动,扣子给我们开放了 Moonshot 大模型 的体验,这也是此次活动的福利,不过是限时体验(最终会不会对外开放还不清楚)。对于我们这个 Bot ,整体体验下来,Moonshot 模型的遵循 指令 能力相比云雀模型更强。

根据上面的 Bot Prompt,这个 Bot 的实现包含了如下 3 个 工作流 :

按照 Bot 的工作流程,第 1 个 工作流 是 get_novel_introduction ,当用户进入选定的小说后,Bot 会调用此工作流向用户展示小说简介、主要的人物角色列表,然后 Bot 会接着询问用户要跟小说中的哪个人物角色对话。

👉 工作流拆解

  • 第一步:开始节点,接收用户输入的小说名称
  • 第二步:知识库节点,将输入的小说名称作为 query 去知识库检索小说简介、主要的人物角色列表
  • 第三步:大模型节点,让大模型根据小说简介,编写 AI 生图的 prompt
  • 第四步:text2image,输入上一步大模型生成的文生图 prompt,输出小说的封面图
  • 第五步:结束节点,输出小说简介、人物角色列表、小说封面图

👉 工作流图参考

第 2 个 工作流 是 get_character_lines_portrait ,当用户选择某个小说人物角色后,Bot 会调用此工作流,获取小说人物角色经典台词和角色照。

👉 工作流拆解

  • 第一步:开始节点,接收用户选择的小说人物角色名称
  • 第二步:知识库节点,将输入的小说角色名称作为 query 去知识库检索该角色的性格特点和经典台词
  • 第三步:大模型节点,让大模型对信息进行筛选,并采用 json 格式输出
  • 第四步:代码节点,对上游的输入数据进行规整,格式化输出
  • 第五步:text2image,引用上一步输出的 feature(用于描述人物性格和特点),作为 prompt,生成人物的角色照
  • 第六步:结束节点,输出人物台词和角色照

👉 工作流图参考

第 3 个 工作流 是 ask_character ,当用户向小说角色提问时,Bot 会调用此工作流获取结果,本质上是一个根据用户 query 进行 RAG(Retrieval Augmented Generation,检索增强生成)的任务,这是非常重要的一个工作流,关系到用户和小说人物角色对话时 Bot 的回答质量。

👉 工作流拆解

  • 第一步: 开始节点,接 收 用户 向 小说人物角色提问的问题
  • 第二步:知识库节点,将问题作为 query 去小说内容中进行语义检索和全文检索
  • 第三步:大模型节点,让大模型根据问题和检索到的上下文信息,生成答案
  • 第四步:结束节点,输出答案,作为小说人物的回答

👉 工作流图参考

另外,大家可以看到,在每个 工作流 里面,我们都嵌入了一个知识库节点,我们维护了如下 3 个知识库:

知识库的整理和清洗,可以说是 dirty work。

  • 小说合集 。这里面包含了 4 本小说。

  • 小说台词 。包含了小说主要人物角色和经典台词。

  • 小说简介 。包含小说简介和主要的人物角色。

因此, 开发这个 Bot 的核心在于知识库的构建和 工作流 的搭建

3.4 成果展示

对话如抽卡,跌宕起伏终成「有那味了」。

经过不断地调整和优化,我们终于可以说「有那味了」,当然这仅仅是开始。

下面是一些对话示例。

  • 庆余年

  • 繁花

3.5 存在问题

完蛋!抽卡失败。

虽然使用了 Moonshot 大模型 和 工作流 ,但在调试的过程中,还是存在一些不遵循 指令 的 bad case。

比如下面的 case, Bot 的回答,直接说“根据 工作流 ...”。

所以,还是有很多问题需要优化的。

3.6 发布体验

目前,我已经将 Bot 发布到 扣 子 Bot 商店、掘金社区和豆包。 由于对外发布只能使用云雀模型,所以实际体验效果可能会打个折扣。 另外,目前可供对话的人物角色列表是有限的,建议选择 Bot 提供的人物角色进行对话。

  • 扣子 Bot 商店链接

https://www.coze.cn/store/bot/7353452051638255628

  • 掘金社区 AI 聊天室:

https://juejin.cn/pin/club/7173895829281833012?robotId=7351428879468806144

04 奖项评比

一开始颁发的是单项奖,一个都没拿到,没戏 🤣

本次作品奖项总共有 5 个奖项:

  • 最佳创意奖
  • 最佳技术奖
  • 最佳用户体验奖
  • 最佳解决方案奖
  • 总冠军奖 (上述各方面比较均衡,总分最高)

打分规则如下,可以理解为前面 4 个奖是单项得分最高的奖,而冠军奖则为单项得分累加最高的奖。

05 现场氛围

其实只是想来玩一玩。

06 总结&感想

技术的锤炼,思维与创意的飞跃。

这次活动对我们来说不仅是一次技术挑战,更是一次思维和创意的飞跃。在本次活动中,我们通过动手实操将我们的想法和创意变为现实。这样的经历,无疑让我们每个人都收获满满。

捏这个 Bot 其实并不轻松,整体感受如下:

  • 产品体验:LUI(Language User Interface ,语言 用户界面 ) 和 GUI ( Graphical User Interface , 图形用户界面 )应该相结合 。在调试的过程中, Bot 的输入变量需要由用户给出,比如小说名称和人物角色名称,如果 Bot 没有遵循 指令 ,提示用户输入小说名称或者角色名称,则不好引导用户进行下一步,在这种情况下,GUI 可能是更好的选择,比如在用户进入对话的时候,通过展示下拉菜单让用户进行选择,这样会更具确定性。
  • 用户体验:和 AI 对话,某种程度上可以说是抽卡 。 大模型 的 指令 遵循能力还不是很强,严格要求 Bot 遵循 Prompt 时,它有时就是不遵循,这种情况下可以通过引入 工作流 进行缓解。当然,更重要的是提升 LLM 的性能。
  • 开发体验: LLM Agent 是一个高度集成的智能工程系统 。它通过把 LLM、插件、知识库、数据库和 工作流 等功能集成在一起,创造出了一个强大的多功能的智能系统,而 LLM 是这个系统的大脑,它的性能决定了 Agent 能力的上限。最近,Andrew Ng 在一次分享中提到,基于 GPT-3.5 构建的 智能体 工作流在应用中表现比 GPT-4 要好。

相关资料

  • https://www.bagevent.com/event/8796081
  • https://twitter.com/AndrewYNg/status/1770897666702233815