基于AppFlow集成企业微信与PAI RAG构建AI助手

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

方案概览

以基于开源项目EasyRec知识库文档搭建AI助手为例,介绍PAI RAG+AppFlow的部署方案。方案只需以下几步:

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

  2. 创建企业微信应用:创建一个企业微信应用,为您的企业微信组织提供问答服务。

  3. 创建企业微信连接流:基于阿里云的AppFlow服务,在无需编写代码的情况下,完成企业微信和PAI RAG应用的关联,最终实现用户在企业微信聊天中和RAG应用对话。

  4. 配置企业微信应用:为企业微信应用配置接收消息,即可在聊天中回答用户问题。

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

image

image

1. 部署PAI RAG应用

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

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

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

  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. 创建企业微信应用

接下来您需要在您的组织中创建应用,作为 AI 助手回答用户问题。

2.1创建应用

  1. 访问企业微信开发者中心,扫码登录,点击立即创建。根据指引选择以企业身份创建企业内部应用2024-08-12_16-48-56

  2. 在顶部导航栏中,选择应用管理,在应用页面下半部分点击创建应用2024-08-12_17-50-42

  3. 创建应用页面,填写应用名称应用介绍,上传应用 logo,选择可见范围,完成后点击创建应用2024-08-12_17-53-01

2.2获取企业ID、应用AgentIdSecret

  1. 在应用详情页面,复制 AgentID和 Secret,用于下一步创建连接流。

    2024-08-12_17-56-23

  2. 在顶部导航栏中,选择我的企业,在企业信息页面,复制企业 ID,用于下一步创建连接流。2024-08-12_18-04-56

3. 创建企业微信连接流

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

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

  2. 在连接流的账户授权配置向导页,在选择凭证下拉列表中单击添加新凭证。然后在创建凭证对话框中,填入之前获取的企业微信的企业ID,应用的AgentIdSecret,单击刷新按钮生成TokenEncodingAESKey,并设置一个自定义凭证名称。同时复制保存IP白名单,用于下一步配置IP白名单。image

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

  4. 执行动作配置向导页,填写PAI RAG应用服务所在的regionworkspaceId服务名称,完成后单击下一步image

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

  6. 界面提示流程配置成功,复制WebhookUrl,单击发布image

4. 配置企业微信应用

有了 Webhook 地址后,接下来您可以在企业微信应用中配置接收消息来回答用户问题了。

4.1配置企业微信应用

  1. 访问企业微信应用列表。找到刚刚创建的应用,点击应用名称进入详情页面。

  2. 在应用详情页面,找到接收消息卡片,点击设置API接收2024-08-12_17-54-59

  3. API接收消息页面,您可以参考下图完成配置,然后点击保存

    2024-08-12_18-06-33

    • URL填入上一步复制的 WebhookUrl

      如果之前未保存WebhookUrl,可访问AppFlow连接流页面,在操作列点击webhookUrl进行查看。

    • Token EncodingAESKey 填入上一步复制的值。

      如果之前未保存,可访问AppFlow连接凭证页面,在公共连接器 > 企业微信中,找到刚刚配置的凭证,点击操作列的编辑从凭证中获取。

    如果域名主体校验未通过,请参考域名主体校验未通过怎么办?进行处理。

4.2配置IP白名单

  1. 在应用详情页面,在页面下方开发者接口找到企业可信IP卡片,点击配置2024-08-12_22-13-09

  2. 在企业可信IP对话框,粘贴复制的 IP 地址,然后点击确定

4.3测试应用

你可以在企业微信中搜索应用并发送消息,查看效果。

  1. 在企业微信顶部搜索框搜索应用名称,单击应用进入聊天。2024-08-12_22-23-04

  2. 与应用对话,进行交流互动。

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

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

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

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

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

  4. 您可以在企业微信中发送与EasyRec相关的问题,来验证企业微信AI助手回答效果。image

常见问题

域名主体校验未通过怎么办?

当您在企业微信后台配置 API 接收消息时,报错提示“域名主体校验未通过,需配置备案主体与当前企业主体相同或有关联关系的域名”。这通常是由于企业微信的相关限制所引起的。为解决此问题,您需要配置一个企业自有域名。

  • 如果您的域名已在阿里云备案,您可以参考如下步骤创建一个二级域名作为企业自有域名。

    1. 访问AppFlow域名管理页面,单击添加域名按钮,进入添加域名页面,填入可用的二级域名,如airobot.example.com

      image

    2. 参考CNAME 记录,将该二级域名解析到上一步的记录值

    3. 解析配置完成后,返回创建域名页面,点击提交

    4. 使用该二级域名替换API接收消息URL(即已经填写的WebhookUrl)中的主机名。

  • 如果您的域名没有在阿里云备案,您可以参考如下步骤,将API接收消息中的URL配置为您的企业自有域名,并在企业自有域名对外提供服务的Nginx上配置转发规则,将请求转发到连接流的WebhookUrl。

    1. AppFlow连接凭证页面编辑企业微信的连接凭证。

      image

    2. 点击下一步,勾选内网代理

      image

    3. 首次勾选内网代理时,会弹出AppFlow服务关联角色授权创建页面,请您确认并授权。

      image

    4. 配置可信域名。

      使用计算巢Nginx代理

      如果您没有在阿里云备案的可信主体域名,同时也没有Nginx代理,可以通过点击部署Nginx代理实例一键自动为您部署并配置Nginx代理。按控制台提示直接确认订单或更改您期望的配置下单,等待部署完成即可。部署过程通常耗时1-3分钟,请刷新列表并耐心等待。

      部署完成后,点击下拉框选择计算巢实例,用计算巢实例Host替换API接收消息URL(即已经填写的WebhookUrl)中的主机名,复制IP白名单并添加到企业可信IP中,点击保存,完成配置。

      image

      使用自有的Nginx代理

      使用您自有的Nginx进行代理,同时也需要一台ECS或托管实例进行消息转发。

      1. 选择ECS实例或托管实例,并将IP白名单添加到企业可信IP中。

      2. 如果您没有实例,可单击新增实例前往ECS购买页新购ECS,或者创建托管实例。

        托管实例需要您在非阿里云服务器中找一台可以访问公网的机器,再按照阿里云托管实例安装云助手。
      3. 点击保存,完成配置。

      4. 使用NginxIP地址替换API接收消息URL(即已经填写的WebhookUrl)中的主机名。

配置企业可信 IP 时,报错“以下IP属于第三方服务商,为保证企业数据安全,请配置本企业服务器的IP”?

报错原因:企业微信出于安全考虑,调用通讯录、身份校验接口时需要校验可信域名和可信 IP,其中一个可信 IP 仅能用于企业微信中的一个企业,如果用于多个企业将被认定为服务商,从而导致通讯录、身份校验等接口不可用。

如果您有阿里云的云服务器 ECS,您可以使用阿里云服务器进行请求转发,解决可信 IP 的问题:

  1. 修改 AppFlow 中配置的企业微信的连接凭证,2024-09-04_14-19-00

  2. 修改内容:在内网代理配置页面选择使用可信主体域名 > ECS实例使用自有Nginx代理 > ECS实例,选择对应地域和实例, 点击保存。

    image

  3. 将代理机器的 IP 添加到企业微信可信 IP。访问企业微信应用列表,进入应用详情页面,在页面下方开发者接口找到企业可信IP卡片,点击配置

如果您有自己的非阿里云的机器,您可以将自有机器托管到阿里云,并使用托管机器进行请求转发,解决可信 IP 的问题:

  1. 在您的非阿里云服务器中找一台可以访问公网的机器,按照文档安装云助手 。

  2. 修改 AppFlow 中配置的企业微信的连接凭证,2024-09-04_14-19-00

  3. 修改内容:在内网代理配置页面选择使用可信主体域名 > ECS实例使用自有Nginx代理 > ECS实例,选择对应托管地域和托管实例, 点击保存

    image

4. 将代理机器的 IP 添加到企业微信可信 IP。访问企业微信应用列表,进入应用详情页面,在页面下方开发者接口找到企业可信IP卡片,点击配置