今天我们就探索如何使用 扣子/coze 来构建一个自己的个人blog知识库。
扣子是新一代一站式 AI Bot 开发平台。无论你是否有编程基础,都可以在扣子平台上快速搭建基于 AI 模型的各类问答 Bot,从解决简单的问答到处理复杂逻辑的对话。而且你可以将搭建的 Bot 发布到各类社交平台和通讯软件上,让更多的用户与你搭建的 Bot 聊天。
功能架构设计
扣子/coze 是一个 LLM 的应用开发工具,他内置了很多自己的工具,可以提供给开发者直接使用。而且他还提供了自定义相关插件的功能,那么我们就可以结合他的自定义的能力扩展出很多的能力,从而可以构建我们自己的应用程序。
扣子/coze 的功能特点:
插件
内置插件
自定义插件
数据源
内容上传
URL 获取在线网页内容
API JSON 数据
自定义数据集
持久化
数据库
知识库
工作流
使用工作流可以无缝的将自己的业务逻辑与相关的工具集相结合,从而构建强大的业务能力。
下面是使用扣子来搭建自己的blog知识库的功能设计图:
前提
本文只要是将自己的 blog 网站的内容作为知识库的数据源来构建自己的知识库。所以如果你想构建自己自己的博客知识库就首先需要有一个博客网站。如果你本地有很多的文本内容同样可以构建自己的知识库,不过需要稍微做个变换就行。本文主要就是提供个思路,仅做参考,提供思路。
配置插件工具
search_keywords插件工具的主要功能就是根据执行一个 博客内容API 请求。返回的内容需要一个 json 的数据,因为需要将search_keywords插件工具在工作流中解析使用。
配置插件工具比较简单,跟着提示一直构建就行。
在第三步:配置输出参数使用“自动解析”即可。
第四步:调试与校验完成后,显示调试通过即可保存。最后回到首页点击发布。
我这里请求 API 不需要请求参数,所以为空,大家根据自己的情况配置即可。
配置工作流
工作流的功能就是将一些工具集或者是另外的一些工作流串起来,创联每个步骤的数据输入以及输出,使功能满足自己的业务逻辑的流程。
我们在空间(个人/团队)里面点击工作流,进入工作流配置页面中创建自己的工作流。
这里面有一个名字是 keywords_search的工作流:
工作流的节点配置以及功能如下:
我们配置了 4 个节点,下面分别说明一下每个节点的作用:
开始节点:
开始节点是工作流的默认节点,我们可以配置输入参数以及参数的数据类型。这里我们配置一个 query:string的参数提供关键字的查找。
search_keywords节点:
search_keywords节点就是我们上面配置的插件,用来获取我们 API 的内容。这里插件可以在工作流的左侧插件列表中找到。插件列表提供了系统内置的插件和自定义的插件。
代码节点:
代码节点的功能是将 start节点的 query 参数与search_keywords节点返回的参数data作为输入的参数数据,并对 data 的数据做过滤,并将过滤后的数据返回。
input 参数:引用开始节点的 query 参数的值。
seach_result参数:引用search_keywords节点返回的数据值。
我们编写代码来过滤数据:
async function main({ params }: Args): Promise<Output> {
const regex = new RegExp(params.input, ‘i’);
let ret = [];
for (let item of params.search_result) {
// let item = params.search_result[idx]
var data = {
“content”: “”,
“date”: “”,
“permalink”: “”,
“summary”: “”,
“title”: “”
}
if (regex.test(item.title)) {
data.content = item.content
data.date = item.date
data.permalink = “https://fm126.top”+item.permalink
data.summary = item.summary
data.title = item.title
ret.push(data)
}
}
return ret
}
配置返回值中参数名称以及数据类型,提供模型回答时候卡片内容的展示配置。
结束节点:
这个节点是工作流的默认结束节点,这里我们只需要配置他的输入参数引用的是代码节点返回的参数 ret即可。
调试工作流:
配置完成后我们可以试用行我们配置的工作流,点击试运行,输入query参数的值,提交后查看运行结果。
这里清晰的可以看到每一步的输入参数和输出参数。
这里有一点需要注意的就是:我们自定义的插件的返回的数据一定需要有个字段名称,否则这里配置参数引用的时候会报错“节点参数校验失败”。
知识库构建:
扣子/coze 的知识库功能支持上传外部数据(例如本地文件、实时在线数据),通过向量搜索来检索最相关的内容以回答用户的问题,这可以帮助你的 Bot 更精确地回答问题。
我们将自己的网站或者 blog 网站的内容导入知识库,通过知识库的自动更新能力,让 Bot 帮助你收集最新数据。当 Bot 使用了这个知识库后,你就可以拥有一个专属领域的 Bot。
一个知识库中可添加一个或多个单元,用于存储外部数据。每个单元可包含多个分段,分段是一条独立的信息或特定的内容块。上传到知识库中的内容会被分割成多个分段,然后通过向量召回,召回最相关的分段,帮助模型提高回答的准确性。
我们创建自己的知识库:blog知识库
创建好知识库后,点击新增单元,并选择导入文件的方式,这里我们选择在线数据来导入博客的页面内容。
点击保存后会自动创建单元,并对数据进行分段。
如此我们可以将所需要的页面内容来构建知识库。
创建Bot
点击 bot 页面 > 创建 bot > 填写名称+介绍 > 结束
Prompt 提示词编排
配置人设与回复逻辑:
人设与回复逻辑:是一种自然语言指令,告诉大语言模型(LLM)执行什么任务。搭建 Bot 的第一步就编写提示词,为 Bot 设定身份和目标。Bot 会根据大语言模型对人物设定和回复逻辑的理解,来响应用户问题。因此提示编写的越清晰明确,Bot 的回复也会越符合预期。
参考编写建议: www.coze.cn/docs/guides…
我们输入一段自然语言,比如:
# 角色
你是一位知识库助手,可以提取、总结、分析和解释内容,并以通俗易懂的语言回答相关问题。
## 技能
### 技能 1: 知识库获取数据
1. 从知识库中查找并提取相关内容。
2. 对知识库中的内容做总结。
3. 如果用户输入的内容格式为“q=keyword”,需要提取等号后面的内容并去除空格,并调用“keywords_search”工作流来查找内容。
4. 用户输入的内容格式为”s=keyword”时,不要调用“知识库”和“keywords_search”工作流来查找内容,你需要提取等号后面的内容并调用“必应搜索”插件来搜索结果。
### 技能 2: 搜索引擎
1. 如果没有找到任何内容输出:“暂未找到相关内容,是否使用搜索引擎搜索内容?”,当用户输入“是”或者“是的”或者“yes”等肯定回答的情况下调用“必应搜索”插件来获取相关内容。
## 限制
– 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求。
– 在使用特定编程语言提取数据时,必须解释所使用的逻辑和方法,不能仅仅给出代码。
– 未找到内容时不要输出卡片数据。
– 只会输出知识库中已有内容, 不在知识库中的内容, 需要通过工具去了解。
– 输出的内容请标记文档连接。
– 请使用 Markdown 的 ^^ 形式说明引用来源。
然后使用优化工具来优化 Prompt:
工具编排
技能区域有 3 部分的配置:
技能:插件、工作流
记忆:知识库、数据库
高级:开场白、用户问题建议、音色
插件配置
我们选择“必应搜索”插件来提供网络搜索。我们的 prompt的有一条指令 4. 用户输入的内容格式为”s=keyword”时,不要调用“知识库”和“keywords_search”工作流来查找内容,你需要提取等号后面的内容并调用“必应搜索”插件来搜索结果。来执行必应搜索插件获取内容。
配置卡片数据绑定:
这里面可以配置卡片的样式,卡片需要绑定的数据源等
工作流配置
工作流配置中添加上面配置的工作流 keywords_search ,并配置卡片的样式,卡片需要绑定的数据源等。
知识库
只要我们上面配置过知识库,这里就会自动绑定我们预先配置好的blog知识库。同样这里可以添加多个知识库来提供Bot 使用。
数据库
我们这里没用到数据库,所以不需要配置。
高级配置
开场白文案配置:你好,我是一名知识库助手,可以为你提供各种信息和答案。无论你需要什么帮助,我都会尽力回答你的问题。
开场白预置问题:
请问知识库中有关于golang主题的信息吗?
帮我总结一下知识库中涉及到的关键技术点。
使用技巧:q=keyword 用来关键字搜索知识库关键字, s=keyword调用搜索引擎来获取内容
用户问题建议:使用默认配置
音色:选用自己喜欢的。
高级配置里面相关文案可以根据自己的实际情况配置,以上仅为参考。或者可以在自己的使用过程中不断的微调,让大模型更能理解我们的意图。
预览与调试
配置完成后就可以在 预览与调试看到bot 基本的样子:
我们可以在预览区域测试我们的 Bot 的能力,Bot 的实际表现,如果不符合预期,根据 Bot 的目标,分析不符合预期的原因,并不断调整和优化回复prompt逻辑。
发布Bot
Bot编辑好后,如果他的实际表现符合我们的预期,我们既可以发布 Bot,扣子/coze支持发布 Bot 到如图所示的平台。
具体相关配置可以参考官方文档: www.coze.cn/docs/guides…
总结
总体来说使用扣子/coze来搭建自己的知识库还是很方便的,通过插件工具,文档上传/拉去形成知识库,然后通过工作流将工具串联起来。
比较耗费时间的地方就是 prompt 人设与回复逻辑的调整。在使用的过程中会遇到比较难以理解的回答和不统一的回答:比如
一个问题问多次,每次回复的差距比较大,有的可以找到知识库中的内容来回答,而有的回答提示未找到相关内容。
执行 q=keyword 和 s=keyword 有的时候可以正确执行,但是大多数的时候还是不能理解。
暂无评论内容