0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

亚马逊云科技通过大语言模型及知识库接入,构建智能客服并丰富对话内容

科技新思路 来源:科技新思路 作者:科技新思路 2023-11-09 17:45 次阅读

概述

客户联络中心在现代是构成一个完整企业的重要组成部分,作为企业与顾客的连接纽带,在销售、服务支持以及提升顾客满意度方面发挥着至关重要的作用。使用亚马逊科技Amazon Connect出海企业可以快速搭建自己的全球客服联络中心。当前客服联络中心也面临诸多的挑战,如长时间的电话等待、沟通困难、有用信息的缺乏、对客户的回复缺乏标准难以统一,这些对客户都可能会带来不好的体验。当连接建立后,客户又需要重复地讲述求助的原因、个人的身份、订单信息等。通过对话机器人接收客户问题、回答客户问题,可以让客户不需要排队等待。对于已识别的客户,对话机器人有更多的相关信息,可以避免无效的问答,专注于更相关的信息。

Amazon Lex是基于AI聊天机器人的框架,可以根据业务场景设置各种各样的意图(Intent)来预训练机器人的基础模型,然后借助自然语言理解(NLU)实现与客户的对话。交付一个更快速更顺畅的客户体验的同时也节省了人力成本。

但随着业务场景的增加,需要负责维护机器人的人员尽可能罗列出所有分支场景,并设计相应的意图,同时还要保证最新的数据能够及时更新到基础模型中,这会带来巨大的维护成本与挑战。为了解决上述问题,需要引入检索增强生成(Retrieval Augmented Generation,RAG)技术,并结合生成式人工智能(GenAI)和大型语言模型(LLMs),将机器人的响应限制在公司的数据范围内,为用户提供更加专业精准的应答,并且无需花费大量的人力整理知识库、预训练机器人的基础模型。通过接入知识库丰富客户对话内容,提升对话体验。

本文将演示如何结合Amazon Connect、Amazon Lex、Amazon Kendra、Amazon Lambda和Amazon SageMaker,以及LangChain对大模型的调用,打造企业专属的智能客服。

架构概述

使用Amazon Connect的核心组件——联系流(Contact Flow),创建符合自身业务场景的IVR(Interactive Voice Response),并将获取用户输入的模块设置为Amazon Lex,实现用户对话的语义理解。

Amazon Connect将用户的呼入语音或文字输入传入Amazon Lex,通过在Lex中设置Lambda函数,将每一次用户的对话内容发送给Lambda函数做相应处理,最后将结果返回到Lex,实现人机对话。这里有个技巧是:无需人工为机器人创建大量的意图用于预训练,由于没有预训练模型去匹配用户的问题,Lex会自动匹配系统默认的FallbackIntent并发送给Lambda。将核心问题语义理解部分从Lex转移到了大语言模型,再由Lambda将大语言模型回复的内容嵌入FallbackIntent中,完成一次对话闭环,这样就大大节省了设计和维护预训练数据的人力成本。

Lambda获取用户问题后,将用户问题作为关键字,调用Amazon Kendra的知识库索引,利用Kendra自身的向量比对与自然语言理解特性,查询出匹配度高的结果集并返回给Lambda。Kendra支持多种文件格式和第三方平台作为数据源,本文选择网页爬虫作为数据源连接器,利用此连接器的定期爬取功能,实现知识库的自动更新。Kendra在抓去数据和建立索引时,会根据自身在14个主要行业(计算机、工业、汽车、电信、人力资源、法律、健康、能源、旅游、医疗、传媒、保险、制药和新闻)领域中的知识,对数据做文本切割和Embedding,并借助自身的自然语言理解(NLU)特性,进一步提升查询匹配的精准度。

Lambda函数拿到Kendra返回的数据后,会作为上下文通过Langchain生成相应的提示词(Prompt)并发送给大语言模型。提示词大致的格式为:“请在以下内容中回答

<用户提问>”。由于Kendra对数据源提前做了Embedding,内容更加精准,所以仅需截取排序前三的内容作为上下文拼接在提示词中,从而避免了大语言模型中Token数量限制问题,同时更加精简的提示词也能提升大模型的响应速率。

在SageMaker中部署大语言模型作为推理的终端节点。本文使用了清华大学开源的模型——ChatGLM-6B,对中文支持的表现较好,基于General Language Model(GLM)架构,具有62亿参数

Lambda函数将大模型返回的信息通过Lex传递给Connect,Connect通过Amazon Polly进行语音回复,也可以通过Connect文字聊天API进行文字回复。

如果系统多次无法解答用户问题,或者用户明确说出转人工的指令,系统会将用户转到Connect的人工座席进行详细沟通。

部署方案

前提条件

确保拥有亚马逊云科技账号并能访问控制台。

确保登录到亚马逊云科技的用户拥有操作Amazon Connect、Kendra、Lambda、SageMaker、Lex的权限。

本文使用源代码Github。

本文的操作将以Amazon us-west-2区域为例。

在Amazon Kendra创建知识库

Step 1创建索引

进入Amazon Kendra控制台。

点击右上方的“Create an Index”创建索引。

输入索引名称,在IAM role部分,选择“Create a new role”,在Role name中输入角色名称,然后点击“Next”按钮(请注意:系统会自动为名称生成相应的前缀,此前缀不能更改或删除,否则会造成异常)。

wKgaomVMqhqAG1hKAALgfvSkGQg053.png

后续两页保持默认选项,最后点“Create”按钮创建索引。整个创建过程大概需要5-10分钟。

Step 2创建数据源

在索引详情页中,点击“Add data sources”创建数据源。

wKgZomVMqhqACtO_AAC25CvEhTg448.png

Kendra支持多种数据源,这里选择网页爬虫作为数据源,可以从指定的URL中定时爬取和更新相关内容,适用于知识库更新比较频繁的场景。

wKgaomVMqhuAbmapAACH5he0BK8085.png

输入数据源名称,Language部分可根据自身知识库的语言选择。因为本文使用中文知识库,所以选择“Chinese(zh)”,然后点击“Next”。

wKgZomVMqhuAMmYyAAJXzJYR4Sw122.png

输入目标网页的URL,最多可以输入10个。如果需要访问内部网页,则在“Web proxy”部分设置网页的域名、端口号和访问凭证。

wKgaomVMqhuAHvhOAAHPKuEASHE008.png

IAM role选择”Create a new role”,并输入角色名称(请注意:系统会自动为名称生成相应的前缀,此前缀不能更改或删除,否则会造成异常)。

wKgZomVMqh2ATFwuAACu9HvDkaM779.png

配置爬虫爬取的范围与深度。

设置定期同步网页数据的周期,也可以设置手动同步(Run on demand)。然后点“Next”,最后一页确认信息后点“Create”按钮创建数据源。

wKgZomVMqh2AfQP9AAHWdFit7IM559.png

数据源创建完成后,点右上角的“Sync now”开始爬取或同步指定网页的数据。此过程根据爬取的范围和深度,可能需要几分钟到几个小时。此过程首先会对文档进行爬取以确定要索引的文档,然后再对选定的文档建立索引。

等待数据源同步成功后,可以点击右边栏“Search indexed content”测试索引情况。

因为爬取的中文文档,所以需要点击右边扳手图标,将语言设置为“Chinese (zh)”并点”Save“,最后在顶部搜索输入框中直接输入问题查看返回结果。

创建ChatGLM SageMaker Endpoint

进入Amazon SageMaker控制台。

在左边菜单点击Notebook->Notebook instances,如果当前没有实例可以复用,点击Create notebook instance按钮创建新的notebook instance。

输入Notebook instance name,instance type选择m5.xlarge,Platform identifier保持不变,IAM Role选择Create a new role,其它保持默认设置,最后点击Create notebook instance按钮完成创建。

当实例状态变为InService后,点击Open JupyterLab,打开Jupyter工作台

点击上传图标,将Github上/llm/chatglm/chatglm_sagemaker_byos.ipynb上传到工作台。

点击新建文件夹图片,新建名为code的文件夹,将Github上/LLM/chatglm/code目录下的两个文件也上传到工作台。

wKgaomVMqh2AVXGWAABgz0sY7m0934.png

双击ipynb打开笔记本,按照介绍顺序执行笔记本中的代码。其中第二步是将ChatGLM部署到SageMaker的推理节点,耗时大概5分钟左右,成功后可以运用笔记本中后面的步骤做相应的测试。请注意,如果执行第二步时出现ResourceLimitExceeded错误,说明在该区域还没有相应资源的配额,请到Service Quotas中输入endpoint查看该区域哪些实例类型支持endpoint。如果Applied quota value为0,需要选中实例类型后,点Request quata increase按钮申请。数量建议填1,否则可能会有申请失败。

wKgaomVMqh6ANR_6AAGOKxGeCI8320.png

在左边菜单中点击Inference->Endpoints可以看到新创建Endpoint,状态为InService说明正常运行。将Name复制下来,供后续配置Lambda环境变量使用。

创建Lambda函数

进入Amazon Lambda控制台。

首先为Lambda添加langchain的Lambda Layer。点击左边菜单栏的“Layer”,并点击右上角“Create layer”按钮。

名称填写langchain,文件选择Github上/Lambda/lambda-layer/lazip。

点击右上角“Create function”按钮创建Lambda函数。

输入函数名称,Runtime选择“Python 3.9”,Architecture选择“x86_64”,Execution Role选择“Create a new role with Lambda permissions”,然后点“Create function”按钮。稍后再为这个角色添加操作Lex与SageMaker Endpoint的权限。

wKgZomVMqh6AUi3VAAE8mYPm0-A962.png

创建成功后,点击“Upload from”按钮,下拉菜单中选“.zip file”,然后选择Github上,/Lambda/script.zip,点击“Save”。

点击Code这一栏,在Runtime settings部分点击Edit按钮,将Handler这里改为script.lambda_function.lambda_handler,这是因为上传了名为script.zip文件,需要修改入口程序的目录结构。

点击Code这一栏,在底部Layers部分点击“Add a layer”按钮添加LangChain Lambda Layer。

wKgaomVMqh-AdY6hAAIoV_as0e8780.png

点击Configuration栏,然后点击右边的“Edit”按钮,修改函数运行的基本参数。

wKgZomVMqh-AM4HkAACoukp5bqw469.png

设置函数运行内存为4096MB,Timeout设置为1分钟,其它设置保持默认,点击“Save”按钮保存设置。

wKgaomVMqh-AYMThAAGdPgCqq9g602.png

继续点击右边“Environment variables”,点击Edit按钮设置两个环境变量,Kendra索引ID与ChatGLM SageMaker endpoint名称:

Key=KENDRA_INDEX_ID,Value=在Kendra中的Index ID

Key=CHATGLM_ENDPOINT,Value=部署ChatGLM模型的SageMaker endpoint名称

wKgZomVMqiCAFim1AAFVAbRnsTo002.png

转到IAM控制台,点击右边的“Roles”,在列表中点选这个Lambda函数所关联的Role,点开Policy name下面的加号,然后点击“Edit”按钮。

wKgaomVMqiCAC3P2AAEedLYe8MY160.png

将如下JSON代码贴在现有代码后面,为Lambda函数赋予操作Kendra与SageMaker的权限。请注意JSON格式。

wKgZomVMqiCAL_LRAAAeS5EXmtg746.png

使用Amazon Lex创建智能对话机器人

进入Amazon Lex控制台。

点击右上角“Action”按钮,在下拉菜单中选择“Import”。

输入机器人名称,并选择Github上/lex/chatgpt-bot-DRAFT-OEZEFSCJIQ-LexJson.zip文件,IAM Permission选择“Create a role with basic Amazon Lex permissions”,COPPA部分选择“No”,最后点击“Import”按钮导入机器人。

点击导入成功后的机器人名称,在左边菜单中Aliases->TestBotAliases,并在Languages下点击Mandarin(PRC),在Lambda Function选择上面创建的Lambda函数,点Save按钮保存设置。

wKgaomVMqiGAcdbYAADg7spJ9S4153.png

点击左边菜单栏Mandarin(PRC),再点击右上角Build按钮构建机器人。

wKgZomVMqiGAMlotAAD4wbM-HPI064.png

构建成功后,点击Test按钮可以测试前面所有步骤是否配置成功。如报错或返回“Intent FallbackIntent is fulfilled”,说明执行Lambda时发生异常,可以到CloudWatch Log Group中查看Lambda日志,定位错误原因。测试成功的结果如下图所示:

wKgaomVMqiKANgNRAAEzb_Zx4m8366.png

最后使用Amazon Connect构建客户联络中心

进入Amazon Connect控制台。

点击Create instance按钮创建Connect实例。Identity management保持默认,输入英文字母组成的别名后,点Next。

为Connect管理控制台创建超级管理员,输入相关信息后点Next,后两页保持默认选项,最后点Create instance按钮完成创建。

Connect实例创建成功后,点击左边菜单中的Flows,在Amazon Lex部分,选择同区域的Bot,然后点击Add Amazon Lex Bot按钮添加Bot。

点击左边菜单栏的Instances,点击Access URL中的链接,使用Connect超级管理员的账号密码登录。

成功登录到Connect控制台后,点击“查看流”,然后点击“创建联系流”按钮。

点击右上角三角形按钮,在下拉菜单中选择“导入”,选择Github中/Connect/LLM-Lex-InboundFlow文件导入联系流。

双击“获取用户输入”模块,确认Amazon Lex选择为前面步骤创建的Bot,最后点击“发布”按钮发布此联系流。

回到控制面板,点击“开始”按钮创建一个电话号码。

根据实际业务需要,选择不同国家的电话号码,如果国家不在列表中,需要开工单申请。本文以美国的免费电话为例。

wKgZomVMqiKABff0AAFFr16UarU012.png

创建成功后,点击“查看电话号码”,然后点击该电话号码,在“联系流/IVR”中选择先前创建的联系流。

回到控制面板,点击“测试聊天”,然后点击“测试设置”,选中刚刚创建的联系流,点击应用按钮。

wKgaomVMqiKAN-MtAADumn8tkPE943.png

如下图所示:左边部分是模拟用户聊天界面,右边是座席服务台。当前用户的会话会自动由Amazon Lex机器人接替,只有当客户输入“转人工”字样才会将会话转到人工座席。

wKgZomVMqiOAEgrBAAIcpy7mFJk508.png

测试结果

此界面模拟用户向座席发起文字聊天,由于在联系流中设置了Lex机器人,所以客户的问题将由Lex机器人结合内部知识库与大语言模型来回答。

当用户输入“转人工”字样,系统会将用户的对话转入到人工座席。

wKgaomVMqiOARvbNAAIvyGwf5gc324.png

人工座席接受聊天请求后,就可以通过文字聊天与用户。

wKgZomVMqiSANE4DAAKq7Ma9Ohg981.png

总结

通过亚马逊云科技Amazon Connect和Amazon LEX实现客服联络中心的自动客服机器人,借助Amazon Lambda调用Amazon Kendra+ChatGLM扩展了自动客服机器人的对话能力,使对话机器人在没有预设的对话流的情况下,查询知识库回答客户的问题,提升顾客体验的同时减少了在顾客服务上的人力资源投入。在此框架下,可以继续不断完善自动机器人及大语言模型在回答问题方面的准确度。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 语言模型
    +关注

    关注

    0

    文章

    550

    浏览量

    10423
  • 亚马逊
    +关注

    关注

    8

    文章

    2687

    浏览量

    83980
收藏 人收藏

    相关推荐

    《AI Agent 应用与项目实战》阅读心得3——RAG架构与部署本地知识库

    应用。第六章深入探讨了RAG架构的工作原理,该技术通过在推理过程中实时检索和注入外部知识来增强模型的生成能力。RAG架构的核心是检索器和生成器两大模块,检索器负责从知识库中找到与当前查
    发表于 03-07 19:49

    《AI Agent 应用与项目实战》阅读心得2——客服机器人、AutoGen框架 、生成式代理

    ,Airtable负责知识库管理,Voiceflow处理对话流程设计,再配合GPT模型进行自然语言理解和生成。前端功能设计中引入了用户意图识别模块,能够准确捕捉用户的查询意图并进行多维
    发表于 02-25 21:59

    用腾讯ima和Deepseek建立个人微信知识库

    ---基于腾讯混元大模型或Deepseek-r推理模型的个人知识库。大模型是通才,知识库是专家大模型
    的头像 发表于 02-25 17:33 682次阅读
    用腾讯ima和Deepseek建立个人微信<b class='flag-5'>知识库</b>

    科技荣获亚马逊科技生成式AI能力认证

    Bedrock等技术,从应用范围、模型选择、数据处理、模型调优到应用集成与部署等方面,助力企业加速生成式AI应用落地。此外,聚科技还基于亚马逊
    的头像 发表于 02-14 16:07 159次阅读

    腾讯率先上线DeepSeek模型API接口,支持联网搜索

    的API接口,用户可以轻松接入DeepSeek模型,实现各种创新应用。同时,腾讯旗下的大模型知识应用开发平台——
    的头像 发表于 02-10 09:47 509次阅读

    基于华为 Flexus 服务器 X 搭建部署——AI 知识库问答系统(使用 1panel 面板安装)

    Flexus 服务器 X 携手开源力量,为您打造全方位、高性能的知识库问答系统!无论您是构建企业内部的知识宝库,还是优化客户服务体验,亦或深耕学术研究与教育领域,这一创新解决方案都
    的头像 发表于 01-17 09:45 655次阅读
    基于华为<b class='flag-5'>云</b> Flexus <b class='flag-5'>云</b>服务器 X 搭建部署——AI <b class='flag-5'>知识库</b>问答系统(使用 1panel 面板安装)

    腾讯ima升级知识库功能,上线小程序实现共享与便捷问答

    近日,腾讯旗下的AI智能工作台ima.copilot(简称ima)迎来了知识库功能的重大升级。此次升级不仅增加了“共享知识库”的新能力,还正式上线了“ima知识库”小程序,为用户带来了
    的头像 发表于 12-31 15:32 1231次阅读

    【「大模型启示录」阅读体验】如何在客服领域应用大模型

    客服领域是大模型落地场景中最多的,也是最容易实现的。本身客服领域的特点就是问答形式,大模型接入难度低。今天跟随《大
    发表于 12-17 16:53

    【实操文档】在智能硬件的大模型语音交互流程中接入RAG知识库

    本帖最后由 jf_40317719 于 2024-9-29 17:13 编辑 智能硬件的语音交互接入模型后可以直接理解自然语言内容
    发表于 09-29 17:12

    如何让智能客服像真人一样对话?容联七陌揭秘:多Agent大模型

    人工客服智能客服似乎遇到了一道坎,在理解用户、和用户对话方面,始终无法实现真正的“智能”。然而大模型
    的头像 发表于 09-26 18:41 556次阅读
    如何让<b class='flag-5'>智能</b><b class='flag-5'>客服</b>像真人一样<b class='flag-5'>对话</b>?容联七陌揭秘:多Agent大<b class='flag-5'>模型</b>

    北京灵奥科技基于亚马逊科技打造大模型中间件

    助力企业加速应用生成式AI 北京2024年6月27日 /美通社/ -- 北京灵奥科技基于亚马逊科技的生成式AI、数据和容器等服务,打造大模型
    的头像 发表于 06-27 21:21 656次阅读

    如何手撸一个自有知识库的RAG系统

    用于自然语言处理任务,如文本生成、问答系统等。 我们通过一下几个步骤来完成一个基于京东官网文档的RAG系统 数据收集 建立知识库 向量检索 提示词与
    的头像 发表于 06-17 14:59 749次阅读

    亚马逊科技接入百川智能和零一万物基础模型

    近日,亚马逊科技在中国峰会上宣布,两大中文基础模型——百川智能的Baichuan2-7B和零一万物的Yi-1.5 6B/9B/34B,即将或已正式登陆中国区域的SageMaker J
    的头像 发表于 06-04 11:53 653次阅读

    【大语言模型:原理与工程实践】大语言模型的应用

    实际应用前需解决的挑战。为提升大语言模型的性能,高级的提示词技术可以促进大语言模型与环境进行动态交互,引导其生成和推理规划。 检索增强生成技术(RAG)的核心理念在于从
    发表于 05-07 17:21

    【大语言模型:原理与工程实践】大语言模型的评测

    知识获取、逻辑推理、代码生成等方面的能力。这些评测基准包括语言建模能力、综合知识能力、数学计算能力、代码能力和垂直领域等多个维度。对于微调模型
    发表于 05-07 17:12