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

这篇具有很好参考价值的文章主要介绍了[Unity+文心知识库]使用百度智能云搭建私有知识库,集成知识库API,打造具备知识库的AI二次元姐姐。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简述

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

2.上传知识库

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

https://cloud.baidu.com/https://cloud.baidu.com/[Unity+文心知识库]使用百度智能云搭建私有知识库,集成知识库API,打造具备知识库的AI二次元姐姐,人工智能

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

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

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

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

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

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

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

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

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

3.创建知识库应用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

       4.1 创建API key

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

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

        4.2 API接口说明

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

        API的请求地址以及方式:

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

        Header参数

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

        Body参数

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

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

        响应说明

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

        错误码

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

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 Method

    private 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+文心知识库]使用百度智能云搭建私有知识库,集成知识库API,打造具备知识库的AI二次元姐姐,人工智能

        我们在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
 文章来源地址https://www.toymoban.com/news/detail-759253.html

到了这里,关于[Unity+文心知识库]使用百度智能云搭建私有知识库,集成知识库API,打造具备知识库的AI二次元姐姐的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用chatglm搭建本地知识库AI_闻达

    最近大火的chatgpt,老板说让我看看能不能用自己的数据,回答专业一些,所以做了一些调研,最近用这个倒是成功推理了自己的数据,模型也开源了,之后有机会也训练一下自己的数据。 1.1双击打开anconda prompt创建虚拟环境 1.2下载pytorch(这里要根据自己的电脑版本下载)都

    2024年02月10日
    浏览(51)
  • 使用langchain+chatGPT搭建自有知识库问答机器人

            自去年年底OpenAI发布ChatGPT以来,大型语言模型在人工智能领域掀起了一股热潮。随后,各家公司纷纷推出自己的大型语言模型,如百度的文心一言、讯飞的星火大模型等。在这个过程中,文本转图片和文本转视频等相关领域也备受关注。然而,很显然,这只是一时的

    2024年02月13日
    浏览(50)
  • NAS上使用Docker搭建Wiki.js构建云知识库

    在寻找合适的知识管理工具时,我们通常希望找到既功能丰富又易于使用的解决方案。大多数公司会用到confluence作为知识管理工具。但是作为个人使用的话confluence一要收费,其次是相对会比较重。 考虑到个人使用以及计算资源有限的场景下,Wiki.js是一个合适的工具,非常适

    2024年01月22日
    浏览(53)
  • 使用OpenAI Assistants三分钟搭建个人知识库AI助手网站

    随着OpenAI将Assistants助手API对外发布,我们搭建个人知识库变的如此简单。开发者将自己的应用通过Assistants API与OpenAI对接,就可以让每一位客户拥有不一般体验的个人知识库。由于Assistants相关API有30+,本文只列举完成一个最小功能闭环涉及的接口。关于Assistants的介绍,这里

    2024年02月05日
    浏览(50)
  • 公众号能当知识库用了!文心一言插件能行!

    10 月17 日的百度世界大会即将开始了,我还是挺期待今年的百度世界大会的,得益于百度在AI赛道的积累,李彦宏将在现场做主题为「手把手教你做AI原生应用」演讲,现场将会展示文心大模型的理解、⽣成、逻辑和记忆四项核心能⼒在生活中的高频应用。 为了验证百度大模

    2024年02月05日
    浏览(48)
  • 【AI】使用阿里云免费服务器搭建Langchain-Chatchat本地知识库

    书接上文,由于家境贫寒的原因,导致我本地的GPU资源无法满足搭建Langchain-Chatchat本地知识库的需求,具体可以看一下这篇文章,于是我只能另辟蹊径,考虑一下能不能白嫖一下云服务器资源,于是去找网上找,您还别说,还真有,具体的领取方法可以查看我的这篇文章:【

    2024年02月03日
    浏览(76)
  • 使用PAI-DSW搭建基于LangChain的检索知识库问答机器人

    教程简述 在本教程中,您将学习如何在阿里云交互式建模(PAI-DSW)中,基于LangChain的检索知识库实现知识问答。旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 LangChain是一个开源的框架,可以让AI开发人员将像GPT-4这样的大语言模型(LL

    2024年02月01日
    浏览(49)
  • 如何搭建产品知识库?让产品知识库管理更有序高效!

    在现代企业中,一个完善的产品知识库对于提升团队的工作效率和产品质量至关重要。本文将介绍如何搭建一个高效的产品知识库,并提供一些管理方法,以使知识库的管理更有序、高效。 随着科技的不断进步和市场竞争的加剧,企业对于高效管理产品知识的需求日益增加。

    2024年02月11日
    浏览(43)
  • uniapp 小程序端,使用uni-ai-chat对接百度大模型知识库,保留uni-ai-chat流式响应,删除广告及其他冗余代码

    我使用的是uniapp管网的uni-ai-chat插件,查看后续内容前,请先确认是否使用的也是该插件 uniapp官方插件介绍:https://uniapp.dcloud.net.cn/uniCloud/uni-ai-chat.html 插件地址:https://ext.dcloud.net.cn/plugin?name=uni-ai-chat 核心代码 主要就是重写了send方法中的部分逻辑,我这里是前端直接调用的

    2024年02月03日
    浏览(91)
  • 内网穿透的应用-使用Docker搭建一个Wiki.Js知识库系统并实现分享他人远程创作

    不管是在企业中还是在自己的个人知识整理上,我们都需要通过某种方式来有条理的组织相应的知识架构,那么一个好的知识整理工具是非常重要的,今天推荐一款维基知识库系统——Wiki.js。 本文将介绍如何用 Docker 容器技术部署 Wiki.js 应用程序,并且结合cpolar发布至公网实

    2024年01月18日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包