[Unity+文心知识库]使用百度智能云搭建私有知识库,集成知识库API,打造具备知识库的AI二次元姐姐

1.简述

        最近从百度智能云的官方技术支持那边了解到,目前百度千帆大模型平台提供有在线的知识库功能,能够在线上传自己的私人知识库文档,并且配置文心一言模型作为文本生成的引擎,构建自己的私有知识库。之前自己搭建知识库都是用的langchain框架,在本地部署使用的,那么现在通过百度智能云提供的知识库构建平台,就可以很方便的构建出自己的私有知识库应用了,另外的话,这个知识库应用也提供了API调用能力,可以非常方便的集成到我们自己的应用,这就非常的赞了。所以这次这篇文章,就简单给大家介绍一下怎么在百度智能云平台上构建自己的知识库应用,同时利用API服务,将知识库功能集成到我的AI二次元小姐姐项目里。

2.上传知识库

        首先,咱们需要登录到百度智能云的官方站点,账户大家自备。百度智能云的官方站点如下所示:

https://cloud.baidu.com/icon-default.png?t=N7T8https://cloud.baidu.com/

        在百度智能云平台登录账号后,我们从官网菜单中,找到[产品->千帆大模型超级工厂->RAG问答应用],点击即可进入到知识库应用视图。

        在百度智能云知识库应用的控制界面,可以选择知识库,查看知识库视图

        点击创建知识库集合,即可进入到知识库上传视图

        这里的话,百度智能云的知识库能够支持的文档格式包括word、txt以及pdf,我们只需要将自己的知识文档上传,系统将自动处理文档内容,并对文档的内容做切片,提取文档中的知识内容。上传成功后,咱们就可以查看已上传的文档的切片结果,以及提取出来的知识片段。

        同一个知识库集合可以上传多个文档内容,上传完成之后,我们就构建了一个自己专属的知识库集合了,后续的知识库应用的构建,就需要使用到相关的知识库集合,接下来咱们来看看如何创建知识库应用。

3.创建知识库应用

        知识库集合创建完毕后,我们可以创建自己的知识库应用了。点击我的应用,并点击创建一个新的应用,即可是开始构建自己的知识库应用了。

        百度智能云官方提供了三种可构建的应用模板,包括基础生成应用、RAG问答应用以及人设对话应用,其中后两种模板都是对话型模板,我们需要构建对话式的知识库应用,例如AI客服机器人应用,就需要使用后两种模板。

        选择一种模板后,进行应用的创建,界面将进入到知识库应用创建视图

        在知识库应用创建界面中,我们可以选择并指定私有知识库所对应的知识库集合,并根据自己的需求选择一个大语言模型应用。这里,我们也可以选择官方提供的免费试用服务,官方提供了200次的文心大模型4.0的免费调用次数供大家选用。如果咱们选择付费大模型服务的话,那么首先需要在千帆大模型平台创建一个大模型应用,这个可以参考我之前的文章进行操作。

        配置完成之后,我们可以在界面右侧,对已创建的大模型服务进行测试,查看知识库应用的应用效果。测试无误之后,点击发布,即可发布知识库应用了。

        在应用发布界面中提供了两种可访问的形式:

        ①我们可以通过复制知识库应用的服务地址,通过浏览器访问知识库应用;

        ②可以通过API调用,来访问知识库应用。

        这个根据自己的实际需求即可。

4.API调用知识库应用的代码实现

        本节内容将着重介绍一下,如果通过API调用,来访问已构建的知识库应用。在应用发布页面,可以找到API调用说明的文档入口,在实现API调用代码之前,我们先阅读一下API文档。

        API的调用流程很简单,首先,咱们需要在应用发布时,创建API KEY,拿到API key后,再根据API调用的接口规范,使用POST请求进行访问即可。以下是API相关的接口说明:

       4.1 创建API key

        API key的创建,只需要在应用发布界面,点击创建API KEY,即可获取到密钥,请妥善保存api key的信息。

        4.2 API接口说明

        API调用的方法,根据接口文档的说明,我们可以了解到:

        API的请求地址以及方式:

        请求地址:https://console.bce.baidu.com/api/ai_apaas/v1/instance/integrated
        请求方式:POST

        Header参数

参数说明
Content-Typeapplication/json-
X-AuthorizationBearer {API Key}鉴权字段,大括号内需填入API Key(密钥)

        Body参数

注意:要求使用 JSON 格式的结构体来描述一个请求的具体内容。

参数是否必选类型可选值范围描述
querystring-用户的请求query
response_modestringstreaming/blocking响应模式,支持以下两种:
1. streaming:流式响应,使用SSE协议
2. blocking:阻塞响应
conversation_iduuid-对话ID,仅对话型应用生效。在对话型应用中:
1. 空:表示表新建会话
2. 非空:表示在对应的会话中继续进行对话,服务内部维护对话历史

        响应说明

参数是否必选类型描述
codeint错误码。非0为错误,请参考错误码说明
messagestring报错信息
resultobject返回结果
+ answerstring应用响应结果
+ conversation_iduuid对话ID,仅对话式应用生效。如果是对话请求中没有conversation_id,则会自动生成一个

        错误码

错误码错误信息描述
400InvalidRequestArgumentError请求参数错误
401PermissionDeniedError权限错误
404NotFoundResource账户、应用、模型、模版等无法找到
500InternalServerError服务器内部错误
1001QuotaLimitExceeded调用超限,免费额度不足
1004LLMStreamingResponseError模型服务报错
1005TemplateValuesError模版参数校验错误
1006QuotaLimitExpired免费额度已过期
1007QianfanServiceError千帆服务无法访问
1008QianfanPermissionDeniedError千帆服务访问失败,一般是权限错误

4.3 API接口调用的代码实现

        API接口调用的代码实现,我将在Unity中进行代码实现,主要的代码如下:

   #region Params[Header("填写百度助手的apikey")][SerializeField] private string m_ApiKey = string.Empty;private string m_ConversationID= string.Empty;//对话id#endregion#region Methodprivate void Awake(){url = "https://console.bce.baidu.com/api/ai_apaas/v1/instance/integrated";}/// <summary>/// 发送消息/// </summary>/// <returns></returns>public void PostMsg(string _msg, Action<string> _callback){base.PostMsg(_msg, _callback);}/// <summary>/// 发送数据/// </summary> /// <param name="_postWord"></param>/// <param name="_callback"></param>/// <returns></returns>public IEnumerator Request(string _postWord, System.Action<string> _callback){stopwatch.Restart();string jsonPayload = JsonConvert.SerializeObject(new RequestData{query= _postWord,conversation_id=m_ConversationID});using (UnityWebRequest request = new UnityWebRequest(url, "POST")){byte[] data = System.Text.Encoding.UTF8.GetBytes(jsonPayload);request.uploadHandler = (UploadHandler)new UploadHandlerRaw(data);request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();request.SetRequestHeader("Content-Type", "application/json");request.SetRequestHeader("X-Authorization ", m_ApiKey);yield return request.SendWebRequest();if (request.responseCode == 200){string _msg = request.downloadHandler.text;ResponseData response = JsonConvert.DeserializeObject<ResponseData>(_msg);if (response.code == 0){string _msgBack = response.result.answer;m_ConversationID = response.result.conversation_id;//添加记录m_DataList.Add(new SendData("assistant", _msgBack));//回调_callback(_msgBack);}else{OnLogError(response.code);}}}stopwatch.Stop();Debug.Log("文心一言AI助手耗时:" + stopwatch.Elapsed.TotalSeconds);}/// <summary>/// 打印错误信息/// </summary>/// <param name="code"></param>private void OnLogError(int code){if (code == 400){Debug.LogError("请求参数错误");return;}if (code == 401){Debug.LogError("权限错误");return;}if (code == 404){Debug.LogError("账户、应用、模型、模版等无法找到");return;}if (code == 500){Debug.LogError("服务器内部错误");return;}if (code == 1001){Debug.LogError("调用超限,免费额度不足");return;}if (code == 1004){Debug.LogError("模型服务报错");return;}if (code == 1005){Debug.LogError("模版参数校验错误");return;}if (code == 1006){Debug.LogError("免费额度已过期");return;}if (code == 1007){Debug.LogError("千帆服务无法访问");return;}if (code == 1008){Debug.LogError("千帆服务访问失败,一般是权限错误");return;}}#endregion#region 数据定义[Serializable]private class RequestData{[SerializeField] public string query=string.Empty;//对话内容[SerializeField] public string response_mode= "blocking";//对话模式 1. streaming:流式响应,使用SSE协议  2. blocking:阻塞响应[SerializeField] public string conversation_id=string.Empty;//对话id,第一次对话后返回,用作聊天记录,服务端自行处理}[Serializable]private class ResponseData{[SerializeField] public int code;[SerializeField] public string message = string.Empty;[SerializeField] public ReData result = new ReData();}[Serializable]private class ReData{[SerializeField] public string answer = string.Empty;//回复[SerializeField] public string conversation_id = string.Empty;//对话id}#endregion

        通过调用PostMsg方法,即可实现将输入的文本信息,发送到知识库的API接口,并返回AI回复的信息文本的功能。

5. Unity端配置

        关于文心知识库的API调用模块,我已经更新到我开源项目中,本节内容将介绍一下在unity端的配置方式。注意一下,unity的版本要求在2020.3.44及以上。

        我们在Unity端,找到LLM对象下的“文心知识库”对象,在对象脚本上填写知识库应用的API KEY,并将文心知识库对象配置为ChatAgent的LLM模块即可完成配置了。详细配置流程可以参见我的B站视频。

6. 结束语

        本次的文章详细介绍了如何在百度智能云平台创建知识库结合,并构建自己的私有知识库应用的操作方法,并且实现了通过API访问,将百度文心知识库应用集成到AI二次元小姐姐项目中。通过这次的应用集成,我们的AI小姐姐将具备知识库储备了。关于本文所涉及内容的详细讲解视频,感兴趣的朋友可以观看我的B站视频,以下为视频传送门:

[Unity+文心知识库]使用百度智能云搭建私有知识库,集成知识库API,打造具备知识库的AI二次元姐姐


项目地址传送门:

AI二次元老婆开源项目(unity-AI-Chat-Toolkit):

Github地址:https://github.com/zhangliwei7758/unity-AI-Chat-Toolkit

Gitee地址:https://gitee.com/DammonSpace/unity-ai-chat-toolkit
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VPN 在网络安全中的应用

虚拟专用网络&#xff08;Virtual Private Network&#xff0c;VPN&#xff09;是指利用不安全的公共网络如 Internet 等作为传输媒介&#xff0c;通过一系列的安全技术处理&#xff0c;实现类似专用网络的安全性能&#xff0c;保证重要信息的安全传输的一种网络技术。 1&#…

【网络安全技术】电子邮件安全PGP,SMIME

一、PGP&#xff08;Pretty Good Privacy&#xff09; PGP是一种邮件加密手段&#xff0c;他在发邮件一方加密&#xff0c;然后发给发送方邮件服务器&#xff0c;发送方邮件服务器再发送给接收方邮件服务器&#xff0c;然后接收方再从接收方邮件服务器pop出来&#xff0c;这整…

python和pygame实现烟花特效

python和pygame实现烟花特效 新年来临之际&#xff0c;来一个欢庆新年烟花祝贺&#xff0c;需要安装使用第三方库pygame&#xff0c;关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 效果图及源码 先看效果图&#xff1a…

共建开源新里程:北京航空航天大学OpenHarmony技术俱乐部正式揭牌成立

12月11日,由OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群技术指导委员会(以下简称“TSC”)和北京航空航天大学共同举办的“OpenHarmony软件工程研讨会暨北京航空航天大学OpenHarmony技术俱乐部成立仪式”在京圆满落幕。 现场大合影 活动当天,多位重量级嘉宾出席了此次…

【EXCEL】vlookup,index/match查找函数

区别&#xff1a; 1.Vlookup函数只能查找列数据&#xff0c;即纵向查找&#xff0c;而IndexMatch函数&#xff0c;既可以纵向查找&#xff0c;也可以横向查找&#xff1b; 2、Vlookup函数查找的依据(第一个参数)必须位于数据源的第一列&#xff0c;IndexMatch函数组合则无此限制…

matlab操作方法(三)——matlab中的数字图像(读取、显示、保存)

数字图像是二维图像用有限数字数值像素的表示。通常像素在计算机中保存为二维整数数组的光栅图像&#xff0c;这些值经常用压缩格式进行传输和存储。 二值图像&#xff1a;图像中每个像素的亮度值仅可以取自0或1的图像&#xff0c;因此也称为1bit图像 灰度图像&#xff1a;图…

华为配置基本QinQ示例

组网需求 如图1所示&#xff0c;网络中有两个企业&#xff0c;企业1有两个分支&#xff0c;企业2有两个分支。这两个企业的各办公地的企业网都分别和运营商网络中的SwitchA和SwitchB相连&#xff0c;且公网中存在其它厂商设备&#xff0c;其外层VLAN Tag的TPID值为0x9100。 现…

StatusBar、NavigationBar窗口显示在Activity下面之aosp14窗口类bug线索征集

背景&#xff1a; hi&#xff0c;粉丝朋友们&#xff1a; 从上次帮助国际学员解决了一个分屏有黑屏的bug后&#xff0c;相关blog和解决方法 https://blog.csdn.net/learnframework/article/details/134708393 解决方法看b站视频&#xff1a; https://www.bilibili.com/video/B…

Spring的AOP基于注解之准备工作(需要添加的依赖以及配置文件)

添加完依赖会爆红&#xff0c;点击m标刷新即可 使用SpringAspectJ的AOP需要引入的依赖如下&#xff1a; <repositories><!--spring6里程碑版本的仓库--><repository><id>repository.spring.milestone</id><name>Spring Milestone Reposi…

《使用ThinkPHP6开发项目》 - 登录接口二

《使用ThinkPHP6开发项目》 - 登录接口一-CSDN博客 说到登录&#xff0c;这就涉及到数据验证和数据库 这里要创建数据库以及登录要用到的用户表 1&#xff09;创建管理员表 CREATE TABLE vanus_system_admin (id smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 管理…

路由器静态路由的配置

路由器静态路由的配置步骤如下&#xff1a; 进入系统视图。输入命令sys进入系统视图。配置路由器的接口IP地址。命令格式为int g0/0/0&#xff0c;其中g0/0/0表示路由器的接口&#xff0c;可以根据实际情况进行修改。然后使用命令ip add配置接口的IP地址。配置下一跳地址。在静…

C# 编写Windows服务程序

1.什么是windows服务&#xff1f; Microsoft Windows 服务&#xff08;即&#xff0c;以前的 NT 服务&#xff09;使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动&#xff0c;可以暂停和重新启动而且不显示任何用…

Web前端 ---- 【Vue】Vue路由传参(query和params)

目录 前言 为什么用路由 路由route和路由器router Vue中路由的工作原理 安装配置vue-router 使用VueRouter 多级路由 路由传参 query传参 params传参 前言 本文介绍路由相关知识路由传参 为什么用路由 为了单页面应用开发&#xff0c;只更换组件&#xff0c;不频繁刷…

什么软件可以压缩视频大小?超级简单

什么软件可以压缩视频大小&#xff1f;当我们想将视频上传到网上时&#xff0c;有时候会遇到视频因为体积太大而无法上传的问题&#xff0c;这种情况就需要将视频进行压缩了。那什么软件可以压缩视频大小呢&#xff1f;下面小编就来为大家介绍压缩视频的方法&#xff0c;支持批…

极新AIGC行业峰会 | 圆桌对话:探索中国AGI迭代之路

“AGI正处在一个巨大的研发范式革命的起点。” 整理 | 周梦婕 编辑 | 小白 出品&#xff5c;极新 2023年11月28日&#xff0c;极新AIGC行业峰会在北京东升国际科学院拉开帷幕&#xff0c;峰会上午的圆桌环节由凡卓资本合伙人王梦菲主持&#xff0c;深势科技战略副总裁何雯…

Spring Boot 3.x.x Spring Security 6.x.x @PreAuthorize 失效

Spring Boot 3.x.x Spring Security 6.x.x PreAuthorize 失效 背景问题解决备注 背景 最近在搞一个后端项目&#xff0c;登录、接口权限、token认证。 版本 Spring Boot 3.2.0 JDK 21 Spring Security 6.2.0 问题 PreAuthorize 失效&#xff0c;没有走认证。 解决 给PreAu…

生成小程序URLlink链接遇到的坑

这里写自定义目录标题 前端生成小程序URL link背景用户打开小程序的常用方法短链接短链接优缺点优点缺点 生成短链接步骤 可能会遇到的问题&#xff1a;其他 注意&#x1f4e2; 前端生成小程序URL link ![h5打开小程序](https://img-blog.csdnimg.cn/direct/a4cfe3ef6d184c6d9…

OfficeWeb365 SaveDraw 文件上传漏洞复现

0x01 产品简介 OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 0x02 漏洞概述 OfficeWeb365 Sav…

Python 反射

Python 反射是什么&#xff1f; 学习了几天&#xff0c;做个总结留给自己看。 感觉跟 SQL 入门要掌握的原理一样&#xff0c;Python 反射看起来也会做4件事&#xff0c;“增删查获” 增 - 增加属性&#xff0c;方法 setattr 删 - 删除属性&#xff0c;方法 delattr 查 - …

用 MATLAB 实现的计算机CT断层扫描图像重建项目源码

完整源码资源下载链接 计算机断层扫描图像重建 介绍 计算机断层扫描是堆叠在一起的 X 射线图像的集合&#xff0c;以获得作为诊断图像第三维的深度信息。这些“堆叠的” X 射线图像作为正弦图从 CT 机架接收&#xff0c;代表对象单层的 X 射线吸收剖面。该项目的目标是重建该…