通义千问和LangChain搭建对话服务

更新时间: 2024-05-08 18:27:12

手动部署

45

https://www.aliyun.com/solution/tech-solution/tongyi-langchain

方案概览

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

方案架构

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

tech_solu_110@2x 2.png

本方案的实现原理如下:

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

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

  • 支持各种主流的开源大模型,包括通义千问、Llama和Falcon等。

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

部署准备

10

准备账号

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

  2. 为阿里云账号充值

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

    • 完成本方案的部署及体验,根据您选择的资源规格和模型大小,将产生不同的费用。本方案以通义千问7B模型为例。(如调整了资源规格和模型,请以控制台显示的实际报价以及最终账单为准。)

      • 选择GU类型的资源规格ml.gu7i.c8m30.1-gu30(推荐,性价比高):预计产生费用不超过8元/60分钟。

      • 选择A10类型的资源规格ecs.gn7i-c8g1.2xlarge:预计产生费用不超过15元/60分钟。

      • 选择V100类型的资源规格ecs.gn6e-c12g1.3xlarge:预计产生费用不超过22元/60分钟。

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

开通服务

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

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

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

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

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

规划网络和资源

5

规划云资源

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

规划项

说明

方案默认示例

PAI

地域

您的云服务部署的地域。

华东2(上海)

资源类型

推荐使用GPU类型。

ml.gu7i.c8m30.1-gu30

【说明】如果华东2(上海)地域的资源不足,您还可以选择V100(ecs.gn6e-c12g1.3xlarge)或A10(ecs.gn7i-c8g1.2xlarge)类型的资源规格。

镜像

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

chat-llm-webui

专有网络VPC

VPC名称

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

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

vpc_chatllm

网段

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

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

192.168.0.0/16

虚拟交换机

台数

本方案需要1台交换机。

1

vswitch名称

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

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

vsw_chatllm

可用区

在规划的地域内选择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. 登录函数计算控制台,创建NAS的可视化应用,其中关键参数说明如下,其他参数配置详情,请参见函数计算挂载文件系统

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

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

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

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

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

  3. 按照控制台操作指引,完成环境检测、数据库配置和账号设置,并进入NAS根目录。具体操作,请参见函数计算挂载文件系统

部署通义千问模型服务

10

您可以选择部署开源的公共模型或您自己微调的模型,具体操作步骤如下:

部署开源公共模型

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

    1. 登录PAI控制台

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

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

  2. 模型在线服务(EAS)页面,单击部署服务,在场景化模型部署区域,单击LLM大语言模型

  3. 部署LLM大语言模型页面,配置以下关键参数,其他参数取默认配置即可。

    参数

    描述

    基本信息

    服务名称

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

    【说明】服务名称在同一地域内唯一。

    模型来源

    选择开源公共模型

    模型类别

    选择Qwen1.5-7b

    资源配置

    资源配置选择

    实例规格推荐使用ml.gu7i.c8m30.1-gu30(性价比最高)。

    说明:如果当前地域的资源不足,您还可以选择V100(ecs.gn6e-c12g1.3xlarge)或A10(ecs.gn7i-c8g1.2xlarge)类型的资源规格。

    推理加速

    选择无加速

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

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

部署自持微调模型

  1. 准备自定义模型文件。本方案以开源的通义千问-7B-Chat-Int8模型为例。

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

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

  3. 进入部署LLM大语言模型页面,详情请参见部署开源公共模型。在该页面配置以下关键参数,其他参数取默认配置即可。

    参数

    描述

    基本信息

    服务名称

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

    【说明】:服务名称在同一地域内唯一。

    模型来源

    选择自持微调模型

    模型类别

    根据您的微调模型,分别选择模型类别、参数量和精度。本方案分别选择qwen2、7b、fp16。

    模型配置

    选择按文件存储(NAS),并配置以下参数:

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

    • NAS源路径:配置为/Qwen-7B-Chat-Int8

    资源配置

    资源配置选择

    实例规格推荐使用ml.gu7i.c8m30.1-gu30(性价比最高)。

    说明:如果当前地域的资源不足,您还可以选择V100(ecs.gn6e-c12g1.3xlarge)或A10(ecs.gn7i-c8g1.2xlarge)类型的资源规格。

    推理加速

    选择无加速

    专有网络配置

    VPC

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

    交换机

    安全组名称

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

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

完成以上操作后,您已成功完成通义千问模型的WebUI部署。您可以前往完成及清理章节,体验模型推理效果。

完成及清理

15

方案验证

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

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

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

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

    1. 在ChatLLM-WebUI页面上方的选项卡中选择LangChain,在页面左下角,按照界面操作指引上传自定义数据,支持配置.txt.md.docx.pdf格式的文件。image

      例如上传README.md文件,单击左下角的Vectorstore knowledge,返回如下结果表明自定义数据加载成功。image

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

清理资源

  • 如果您确认不再使用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服务会因欠费而被自动停止。

一键部署

40

https://www.aliyun.com/solution/tech-solution/tongyi-langchain

方案概览

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

方案架构

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

tech_solu_110@2x 2.png

本方案的实现原理如下:

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

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

  • 支持各种主流的开源大模型,包括通义千问、Llama和Falcon等。

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

部署准备

10

准备账号

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

  2. 为阿里云账号充值

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

    • 完成本方案的部署及体验,根据您选择的资源规格和模型大小,将产生不同的费用。本方案以通义千问7B模型为例。(如调整了资源规格和模型,请以控制台显示的实际报价以及最终账单为准。)

      • 选择GU类型的资源规格ml.gu7i.c8m30.1-gu30(推荐,性价比高):预计产生费用不超过8元/60分钟。

      • 选择A10类型的资源规格ecs.gn7i-c8g1.2xlarge:预计产生费用不超过15元/60分钟。

      • 选择V100类型的资源规格ecs.gn6e-c12g1.3xlarge:预计产生费用不超过22元/60分钟。

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

开通服务

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

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

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

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

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

一键部署

10

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

ROS一键部署

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

  • 创建1个工作空间。

  • 创建1个专有网络VPC。

  • 创建1台交换机。

  • 创建1个安全组。

  • 创建1个NAS文件系统。

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

  • 使用开源公共模型(通义千问-7b)部署1个PAI-EAS服务。

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

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

    • 确认已选择的地域。本方案选择华东2(上海)

    • 选择可用区。

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

      【说明】若ml.gu7i.c8m30.1-gu30规格不可选,请尝试更换至其他可用区或选择V100(ecs.gn6e-c12g1.3xlarge)、A10(ecs.gn7i-c8g1.2xlarge)类型的资源规格。

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

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

部署自持微调模型

10

若您希望挂载自定义模型,请先删除已部署的通用千问-7b模型服务,然后重新部署一个经过微调的模型。具体操作步骤如下所示:

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

    1. 登录PAI控制台

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

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

  2. 单击目标服务操作列下的删除

  3. 准备自定义模型文件。本方案以开源的通义千问-7B-Chat-Int8模型为例。

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

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

  5. 模型在线服务(EAS)页面,单击部署服务,在场景化模型部署区域,单击LLM大语言模型

  6. 部署LLM大语言模型页面,配置以下关键参数,其他参数取默认配置即可。

    参数

    描述

    基本信息

    服务名称

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

    【说明】:服务名称在同一地域内唯一。

    模型来源

    选择自持微调模型

    模型类别

    根据您的微调模型,分别选择模型类别、参数量和精度。本方案分别选择qwen2、7b、fp16。

    模型配置

    选择按文件存储(NAS),并配置以下参数:

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

    • NAS源路径:配置为/Qwen-7B-Chat-Int8

    资源配置

    资源配置选择

    实例规格推荐使用ml.gu7i.c8m30.1-gu30(性价比最高)。

    说明:如果当前地域的资源不足,您还可以选择V100(ecs.gn6e-c12g1.3xlarge)或A10(ecs.gn7i-c8g1.2xlarge)类型的资源规格。

    推理加速

    选择无加速

    专有网络配置

    VPC

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

    交换机

    安全组名称

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

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

完成及清理

10

方案验证

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

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

    1. 登录PAI控制台

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

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

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

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

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

    1. 在ChatLLM-WebUI页面上方的选项卡中选择LangChain,在页面左下角,按照界面操作指引上传自定义数据,支持配置.txt.md.docx.pdf格式的文件。image

      例如上传README.md文件,单击左下角的Vectorstore knowledge,返回如下结果表明自定义数据加载成功。image

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

清理资源

  • 删除NAS的可视化应用。

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

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

  • 按照以下操作步骤释放资源栈下的资源,即1个工作空间、1个专有网络VPC、1个交换机、1个安全组、1个NAS文件系统和1个PAI-EAS服务。

    1. 登录ROS控制台

    2. 在左侧导航栏,选择资源栈

    3. 资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除

    4. 删除资源栈对话框,选择删除方式释放资源,然后单击确定,根据提示完成资源释放。

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