logo

【千帆平台】零代码结合知识库或者插件开发一款AI应用,2024年奥运会运动员获奖信息

背景

2024年奥运会已经落下帷幕,中国金牌并列第一。
尽管比赛已经结束,网上也有很多奖牌排行榜,但是很少有运动员维度获奖信息或者排行榜。
因此,博主这里通过记录2024年奥运会的每个获奖运动员信息,并且通过知识库方式进行存储查询。
可以查询指定运动员获奖信息,或者各个国家奖牌排行情况等等。

组件方式

prompt

下面是通过调用组件方式编写的prompt,目的是按大模型能够识别到并调用组件
  
  
  
  
  
  
#角色设定
你是一名2024巴黎奥运会运动员获奖信息查询小助手,
你能够根据用户输入的运动员名称执行插件工具,然后获得插件工具返回数据进行显示。
#组件能力
1、根据用户输入的运动员名称,执行组件。
2、根据用户输入的排行榜,执行组件。
3、组件返回数据进行显示。
#要求与限制
1.输出内容的合法合规,不能具有敏感信息
2.要求解析markdown格式表格,并以表格方式显示信息
3.输出格式为一个表格

新参数

在开始节点,新增多了两个参数chatHistory和fileUrls。
chatHistory:用户与应用的对话历史(有了这个参数也许可以做到和用户一对一识别后端交互,这个可以验证下)
fileUrls:用户在对话中上传的文件地址
历史对话参数查看情况
第一次对话,chatHistory历史对话参数没有值
  
  
  
  
  
  
{"input":"张雨霏运动员获奖信息","name":"张雨霏","chatHistory":""}
第二次对话,会把前一次的问答记录传回来
  
  
  
  
  
  
{"input":"苏炳添运动员","name":"苏炳添","chatHistory":"User:张雨霏运动员获奖信息\nAssistant:张雨霏运动员在2024巴黎奥运会上的获奖信息如下:\n| 比赛项目 | 奖牌 |\n| --- | --- |\n| 男女混合4x100米混合泳接力 | 银牌 |\n| 女子100米蝶泳 | 铜牌 |\n| 女子200米蝶泳 | 铜牌 |\n| 女子4x100米混合泳接力 | 铜牌 |\n| 女子4x100米自由泳接力 | 铜牌 |\n| 女子50米自由泳 | 铜牌 |\n以上就是张雨霏运动员在巴黎奥运会上的获奖情况。\n\n"}

运动员信息组件

组件里使用了一个API节点,api调用的是自己服务器后端接口,通过接口写逻辑查询数据库。
关键还是设置好api接口接收的参数name运动员参数,这个参数的是被由大模型进行识别和赋值。

奖牌排行榜组件

组件里使用了一个API节点,api调用的是自己服务器后端接口,通过接口写逻辑查询数据库。
关键还是设置好api接口接收的参数country国家和type奖牌类型参数,这个参数的是被由大模型进行识别和赋值。

知识库方式

知识库这里,控制切换的内容长度也是一个非常关键的地方。

prompt

  
  
  
  
  
  
#角色设定
你是一名2024巴黎奥运会运动员获奖信息查询小助手,
你能够根据用户输入的运动员名称执行知识库查询信息,以及各维度奖牌排行榜信息。
#知识库能力
1、根据用户输入的运动员名称,执行知识库查询。
2、根据用户输入的排行榜,执行知识库查询。
3、知识库返回数据进行显示。
4、用户输入查询排行榜、奖牌榜等信息时,调用知识库【2024年巴黎奥运会各国运动员奖牌数量排行榜】文件查询
#要求与限制
1.输出内容的合法合规,不能具有敏感信息
2.要求解析markdown格式表格,并以表格方式显示信息
3.输出格式为一个表格
#运动员输出格式
XXX是一名XX国家XX运动员
|比赛项目|奖项类型|查看详情|
[头像]()
#排行榜输出格式
|运动员|国家|奖牌数量|

切片断层

这里使用【张雨霏】运动员作为例子,因为获奖奖牌数量多,所以,她的内容也是会比较多,
这样在默认切片情况下,在命中测试时是会出现断层,从而无法准确查询到所有信息。
  • 下面是默认切片效果
  • 下面是根据#井号进行整个运动员信息切片效果

模型输出

刚开始选择Speed速度上有优势的问答模型,发现会把部分信息混淆输出,导致数据不准确。
这个【美国昆西·霍尔】关键词,出来两个参考切片,查看内容发现【昆西】这个关键词一样。
为了确保准确性,选择了模型【ERNIE-4.0-8K】,之后测试可以准确输出。

正则表达式

由于按运动员名称进行存储文件,上传到知识库时太多了。
因此,把所有运动员信息保存到同一个txt文档,然后通过#井号符号进行切分。
确保每个切片都是唯一一个运动员的所有信息,所以增加到5000个字符切分,基本能满足了。

整个文件作为切片

由于这个文件是各国奖牌排行榜数据,所以不能有断层,所以这里就用了整个文件作为切片。
给文件增加一些关键词,增加命中率,比如:排行榜、中国排行榜、各国排行榜等等
如果整个文件切片内容过长,很有可能是无法召回的,所以,也需要适当进行长度切片。

排行榜

目前只上传了前20名,获得奖牌数量的排行榜。
  
  
  
  
  
  
|运动员|国家|奖牌数量|
|张雨霏|中国|6|
|凯莉·麦基翁|澳大利亚|5|
|莫莉·奥卡拉汉|澳大利亚|5|
|莱昂·马尔尚|法国|5|
|丽根·史密斯|美国|5|
|托丽·赫斯克|美国|5|
|阿里亚妮·蒂特马斯|澳大利亚|4|
|丽贝卡·安德拉德|巴西|4|
|萨默·麦金托什|加拿大|4|
|格蕾琴·沃尔什|美国|4|
|凯蒂·莱德基|美国|4|
|凯特·道格拉斯|美国|4|
|西蒙娜·拜尔斯|美国|4|
|冈慎之助|日本|4|
|杨浚瑄|中国|4|
|埃玛·麦基翁|澳大利亚|3|
|凯尔·查默斯|澳大利亚|3|
|马修·理查德森|澳大利亚|3|
|梅格·哈里斯|澳大利亚|3|
|金优镇|韩国|3|

体验地址

我在百度智能云千帆AppBuilder开发了一款AI原生应用,快来使用吧!
「2024巴黎奥运会运动员获奖信息」:https://appbuilder.baidu.com/s/lObZZwY5
手机端体验地址:https://wx.baeapps.com/api/ai_apaas/v1/wx_program/share?share_code=app7kD9trRXfbCLI2Q3WPpU
感谢阅读,本篇文章分享就到这里啦!
希望这篇文章分享的知识库和组件的经验能够给你一点小灵感。
评论
用户头像