基于AppFlow集成微信公众号与PAI RAG构建智能客服

在阿里云上,您可以通过人工智能平台PAI快速部署一个大模型RAG对话系统。通过AppFlow的集成,您可以将该对话系统集成到钉钉群聊或微信等各种场景中,让您随时随地使用您的智能客服。本文将以微信公众号为例,为您介绍PAI RAG+AppFlow的部署方案。

方案概览

RAG对话系统集成到微信公众号,具体方案只需以下几步:

  1. 部署PAI RAG应用:通过PAI部署大模型RAG对话系统服务。

  2. 搭建微信公众号连接流:完成微信公众号和PAI RAG应用的关联。

  3. PAI RAG应用增加私有知识:通过PAI RAG应用服务的WebUI页面上传您的知识库文件,可以使智能客服掌握私有领域的信息,从而更有效地解答用户咨询,提升服务质量。

  4. 验证AI智能客服:在微信公众号中和RAG应用进行对话。

image

image

1. 部署PAI RAG应用

首先您需要部署一个大模型RAG对话应用,用于实现AI助手。具体操作步骤如下:

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 模型在线服务(EAS)页面,单击部署服务,然后在场景化模型部署区域,单击大模型RAG对话系统部署6eea7736f88e6ec8b3b900e4d028bb48

  3. 部署大模型RAG对话系统页面,配置以下关键参数。

    • 基本信息

      参数

      描述

      服务名称

      自定义服务名称,例如pai_rag_test1。

      模型来源

      本方案选择开源公共模型

      您也可以选择自持微调模型,但需提前准备好您的私有模型。通过分布式训练(DLC)完成模型训练后,您可以将模型训练结果导入阿里云对象存储OSS或文件存储NAS中,详情请参见DLC训练任务中使用云存储

      模型类别

      本方案选择Qwen1.5-1.8b

    • 资源配置

      资源配置选择:选择模型类别后,系统会自动推荐适合的资源规格,无需您进行配置。如果更换至其他资源规格,可能会导致模型服务启动失败。

    • 向量检索库设置

      RAG支持通过Faiss(Facebook AI Similarity Search)阿里云ElasticsearchMilvusHologresOpenSearch-向量检索版RDS PostgreSQL构建向量检索库。本方案以FAISS为例,参数配置说明如下。您也可以选择使用其他向量检索库,如何准备向量检索库以及相关配置项,请参见向量检索库设置

      参数

      描述

      版本类型

      选择FAISS

      OSS

      选择当前地域下已创建的OSS存储路径,用来存储上传的知识库文件。如果没有可选的存储路径,您可以参考控制台快速入门进行创建。

      说明

      如果您选择使用自持微调模型部署服务,请确保所选的OSS存储路径不与自持微调模型所在的路径重复,以避免造成冲突。

  4. 参数配置完成后,单击部署

  5. 查看PAI RAG应用服务Token。

    1. 模型在线服务(EAS)页面,单击目标服务名称。

    2. 基本信息区域单击查看调用信息,并在调用信息对话框的公网地址调用页签,获取Tokenimage

2. 创建微信公众号连接流

AppFlow可以让您在不写代码的情况下,通过界面配置将PAI RAG应用和微信公众号连接起来。您可以通过预置的AppFlow模板创建一个微信公众号连接流。

如果您的微信公众号已经完成认证,您可以使用微信客户消息回复用户在公众号的咨询,如果您没有完成认证,只能使用被动回复消息功能回复用户,该功能将消息响应时间限制为 5 秒,超时将无法回复。

是否完成认证可以在微信公众号后台,在左侧菜单选择设置与开发 > 账号设置,在账号设置页面中查看。您可以根据认证情况选择下面的创建方案。bcc603653c5d4b75efee061b67274081

未认证公众号

  1. 使用AppFlow模板创建连接流,单击立即使用进入创建流程。image

  2. 访问微信公众号后台,在左侧菜单选择设置与开发 > 开发接口管理。选择基本配置页签,获取 AppID。2024-11-07_16-27-30

  3. 在连接流的账户授权配置向导页,在选择凭证下拉列表中单击添加新凭证,然后在授权页面填入AppID,单击授权并在新的页面使用微信扫描完成授权。授权后,Appflow会自动帮您配置公众号,您无需任何操作。授权完成后,您需要回到连接流的账户授权配置向导页,选择刚刚授权的微信公众号。image

  4. 在连接流的账户授权配置向导页,在选择凭证下拉列表中单击添加新凭证,在创建凭证对话框中,填入步骤1获取的RAG应用Token,并设置一个自定义凭证名称。image

  5. 执行动作配置向导页,填写RAG应用的区域、工作空间ID和服务名称,完成后单击下一步image

  6. 基本信息配置向导页,填写连接流名称连接流描述(建议保持默认),完成后单击下一步image

  7. 界面提示流程配置成功,单击发布image

    进入连接流页面查看已发布成功的连接流。image

已认证公众号

  1. 使用AppFlow模板创建连接流,单击立即使用进入创建流程。image

  2. 访问微信公众号后台,在左侧菜单选择设置与开发 > 开发接口管理。选择基本配置页签,获取 AppID。2024-11-07_16-27-30

  3. 在连接流的账户授权配置向导页,在选择凭证下拉列表中单击添加新凭证,然后在授权页面填入AppID,单击授权并在新的页面使用微信扫描完成授权。授权后,Appflow会自动帮您配置公众号,您无需任何操作。授权完成后,您需要回到连接流的账户授权配置向导页,选择刚刚授权的微信公众号。image

  4. 在连接流的账户授权配置向导页,在选择凭证下拉列表中单击添加新凭证。在创建凭证对话框中,填入步骤1获取的RAG应用Token,并设置一个自定义凭证名称。image

  5. 执行动作配置向导页,填写RAG应用的区域、工作空间ID和服务名称,完成后单击下一步image

  6. 基本信息配置向导页,填写连接流名称连接流描述(建议保持默认),完成后单击下一步image

  7. 界面提示流程配置成功,单击发布image

    进入连接流页面查看已发布成功的连接流。image

3. 为PAI RAG应用增加私有知识

以上传开源项目EasyRec知识库文档为例,当您提出与EasyRec相关的问题时,能够获得更准确的回答。

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 模型在线服务(EAS)页面,单击目标服务的服务方式列下的查看Web应用

  3. Upload页签,上传知识库文件。例如source.zip,解压后通过Directory上传。c4e30a5ccc2c407d2594018a19ffdfbb

4. 测试公众号上的智能客服

您可以在微信公众号中发送与EasyRec相关的问题,来检验智能客服回答效果。image

常见问题

公众号开启服务器配置后,自定义菜单无法使用怎么办?

当您在公众号后台开启服务器配置后,因为微信公众号的限制,您之前配置的自定义菜单会因为冲突而关闭。如果您未完成微信认证,则无法同时开启服务器配置和自定义菜单。如果您是服务号或订阅号完成了微信认证,这时您可以参考如下步骤通过接口配置自定义菜单:

1. 获取access_token。您可以参考获取 access_token 文档。通过访问下面的微信接口,获取access_token。您可以访问微信公众号后台,在左侧菜单选择设置与开发 > 基本配置。获取 AppID 和 AppSecret,并替换下面的您的AppID您的AppSecret

curl "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=您的AppID&secret=您的AppSecret"

2. 调用菜单接口。你可以参考创建菜单文档,通过执行下面的代码,替换代码中ACCESS_TOKEN,并设定你需要的菜单数据,创建自定义的菜单。

curl "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
     "button":[
     {	
          "type":"click",
          "name":"首页",
          "key":"home"
      },
      {
           "name":"菜单",
           "sub_button":[
           {	
               "type":"view",
               "name":"文档",
               "url":"https://help.aliyun.com/zh/model-studio/getting-started/what-is-model-studio"
            }]
       }]
 }'

配置完成后,与公众号对话没有反应,如何排查问题?

如果您是在 AppFlow 控制台点击运行一次进行测试时没有返回内容,是因为运行一次功能未包含内容输入,所以会报错。如果您是在微信与微信公众号对话时,没有返回内容,可以按照以下步骤进行排查:

  1. 访问AppFlow控制台,在表格操作列点击运行日志,跳转到执行日志页面查看日志。2024-08-29_16-54-56

  2. 在执行日志页面,点击详情查看错误日志详情。查看运行失败的步骤,通过失败信息分析原因。

    2024-08-29_16-56-46image

常见的原因有:

  • PAI RAG应用Token配置错误,Token未正确配置PAI RAG 应用Token或配置时存在前后空格。Token可以参考步骤1查看并和配置比对。

  • 微信公众号未完成认证,但采用了已完成认证的工作流。需要重新配置工作流,选择没有认证的公众号对应的工作流。

  • 微信公众号凭证配置错误,可在AppFlow控制台连接凭证页面,查看微信公众号配置,与微信公众号后台进行比对。

  • 微信公众号未配置白名单 IP。可在AppFlow控制台连接凭证页面,查看微信公众号配置,获取白名单 IP。

  • 微信公众号未完成认证,RAG应用回答超过5秒,导致触发微信限制,未能成功回复。建议完成微信认证,使用已经完成认证的工作流。如果无法完成认证,可以在PAI-RAG WebUI中修改prompt,并添加”请总是给出简短的回答,不要讲太多“。或选择更小规格的大模型来提升模型回复速度,但此方法会降低模型回答效果。

微信报错“当前填写的URL存在严重安全风险,无法设置”如何解决

当您在微信公众号后台配置服务器配置时,报错提示“当前填写的URL存在严重安全风险,无法设置”时,您可以采用最新的服务商授权方式重新创建微信公众号连接流。如果您不想要使用服务商方式,也可以参考下面的方式绑定自有域名。

如果您的域名已在阿里云备案,您可以提交工单,联系我们客服人员,提供连接流 ID、自定义域名,帮您配置并使用您企业的自有域名。然后您需要为自定义域名配置CNAME解析到连接流的WebhookUrl

如果您的域名没有在阿里云备案,您可以在服务器配置中配置URL为您自有的域名,并在您自有域名对外提供服务的Nginx上配置转发规则,将请求转发到连接流的WebhookUrl