通过计算巢创建专属ChatBot

ChatBot是一款通过自然语言与人类进行交流的人机交流对话智能系统,您可以通过ChatBot搭建智能客服,构建企业知识库用于智能问答。本文介绍如何通过计算巢配合AnalyticDB PostgreSQL版实例创建专属ChatBot。

费用说明

创建一站式企业专属Chatbot社区版(大模型+向量数据库)服务时,系统会自动创建ECS实例以及AnalyticDB PostgreSQL版存储弹性模式实例,以上实例资源会产生费用,关于费用信息的具体说明请参见以下计费文档:

产品优势

  • 支持多模型:支持通义千问-7b、ChatGLM-6b、Llama2-7b 、Llama2-13b、百川-13b和Falcon-7b等模型,支持创建后切换模型。

  • 支持GPU的集群管理:在测试的过程中可以使用低水位的GPU实例,随着业务的增长,可以设置基于资源使用情况的动态GPU集群弹性管理,最大程度地节省GPU的开销。

  • 基于AnalyticDB PostgreSQL完整数据库能力进行精细化的权限设计:可以基于开源代码调整权限查询,同时支持AnalyticDB PostgreSQL的知识库管理配套相关API,可以更灵活地调用。

  • API与WebUI均可用:可快速实现AIGC后台面向应用的灵活集成。

  • 数据安全:所有数据、算法和GPU资源均为域内资源,无任何数据出域风险,充分保障企业核心数据无泄露隐患。

RAM用户授权

如果您使用RAM用户进行以下操作,需要提前对RAM用户进行授权,关于计算巢所需的RAM权限以及如何设置RAM授权,请参见为用户侧RAM用户(子账号)授权

创建服务实例

  1. 进入创建服务实例页面。

  2. 创建服务实例页面,配置以下信息。

    类型

    参数

    说明

    选择模板

    选择PAI-EAS模板。

    服务实例名称

    设置服务实例的名称,系统会随机生成一个名称,建议配置具有业务意义的名称,便于后续识别。

    地域

    服务实例、ECS实例以及AnalyticDB PostgreSQL版实例所在地域。

    付费类型配置

    付费类型

    根据需求选择按量付费包年包月

    本文以按量付费的付费类型为例。

    ECS配置

    实例类型

    选择ECS实例的规格

    实例密码

    ECS实例的登录密码。

    白名单设置

    ECS实例的白名单。

    建议您将需要访问大模型的服务器的IP地址加入白名单。

    PAI-EAS模型配置

    选择大模型

    选择预配置的大模型。

    PAI实例规格

    可选择PAI服务的GPU规格,若无库存则无法选中。

    AnalyticDB PostgreSQL

    实例规格

    AnalyticDB PostgreSQL版实例的计算节点规格。

    Segment存储大小

    AnalyticDB PostgreSQL版实例的计算节点存储空间大小,单位为GB。

    数据库账号名称

    AnalyticDB PostgreSQL版实例的初始账号名称。

    数据库密码

    AnalyticDB PostgreSQL版实例的初始账号密码。

    应用配置

    软件登录名

    大模型软件的登录名称,用于登录langchain Web服务。

    软件登录密码

    大模型软件的登录密码。

    可用区配置

    交换机可用区

    选择服务实例所在的可用区。

    选择网络配置

    是否新建VPC

    您可以选择新建VPC也可以使用已有VPC,本文以新建VPC为例。

    专有网络IPv4网段

    输入VPC的IP地址段。

    交换机子网网段

    输入虚拟交换机的IP地址段。

    标签和资源组

    标签

    选择服务实例需要绑定的标签。

    资源组

    选择服务实例所属的资源组,相关介绍,请参见什么是资源管理

  3. 单击下一步:确定订单

  4. 检查依赖检查服务实例信息价格预览区域,确认无误后再进行后续操作。

    说明

    如果依赖检查中存在部分角色权限未开通,单击右侧立即开通进行开通。完成开通后,请单击该区域的刷新按钮。

  5. 选中我已阅读并同意《计算巢服务协议》,单击立即创建

  6. 系统提示提交成功后,单击去列表查看

创建服务实例耗时约为10分钟左右,您可以在服务实例管理页面,查看服务实例的状态,当状态由部署中变为已部署表示已完成创建。

使用ChatBot

使用ChatBot前,您需要将知识问答相关的文件上传到知识库中,以下步骤将指导您如何上传文件以及使用ChatBot。

  1. 计算巢控制台服务实例管理页面,单击目标服务实例ID,进入服务实例详情页面。

  2. 服务实例详情页的实例信息区域,单击Endpoint右侧的链接。计算巢endpoint.png

  3. 在弹出的登录对话框中,输出创建服务实例时设置的软件登录名软件登录密码,然后单击登录

  4. 在页面右上方的请选择使用模式区域,选择知识库问答

  5. 在页面右侧配置知识库区域,在请选择要加载的知识库项目下选择新建知识库,并输入新建知识库的名称,单击添加至知识库选项

  6. 设置文本入库分句长度限制,您可以根据需求进行设置,此处推荐设置为500。

  7. 在新建知识库中添加文件。

    • 上传方式支持上传文件上传文件和URL以及上传文件夹

    • 上传的文件支持PDF、 markdown,txt,word等格式。

    • 如需删除文件,可以在删除文件界面进行删除。

  8. 上传完成后,您可以在页面左下方提问内容,单击提交进行问答。

资源管理

查看服务实例关联的资源

  1. 计算巢控制台服务实例管理页面,单击目标服务实例ID,进入服务实例详情页面。

  2. 单击资源,进入资源页签。

AnalyticDB PostgreSQL资源管理

资源页面,找到所属产品云原生数据仓库 AnalyticDB PostgreSQL 版的资源,单击资源ID即可进入AnalyticDB PostgreSQL版实例管理页面。

更多关于AnalyticDB PostgreSQL版实例向量分析的介绍,请参见如下文档:

如需额外的存储和计算资源,请参见如下文档进行实例管理:

查看AnalyticDB PostgreSQL版实例上的知识库数据

  1. 在AnalyticDB PostgreSQL版实例管理页面,单击页面右上方的登录数据库。具体操作,请参见使用DMS登录数据库

    说明

    数据库账号密码为创建服务实例步骤中设置的数据库账号名称数据库密码

  2. 成功登录后,在左侧已登录实例中找到目标AnalyticDB PostgreSQL版实例,双击chatglmuser库下的public Schema。

    • 知识库列表存储在langchain_collections表。

    • 单个知识库及文档上传后的企业知识块(chunk),会存储于以知识库命名的表内(包括embedding、chunk、文件元数据以及原始文件名称等信息)。

更多关于DMS的使用方法,请参见什么是数据管理DMS

PAI-EAS资源管理

开启弹性扩缩容

PAI-EAS提供丰富的Serverless资源弹性能力,包括水平自动扩缩容功能定时自动扩缩容功能弹性资源池。在业务负载有显著的波峰波谷时,为了不造成资源浪费,您可以开启水平自动扩缩容功能。开启后,服务会自动调整实例数量,实现动态管理线上服务的计算资源,从而保障业务平稳运行的同时提高资源利用率。

  1. 在服务实例的资源页面,找到所属产品机器学习 PAI的资源,单击资源ID即可进入人工智能平台 PAI服务详情页面。

  2. 单击自动伸缩页签。

  3. 弹性伸缩区域,单击开启弹性伸缩

  4. 在自动弹性扩缩容设置对话框,配置最小实例数最大实例数以及常规扩缩容指标

    • 如果您的调用量不大,想进行随开随停。建议您将最小实例数设置为0,最大实例数设置为1,常规扩缩容指标设置为单实例QPS伸缩阈值单实例QPS伸缩阈值的值设置为1。该场景下,当没有服务请求时,服务会自动停止;服务重新接受请求时,服务会自动启动。

    • 如果您每天的业务量较大且有不定期的波峰波谷时,您可以根据具体的业务情况。例如最小实例数设置为5,最大实例数设置为50,常规扩缩容指标设置为单实例QPS伸缩阈值单实例QPS伸缩阈值的值设置为2。该场景下,服务会根据您的业务请求自动在5~50个实例之间进行弹性伸缩。

  5. 单击开启

更换开源大模型

  1. 在服务实例的资源页面,找到所属产品机器学习 PAI的资源,单击资源ID即可进入人工智能平台 PAI服务详情页面。

  2. 单击页面右上方的更新服务

  3. 在部署服务页面,修改运行命令和GPU的实例规格,其他配置项保持默认。

    不同模型的运行命令以及推荐的GPU实例规格如下。

    模型

    运行命令

    推荐机型

    llama2-13b

    python api/api_server.py --port=8000 --model-path=meta-llama/Llama-2-13b-chat-hf --precision=fp16

    V100(gn6e)

    llama2-7b

    python api/api_server.py--port=8000 --model-path=meta-llama/Llama-2-7b-chat-hf

    GU30、A10

    chatglm2-6b

    python api/api_server.py --port=8000 --model-path=THUDM/chatglm2-6b

    GU30、A10

    Qwen-7b

    python api/api_server.py --port=8000 --model-path=Qwen/Qwen-7B-Chat

    GU30、A10

    chatglm-6b

    python api/api_server.py --port=8000 --model-path=THUDM/chatglm-6b

    GU30、A10

    baichuan-13b

    python api/api_server.py --port=8000 --model-path=baichuan-inc/Baichuan-13B-Chat

    V100(gn6e)

    falcon-7b

    python api/api_server.py --port=8000 --model-path=tiiuae/falcon-7b-instruct

    GU30、A10

  4. 单击部署

  5. 部署服务对话框中,单击确定

常见问题

  • Q:如何使用向量检索相关API?

    A:请参见Java

  • Q:如何查看服务实例部署进度?

    A:创建服务实例后,会在10分钟左右完成计算巢服务的创建(包括初始化ECS和AnalyticDB PostgreSQL向量数据库),同时会异步进行LLM大模型的下载,此过程需要花费大概30~60分钟。如需查看模型下载进度,可登录ECS,查询下载日志。LLM大模型下载完成后,登录Web界面即可查看相关的Chatbot应用。

  • Q:创建计算巢服务后, 如何登录ECS?

    A:您可以在服务实例的资源页签,找到资源类型安全组 securitygroup的资源,单击目标资源的资源ID。在ECS实例的基本信息页面,单击远程连接。更多连接方式,请参见连接实例

  • Q:如何重启Langchain服务?

    A:可以登录ECS执行如下命令进行重启。

    systemctl restart langchain-chatglm
  • Q:如何查询langchain日志?

    A:可以登录ECS执行如下命令进行查看。

    journalctl -ef -u langchain-chatglm
  • Q:服务完成后模型加载不成功?

    A:开通服务后,系统会从huggingface上下载LLM模型到本地。国内地域下载服务时间可能较长,需要等待30~60分钟,请等待完成后再登录界面,选择重新加载模型进行重试。

  • Q:如何查看部署代码的详细信息?

    A:请参见langchain-ChatGLM文档。

  • Q:如何申请产品团队进行服务后台支持?

    A:可以开通一站式企业专属Chatbot运维服务进行服务支持。

  • Q:为什么访问服务是空白页?

    A:该服务是中国站的计算巢服务,所以如果有海外访问代理的话可能会出现问题,需要关闭代理然后进行访问创建。

  • Q:Langchain部署在ECS什么地方?

    A:Langchain部署在/home/admin/langchain-ChatGLM路径下。

  • Q:如何开通Langchain API?

    A:请在ECS上执行命令进行开通。

    #新建langchain-chatglm-api的systemd文件
    cp /lib/systemd/system/langchain-chatglm.service /lib/systemd/system/langchain-chatglm-api.service
    #修改/lib/systemd/system/langchain-chatglm-api.service中ExecStart
    #PAI-EAS版
    ExecStart=/usr/bin/python3.9 /home/langchain/langchain-ChatGLM/api.py
    #GPU单机版
    ExecStart=/usr/bin/python3.9 /home/admin/langchain-ChatGLM/api.py
    #重新加载systemd
    systemctl daemon-reload
    #启动API
    systemctl restart langchain-chatglm-api
    # 然后启动日志看到这个就启动成功:
    INFO:     Uvicorn running on http://0.0.0.0:7861 (Press CTRL+C to quit)
    # 查看所有的api:
    curl http://0.0.0.0:7861/openapi.json

更多问题,您可以加入钉钉群(钉钉群号:32960015260)进行咨询。