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

本文主要是介绍[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
 

这篇关于[Unity+文心知识库]使用百度智能云搭建私有知识库,集成知识库API,打造具备知识库的AI二次元姐姐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/489976

相关文章

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线