ChatGLM和LangChain搭建对话模型

更新时间: 2024-02-23 14:33:41

技术解决方案手动部署

60

https://www.aliyun.com/solution/tech-solution/calbadm

方案概览

本方案介绍如何通过ChatGLM和LangChain构建高效的对话模型。该对话模型基于自然语言处理技术,并使用语言交换协议以提升语义理解和交互体验。该方案可以广泛应用于聊天机器人、智能客服、社交媒体等场景中,可以有效解决对话模型中的语义理解和交互问题,并提高用户交互的自然性和流畅度。

方案架构

以下为您展示本技术方案的架构。

7d3ba5d7432f88cdcfbe160ca043ab4a.jpg

本方案的实现原理如下:

  • 通过PAI-EAS的预置镜像,一键拉起ChatGLM-WebUI的应用服务。

  • 通过预置的LangChain插件,快速集成企业内业务的知识库文件(支持配置.txt.md.docx.pdf格式的文件),将业务文件通过向量化的方法一键集成到向量存储检索库中。LangChain首先将输入的用户数据进行自然语言处理并作为大模型的知识库存储,每次推理用户的输入会首先在本地知识库中查找与输入问题相近的答案,并将知识库答案与用户输入一起输入大模型生成基于本地知识库的定制答案。

  • 支持各种主流的开源大模型,包括ChatGLM、LLaMA等。

  • 支持网络搜索功能,将用户的输入先计入互联网搜索引擎中进行检索。查找与输入问题相近的答案,并将答案与用户输入一起输入大模型生成基于网络搜索内容的答案。

本方案内容以一个官方预置镜像为例,为您介绍如何快速部署ChatGLM模型并通过WebUI快速体验智能对话效果。您在实际部署时可以根据业务场景调整部署方案。

部署准备

10

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值

    • 本方案的云资源(包括PAI-EAS、NAS和函数计算等服务)支持按量付费,且默认设置均采用按量付费引导操作。使用按量付费资源需要确保账号余额不少于100元。

    • 完成本方案的部署及体验,预计产生费用不超过10元。(假设您选择最低规格PAI-EAS资源,且资源运行时间不超过60分钟。如调整了资源规格,请以控制台显示的实际报价以及最终账单为准)。

    • 按量付费包括了PAI-EAS服务运行所消耗的公共资源费用和NAS存储费用。关于PAI-EAS的相关计费逻辑与单价详情,请参见EAS计费说明。关于NAS的相关计费逻辑和单价详情,请参见通用型NAS计费。函数计算上传文件属于入流量,不计费。更多关于函数计算计费的详情,请参见计费概述

  3. 阿里云账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建RAM用户。RAM用户需要获得相关云服务的访问权限才能完成方案部署,详情如下:

    云服务

    需要的权限

    描述

    PAI-EAS

    AliyunPAIEASFullAccess

    EAS的管理权限

    AliyunPAIEASReadOnlyAccess

    EAS的只读权限

    专有网络VPC

    AliyunVPCFullAccess

    管理专有网络VPC的权限。

    云服务器ECS

    AliyunECSFullAccess

    管理安全组的权限。

    NAS

    AliyunNASFullAccess

    管理NAS的权限。

    函数计算

    AliyunFCFullAccess

    管理函数计算应用的权限。

    创建RAM用户的操作指引请参见创建RAM用户

    为RAM用户授权的操作指引请参见为RAM用户授权

开通服务

【说明】在使用PAI进行AI开发部署ChatGLM及LangChain应用前,您需要先开通PAI。如果此前已开通过PAI可跳过此步骤。

使用已准备好的阿里云账号登录PAI控制台,单击开通PAI并创建默认工作空间,在弹出的开通页面中配置订单详情,配置要点如下,更多详细内容,请参见开通并创建默认工作空间

  • 本方案地域选择:华东2(上海)

  • 组合开通:本方案不需要开通其他产品,您需要在组合开通配置模块,去勾选其他产品的复选框。

  • 服务角色授权:单击去授权,根据界面提示为PAI完成授权,然后返回开通页面,刷新页面,继续开通操作。

规划网络和资源

5

规划云资源

请参考表格中的说明和方案默认示例值为每个规划项做详细规划,并在实际部署时将默认示例值修改为您的实际规划。未提及的规划项请保持默认值。

规划项

说明

方案默认示例

PAI

地域

您的云服务部署的地域。

华东2(上海)

资源类型

推荐使用GPU类型。

ml.gu7i.c16m60.1-gu30

【说明】如果华东2(上海)地域的资源不足,您可以选择新加坡地域以继续操作。请确保在部署资源和服务时使用的是同一地域。

镜像

推荐使用PAI平台预置镜像。

chatglm-webui

专有网络VPC

VPC名称

建议您在部署过程中新建一个VPC作为本方案的专有网络。部署过程中填写VPC名称即可创建对应名称的VPC。

长度为2~128个字符,以英文大小写字母或中文开头,可包含数字、下划线(_)和连字符(-)。

vpc_chatglm

网段

在创建VPC时,您必须按照无类域间路由块(CIDR block)的格式为您的专有网络划分私网网段。阿里云VPC支持的网段信息请参见专有网络组成部分

在网络规划时可以按照管理网段-开发网段-测试网段-生产网段等规则做好规划。网段一旦投入使用,调整过程复杂,因此规划十分重要。

192.168.0.0/16

虚拟交换机

台数

本方案需要1台交换机。

1

vswitch名称

建议您在部署过程中在新建的VPC内创建虚拟交换机。部署过程中填写vswitch名称即可创建对应名称的虚拟交换机。

长度为2~128个字符,以英文大小写字母或中文开头,可包含数字、下划线(_)和连字符(-)。

vsw_chatglm

可用区

在规划的地域内选择1个可用区,用于部署虚拟交换机。

可用区G

IPv4网段

每台虚拟交换机需要一个IPv4网段。

192.168.0.0/24

部署资源

5

规划好资源后,请按照以下步骤部署方案中的所有资源。

1、创建专有网络VPC、交换机

  1. 登录专有网络管理控制台

  2. 在顶部菜单栏,选择华东2(上海)地域。

  3. 在左侧导航栏,单击专有网络

  4. 专有网络页面,单击创建专有网络

  5. 创建专有网络页面配置1个专有网络(VPC)和1台交换机,然后单击确定,更多详细内容,请参见创建专有网络和交换机

2、创建安全组

  1. 登录ECS管理控制台,在左侧导航栏,选择网络与安全>安全组。并在顶部菜单栏左上角处,选择地域为华东2(上海)

  2. 单击创建安全组,并参照界面提示配置参数,更多详细内容,请参见创建安全组

3、创建通用型NAS文件系统

  1. 登录NAS控制台

  2. 概览页面的下方,单击创建通用型NAS

  3. 创建通用型NAS面板,配置文件系统相关信息,更多详细内容,请参见创建文件系统

    • 地域:选择华东2(上海)。

    • 可用区:选择和交换机相同的可用区。

    • 专有网络VPC&交换机:选择已创建的VPC和交换机。

4、通过函数计算部署NAS的可视化应用。

  1. 登录函数计算控制台,在左侧导航栏,单击应用

    • 如果首次使用函数计算的应用中心,将自动进入创建应用页面。

    • 如果您之前使用过应用中心,在左侧导航栏,单击应用,然后在应用页面单击创建应用

  2. 创建应用页面,选择创建应用的方式为通过模板创建应用

  3. 在下方模板区域,选择Web 应用页签,找到NAS的可视化应用卡片,光标放到该卡片,然后单击立即创建

  4. 创建应用页面,配置以下关键参数,然后单击创建并部署默认环境。更多详细内容,请参见使用函数计算从公网上传或下载文件系统中的文件

    • 部署类型:选择直接部署

    • 地域:选择华东2(上海)。

    • NAS挂载点地址:选择已创建的NAS挂载地址。

    • 安全组ID:选择已创建的安全组。

  5. 等待几分钟部署成功后,页面跳转至应用的详情页,单击访问域名右侧的域名地址,跳转至Web版Windows用户体验的文件管理系统页面。

  6. 按照控制台操作指引,完成环境检测、数据库配置和账号设置,并进入NAS根目录。具体操作,请参见使用函数计算从公网上传或下载文件系统中的文件

部署ChatGLM模型服务

10

  1. 进入PAI-EAS 模型在线服务页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入PAI-EAS 模型在线服务页面。image.png

  2. PAI-EAS 模型在线服务页面,单击部署服务,在弹出对话框中,选择自定义部署,然后单击确定

  3. 部署服务页面,配置以下关键参数。

    参数

    描述

    服务名称

    自定义服务名称。本案例使用的示例值为chatglm_demo

    部署方式

    选择镜像部署AI-Web应用

    镜像选择

    PAI平台镜像列表中选择chat-llm-webui;镜像版本选择2.0

    说明

    由于版本迭代迅速,部署时镜像版本选择最高版本即可。

    运行命令

    • 运行命令配置为:python webui/webui_server.py --port=8000 --model-path=THUDM/chatglm-6b

    • 端口号:8000。

    资源组种类

    选择公共资源组

    资源配置方法

    选择常规资源配置

    资源配置选择

    必须选择GPU类型,实例规格推荐使用ml.gu7i.c16m60.1-gu30(性价比最高)。

    02a59ab7cae3c5ff9e6c020434be4d35.png

  4. 单击部署,等待一段时间即可完成模型部署。

    服务状态运行中时,表明服务部署成功。

完成以上操作后,您已成功完成预置的ChatGLM模型的WebUI部署。您可以选择挂载自定义模型,或前往完成及清理章节,体验模型推理效果。

挂载自定义模型

15

  1. 准备自定义模型文件。本方案以开源的chatglm-6b模型为例。

    【说明】自定义模型文件中必须包含config.json文件,您需要按照HuggingfaceModelscope的模型格式配置Config文件。示例文件详情,请参见config.json

  2. 登录函数计算控制台,通过可视化NAS文件管理应用上传已准备好的模型文件到/chatglm2-6b目录。具体操作,请参见使用函数计算从公网上传或下载文件系统中的文件。您也可以通过NAT网关的形式,将本地模型文件上传到NAS文件系统,详情请参见通过NAT网关实现本地数据中心访问阿里云NAS

  3. PAI-EAS 模型在线服务页面,单击目标服务操作列下的更新服务

  4. 配置以下参数,然后单击部署

    参数

    描述

    模型配置

    单击填写模型配置,配置NAS挂载,以实现模型和文件的持久化存储。

    其中:

    • NAS挂载点:选择已创建的NAS文件系统和挂载点。

    • NAS源路径:配置为/

    • 挂载路径:配置为/data

    运行命令

    将运行命令更新为:python webui/webui_server.py --port=8000 --model-path=/data/chatglm2-6b --model-type=chatglm

    其中:--model-path为自定义模型路径。

    专有网络配置

    配置NAS挂载后,系统将自动匹配与NAS一致的VPC、交换机和安全组。如果自动匹配存在问题,请根据界面提示进行修改。

    image.png

完成及清理

15

方案验证

完成以上操作后,您已经成功完成了ChatGLM模型的WebUI部署。您可以启动WebUI页面,进行模型推理验证,同时您还可以在WebUI页面使用LangChain来集成自己的业务数据,具体操作步骤如下:

  1. PAI-EAS 模型在线服务页面中,单击上述步骤中部署模型服务方式列的查看Web应用,进入ChatGLM WebUI页面。

  2. ChatGLM WebUI页面,进行模型推理验证。在①位置输入请求数据,单击②位置的发送按钮,即可在③位置输出推理结果。image.png

  3. 在WebUI页面,使用LangChain来集成自己的业务数据。

    1. 在ChatGLM WebUI页面上方Tab页选择LangChain,在页面左下角,按照界面操作指引拉取自定义数据,支持配置.txt.md.docx.pdf格式的文件。image.png

      例如上传README.md文件,单击左下角的知识库文件向量化,返回如下结果表明自定义数据加载成功。image.png

    2. 在LangChain WebUI页面底部输入框中,输入业务数据相关的问题进行对话即可。例如在输入框中输入如何安装deepspeed,单击发送,返回结果如图所示。image.png

清理资源

  • 如果您确认不再使用EAS服务,您可以按照以下操作步骤停止或删除模型服务。如果服务仍处于运行状态,将持续产生资源消耗而持续扣费。image

    1. 登录PAI控制台

    2. 在页面左上方,选择服务的地域。

    3. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击默认工作空间名称,进入对应工作空间内。

    4. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入PAI-EAS 模型在线服务页面。

    5. 推理服务页签,单击目标服务操作列下的停止删除,将模型服务停止或删除。

  • 删除NAS的可视化应用。

    1. 登录函数计算控制台,在左侧导航栏,单击应用

    2. 在应用列表中,找到目标应用。在操作列单击删除应用。并按照界面操作指引删除可视化NAS文件管理应用。

  • 删除NAS文件系统。

    1. 登录NAS控制台

    2. 在左侧导航栏,选择文件系统>文件系统列表

    3. 在顶部菜单栏,选择地域。

    4. 文件系统列表页面,找到目标文件系统,在操作列单击image.png图标 > 删除。并按照界面操作指引删除NAS文件系统。

  • 如果需要继续使用EAS服务,请为您的阿里云账号充值,到期未续费的EAS服务会因欠费而被自动停止。

一键部署

45

方案概览

本方案介绍如何通过ChatGLM和LangChain构建高效的对话模型。该对话模型基于自然语言处理技术,并使用语言交换协议以提升语义理解和交互体验。该方案可以广泛应用于聊天机器人、智能客服、社交媒体等场景中,可以有效解决对话模型中的语义理解和交互问题,并提高用户交互的自然性和流畅度。

方案架构

以下为您展示本技术方案的架构。

7d3ba5d7432f88cdcfbe160ca043ab4a.jpg

本方案的实现原理如下:

  • 通过PAI-EAS的预置镜像,一键拉起ChatGLM-WebUI的应用服务。

  • 通过预置的LangChain插件,快速集成企业内业务的知识库文件(支持配置.txt.md.docx.pdf格式的文件),将业务文件通过向量化的方法一键集成到向量存储检索库中。LangChain首先将输入的用户数据进行自然语言处理并作为大模型的知识库存储,每次推理用户的输入会首先在本地知识库中查找与输入问题相近的答案,并将知识库答案与用户输入一起输入大模型生成基于本地知识库的定制答案。

  • 支持各种主流的开源大模型,包括ChatGLM、LLaMA等。

  • 支持网络搜索功能,将用户的输入先计入互联网搜索引擎中进行检索。查找与输入问题相近的答案,并将答案与用户输入一起输入大模型生成基于网络搜索内容的答案。

本方案内容以一个官方预置镜像为例,为您介绍如何快速部署ChatGLM模型并通过WebUI快速体验智能对话效果。您在实际部署时可以根据业务场景调整部署方案。

部署准备

10

开始部署前,请按以下指引完成账号申请、账号充值、RAM用户创建和授权。

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为阿里云账号充值

    • 本方案的云资源(包括PAI-EAS、NAS和函数计算等服务)支持按量付费,且默认设置均采用按量付费引导操作。使用按量付费资源需要确保账号余额不少于100元。

    • 完成本方案的部署及体验,预计产生费用不超过10元。(假设您选择最低规格PAI-EAS资源,且资源运行时间不超过60分钟。如调整了资源规格,请以控制台显示的实际报价以及最终账单为准)。

    • 按量付费包括了PAI-EAS服务运行所消耗的公共资源费用和NAS存储费用。关于PAI-EAS的相关计费逻辑与单价详情,请参见EAS计费说明。关于NAS的相关计费逻辑和单价详情,请参见通用型NAS计费。函数计算上传文件属于入流量,不计费。更多关于函数计算计费的详情,请参见计费概述

  3. 阿里云账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建RAM用户。RAM用户需要获得相关云服务的访问权限才能完成方案部署,详情如下:

    云服务

    需要的权限

    描述

    资源编排服务(ROS)

    AliyunROSFullAccess

    管理资源编排服务(ROS)的权限。

    PAI

    AliyunPAIFullAccess

    管理工作空间及PAI-EAS服务的权限。

    专有网络VPC

    AliyunVPCFullAccess

    管理专有网络VPC的权限。

    云服务器ECS

    AliyunECSFullAccess

    管理安全组的权限。

    NAS

    AliyunNASFullAccess

    管理NAS的权限。

    函数计算

    AliyunFCFullAccess

    管理函数计算应用的权限。

    创建RAM用户的操作指引请参见创建RAM用户

    为RAM用户授权的操作指引请参见为RAM用户授权

开通服务

【说明】在使用PAI进行AI开发部署ChatGLM及LangChain应用前,您需要先开通PAI。如果此前已开通过PAI可跳过此步骤。

使用已准备好的阿里云账号登录PAI控制台,单击开通PAI并创建默认工作空间,在弹出的开通页面中配置订单详情,配置要点如下,更多详细内容,请参见开通并创建默认工作空间

  • 本方案地域选择:华东2(上海)

  • 组合开通:本方案不需要开通其他产品,您需要在组合开通配置模块,去勾选其他产品的复选框。

  • 服务角色授权:单击去授权,根据界面提示为PAI完成授权,然后返回开通页面,刷新页面,继续开通操作。

一键部署

10

https://www.aliyun.com/solution/tech-solution/calbadm

ROS一键部署

资源编排(ROS)可以让您通过YAML或JSON文件清晰简洁地描述所需的云资源及其依赖关系,然后自动化地创建和配置这些资源。您可以通过下方提供的ROS一键部署链接,来自动化地完成这些资源的创建和配置:

  • 创建1个工作空间。

  • 部署1个PAI-EAS服务。

  • 创建1个专有网络VPC。

  • 创建1台交换机。

  • 创建1个安全组。

  • 创建1个NAS文件系统。

  • 部署1个NAS的可视化应用。

  1. 单击一键部署前往ROS控制台,系统自动打开使用新资源创建资源栈的面板,并在模板内容区域展示模板内容的详细信息。

  2. 确认好地域后,单击下一步。本方案选择华东2(上海)。

  3. 配置以下参数后,单击下一步

    • 选择可用区

    • 选择PAI-EAS实例规格:推荐使用ml.gu7i.c16m60.1-gu30(性价比最高)。

      【说明】若ml.gu7i.c16m60.1-gu30规格不可选,请尝试更换至其他可用区或切至新加坡地域。

    • 失败时回滚:选择

  4. 检测规则页面单击下一步

  5. 确认好配置信息后,单击创建

    资源栈信息页面的状态显示为创建成功时,表示一键配置完成。

挂载自定义模型

15

  1. 准备自定义模型文件。本方案以开源的chatglm-6b模型为例。

    【说明】自定义模型文件中必须包含config.json文件,您需要按照HuggingfaceModelscope的模型格式配置Config文件。示例文件详情,请参见config.json

  2. 登录函数计算控制台,通过可视化NAS文件管理应用上传已准备好的模型文件到/chatglm2-6b目录。具体操作,请参见使用函数计算从公网上传或下载文件系统中的文件。您也可以通过NAT网关的形式,将本地模型文件上传到NAS文件系统,详情请参见通过NAT网关实现本地数据中心访问阿里云NAS

  3. PAI-EAS 模型在线服务页面,单击目标服务操作列下的更新服务

  4. 配置以下参数,然后单击部署

    参数

    描述

    模型配置

    单击填写模型配置,配置NAS挂载,以实现模型和文件的持久化存储。

    其中:

    • NAS挂载点:选择已创建的NAS文件系统和挂载点。

    • NAS源路径:配置为/

    • 挂载路径:配置为/data

    运行命令

    将运行命令更新为:python webui/webui_server.py --port=8000 --model-path=/data/chatglm2-6b --model-type=chatglm

    其中:--model-path为自定义模型路径。

    专有网络配置

    配置NAS挂载后,系统将自动匹配与NAS一致的VPC、交换机和安全组。如果自动匹配存在问题,请根据界面提示进行修改。

    image.png

完成及清理

10

方案验证

完成以上操作后,您已经成功完成了ChatGLM模型的WebUI部署。您可以启动WebUI页面,进行模型推理验证,同时您还可以在WebUI页面使用LangChain来集成自己的业务数据,具体操作步骤如下:

  1. 进入PAI-EAS 模型在线服务页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    3. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入PAI-EAS 模型在线服务页面。image.png

  2. 在服务列表中,单击目标服务的服务方式列下的查看Web应用,进入ChatGLM WebUI页面。

  3. ChatGLM WebUI页面,进行模型推理验证。在①位置输入请求数据,单击②位置的发送按钮,即可在③位置输出推理结果。image.png

  4. 在WebUI页面,使用LangChain来集成自己的业务数据。

    1. 在ChatGLM WebUI页面上方Tab页选择LangChain,在页面左下角,按照界面操作指引拉取自定义数据,支持配置.txt.md.docx.pdf格式的文件。image.png

      例如上传README.md文件,单击左下角的知识库文件向量化,返回如下结果表明自定义数据加载成功。image.png

    2. 在LangChain WebUI页面底部输入框中,输入业务数据相关的问题进行对话即可。例如在输入框中输入如何安装deepspeed,单击发送,返回结果如图所示。image.png

清理资源

  • 如果您确认不再使用EAS服务,您可以按照以下操作步骤停止或删除模型服务。如果服务仍处于运行状态,将持续产生资源消耗而持续扣费。image

    1. 登录PAI控制台

    2. 在页面左上方,选择服务的地域。

    3. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击默认工作空间名称,进入对应工作空间内。

    4. 在工作空间页面的左侧导航栏选择模型部署>模型在线服务(EAS),进入PAI-EAS 模型在线服务页面。

    5. 推理服务页签,单击目标服务操作列下的停止删除,将模型服务停止或删除。

  • 删除NAS的可视化应用。

    1. 登录函数计算控制台,在左侧导航栏,单击应用

    2. 在应用列表中,找到目标应用。在操作列单击删除应用。并按照界面操作指引删除可视化NAS文件管理应用。

  • 删除NAS文件系统。

    1. 登录NAS控制台

    2. 在左侧导航栏,选择文件系统>文件系统列表

    3. 在顶部菜单栏,选择地域。

    4. 文件系统列表页面,找到目标文件系统,在操作列单击image.png图标 > 删除。并按照界面操作指引删除NAS文件系统。

  • 如果需要继续使用EAS服务,请为您的阿里云账号充值,到期未续费的EAS服务会因欠费而被自动停止。