用扣子(coze.cn)搭建《白色相簿2》文字游戏 & 剑来史官

扣子(英文名称 Coze) 是新一代一站式 AI Bot 开发平台。无论你是否有编程基础,都可以在扣子平台上快速搭建基于 AI 模型的各类问答 Bot,从解决简单的问答到处理复杂逻辑的对话。而且你可以将搭建的 Bot 发布到各类社交平台和通讯软件上,让更多的用户与你搭建的 Bot 聊天。

早在Coze 还未在国内发布时,就体验对比了下 ChatGPT store,相比于 ChatGPT store 提供了workflow 和数据库的能力,对于机器人的控制能力会更强一些。

选题方向

剑来史官

《剑来》是烽火戏诸侯所著的长篇古典仙侠类网络小说,也是笔者非常喜欢的一篇小说,书中有很多有意思的剧情,也讲了很多大道理。

常常在抖音上看到胡来的剧情,因此可以实现一个机器人聊一聊书中的剧情以保证准确性。

下载剑来全文.txt,发现有30多M,结果Coze 根本不支持这么大的文件。

无奈只能拆分成10个文件,结果发现coze 导入知识库时分词会失败。这里简单提一下 gpt 和知识库的关系。 gpt 全称为预训练大模型,每次模型的训练可能要数月之久,因此想和大模型交互只能通过prompt来实现。对于大模型中未及时更新到的数据,也只能通过prompt 的方式在提问中提供给 gpt。每次 prompt 通过有最长token限制, GPT4 最大token数为32768个,大约相当于24576个单词,其实已经接近一个短篇小说的长度了。

知识库本质上是个向量数据库,需要对文本进行切割拆分,并计算每个文本的向量值。向量值相近的文本可以理解为相近或存在关联。当我们提问 "齐静春是谁?" 时,会从向量数据库中查找到和 "齐静春" 相关的内容,并作为提示词向大模型提问,最终返回给我们结果。

哪怕是处理拆分之后的文本,Coze 也出现了大量失败的情况,因为原始文本中兼顾阅读体验,保留了大量空行和空格,这样导致拆分的数据量较大,因此可以写一个脚本来去掉空行空格。

lua 复制代码
const fs = require('fs');const path = require('path');const inputDir = './input'; // 输入目录const outputDir = './output'; // 输出目录// 创建输出目录if (!fs.existsSync(outputDir)) {  fs.mkdirSync(outputDir);}// 读取输入目录中的文件列表fs.readdir(inputDir, (err, files) => {  if (err) {    console.error('Error reading input directory:', err);    return;  }  // 遍历文件列表  files.forEach(file => {    // 检查文件扩展名是否为 .txt    if (path.extname(file) === '.txt') {      const inputFile = path.join(inputDir, file); // 输入文件路径      const outputFile = path.join(outputDir, file); // 输出文件路径      // 读取输入文件内容      fs.readFile(inputFile, 'utf8', (err, data) => {        if (err) {          console.error('Error reading input file:', inputFile, err);          return;        }        // 去除空白行和行中的空格        const processedData = data.replace(/^\s*$/gm, '').replace(/\s+/g, ' ');        // 将处理后的内容写入输出文件        fs.writeFile(outputFile, processedData, 'utf8', err => {          if (err) {            console.error('Error writing output file:', outputFile, err);            return;          }          console.log('Processed file:', inputFile);        });      });    }  });});

最终的文本效果,我们也能看到知识库都导入成功了。

我们在豆包的app或网页上都能 "胡来" 一下了😂。 bot ID:7331308339437043751

白色相簿2

笔者小时候非常喜欢玩文曲星的上《伏魔记》这些 rpg,古早的时候流行一些galgame之类的文字游戏。在游戏界通过ai 来引导剧情走向也很热门,据说手游《逆水寒》中采用ai来影响一些分支剧情走向。因此我们可以写一个剧情大纲或者提供更加具体剧情来实现一个文字游戏。不过这个游戏的复杂度远高于剑来,好在官方为我们提供了一个参考案例。

简单分析,《本子上的游戏》通过workflow的分支能力,在代码上维护了剧情对白,最终走向不同的剧情。不过这种方式剧情已经固化,比较缺少趣味性,我们可以让ai生成不同的剧情和对话,让剧情不再固化。

类似剑来的方式,我们可以导入白色相簿2的全文文本作为知识库,并创建数据库,记录用户每次的选择,根据用户的选择来实现记住剧情。

在工作流中,输入用户的对话,返回知识库中的对白,将对话交给大模型整理输出一下,最终呈现类似文字游戏的效果。不过由于对话较难控制,整体的输出不太稳定,效果也较差。

家人们,点赞量高把这个优化好~

剑来bot ID:7331308339437043751

白色相簿2 bot ID:7331358243534684160

相关推荐
小政爱学习!16 分钟前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
魏大帅。21 分钟前
Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析
前端·javascript·ajax
花花鱼27 分钟前
vue3 基于element-plus进行的一个可拖动改变导航与内容区域大小的简单方法
前端·javascript·elementui
k093331 分钟前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
EricWang13581 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning1 小时前
React.lazy() 懒加载
前端·react.js·前端框架
web行路人1 小时前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
假装我不帅1 小时前
asp.net framework从webform开始创建mvc项目
后端·asp.net·mvc
超雄代码狂1 小时前
ajax关于axios库的运用小案例
前端·javascript·ajax