概述
客戶聯(lián)絡(luò)中心在現(xiàn)代是構(gòu)成一個(gè)完整企業(yè)的重要組成部分,作為企業(yè)與顧客的連接紐帶,在銷售、服務(wù)支持以及提升顧客滿意度方面發(fā)揮著至關(guān)重要的作用。使用亞馬遜云科技Amazon Connect出海企業(yè)可以快速搭建自己的全球客服聯(lián)絡(luò)中心。當(dāng)前客服聯(lián)絡(luò)中心也面臨諸多的挑戰(zhàn),如長(zhǎng)時(shí)間的電話等待、溝通困難、有用信息的缺乏、對(duì)客戶的回復(fù)缺乏標(biāo)準(zhǔn)難以統(tǒng)一,這些對(duì)客戶都可能會(huì)帶來(lái)不好的體驗(yàn)。當(dāng)連接建立后,客戶又需要重復(fù)地講述求助的原因、個(gè)人的身份、訂單信息等。通過(guò)對(duì)話機(jī)器人接收客戶問(wèn)題、回答客戶問(wèn)題,可以讓客戶不需要排隊(duì)等待。對(duì)于已識(shí)別的客戶,對(duì)話機(jī)器人有更多的相關(guān)信息,可以避免無(wú)效的問(wèn)答,專注于更相關(guān)的信息。
Amazon Lex是基于AI聊天機(jī)器人的框架,可以根據(jù)業(yè)務(wù)場(chǎng)景設(shè)置各種各樣的意圖(Intent)來(lái)預(yù)訓(xùn)練機(jī)器人的基礎(chǔ)模型,然后借助自然語(yǔ)言理解(NLU)實(shí)現(xiàn)與客戶的對(duì)話。交付一個(gè)更快速更順暢的客戶體驗(yàn)的同時(shí)也節(jié)省了人力成本。
但隨著業(yè)務(wù)場(chǎng)景的增加,需要負(fù)責(zé)維護(hù)機(jī)器人的人員盡可能羅列出所有分支場(chǎng)景,并設(shè)計(jì)相應(yīng)的意圖,同時(shí)還要保證最新的數(shù)據(jù)能夠及時(shí)更新到基礎(chǔ)模型中,這會(huì)帶來(lái)巨大的維護(hù)成本與挑戰(zhàn)。為了解決上述問(wèn)題,需要引入檢索增強(qiáng)生成(Retrieval Augmented Generation,RAG)技術(shù),并結(jié)合生成式人工智能(GenAI)和大型語(yǔ)言模型(LLMs),將機(jī)器人的響應(yīng)限制在公司的數(shù)據(jù)范圍內(nèi),為用戶提供更加專業(yè)精準(zhǔn)的應(yīng)答,并且無(wú)需花費(fèi)大量的人力整理知識(shí)庫(kù)、預(yù)訓(xùn)練機(jī)器人的基礎(chǔ)模型。通過(guò)接入知識(shí)庫(kù)豐富客戶對(duì)話內(nèi)容,提升對(duì)話體驗(yàn)。
本文將演示如何結(jié)合Amazon Connect、Amazon Lex、Amazon Kendra、Amazon Lambda和Amazon SageMaker,以及LangChain對(duì)大模型的調(diào)用,打造企業(yè)專屬的智能客服。
架構(gòu)概述
使用Amazon Connect的核心組件——聯(lián)系流(Contact Flow),創(chuàng)建符合自身業(yè)務(wù)場(chǎng)景的IVR(Interactive Voice Response),并將獲取用戶輸入的模塊設(shè)置為Amazon Lex,實(shí)現(xiàn)用戶對(duì)話的語(yǔ)義理解。
Amazon Connect將用戶的呼入語(yǔ)音或文字輸入傳入Amazon Lex,通過(guò)在Lex中設(shè)置Lambda函數(shù),將每一次用戶的對(duì)話內(nèi)容發(fā)送給Lambda函數(shù)做相應(yīng)處理,最后將結(jié)果返回到Lex,實(shí)現(xiàn)人機(jī)對(duì)話。這里有個(gè)技巧是:無(wú)需人工為機(jī)器人創(chuàng)建大量的意圖用于預(yù)訓(xùn)練,由于沒(méi)有預(yù)訓(xùn)練模型去匹配用戶的問(wèn)題,Lex會(huì)自動(dòng)匹配系統(tǒng)默認(rèn)的FallbackIntent并發(fā)送給Lambda。將核心問(wèn)題語(yǔ)義理解部分從Lex轉(zhuǎn)移到了大語(yǔ)言模型,再由Lambda將大語(yǔ)言模型回復(fù)的內(nèi)容嵌入FallbackIntent中,完成一次對(duì)話閉環(huán),這樣就大大節(jié)省了設(shè)計(jì)和維護(hù)預(yù)訓(xùn)練數(shù)據(jù)的人力成本。
Lambda獲取用戶問(wèn)題后,將用戶問(wèn)題作為關(guān)鍵字,調(diào)用Amazon Kendra的知識(shí)庫(kù)索引,利用Kendra自身的向量比對(duì)與自然語(yǔ)言理解特性,查詢出匹配度高的結(jié)果集并返回給Lambda。Kendra支持多種文件格式和第三方平臺(tái)作為數(shù)據(jù)源,本文選擇網(wǎng)頁(yè)爬蟲(chóng)作為數(shù)據(jù)源連接器,利用此連接器的定期爬取功能,實(shí)現(xiàn)知識(shí)庫(kù)的自動(dòng)更新。Kendra在抓去數(shù)據(jù)和建立索引時(shí),會(huì)根據(jù)自身在14個(gè)主要行業(yè)(計(jì)算機(jī)、工業(yè)、汽車、電信、人力資源、法律、健康、能源、旅游、醫(yī)療、傳媒、保險(xiǎn)、制藥和新聞)領(lǐng)域中的知識(shí),對(duì)數(shù)據(jù)做文本切割和Embedding,并借助自身的自然語(yǔ)言理解(NLU)特性,進(jìn)一步提升查詢匹配的精準(zhǔn)度。
Lambda函數(shù)拿到Kendra返回的數(shù)據(jù)后,會(huì)作為上下文通過(guò)Langchain生成相應(yīng)的提示詞(Prompt)并發(fā)送給大語(yǔ)言模型。提示詞大致的格式為:“請(qǐng)?jiān)谝韵聝?nèi)容中回答
<用戶提問(wèn)>”。由于Kendra對(duì)數(shù)據(jù)源提前做了Embedding,內(nèi)容更加精準(zhǔn),所以僅需截取排序前三的內(nèi)容作為上下文拼接在提示詞中,從而避免了大語(yǔ)言模型中Token數(shù)量限制問(wèn)題,同時(shí)更加精簡(jiǎn)的提示詞也能提升大模型的響應(yīng)速率。
在SageMaker中部署大語(yǔ)言模型作為推理的終端節(jié)點(diǎn)。本文使用了清華大學(xué)開(kāi)源的模型——ChatGLM-6B,對(duì)中文支持的表現(xiàn)較好,基于General Language Model(GLM)架構(gòu),具有62億參數(shù)。
Lambda函數(shù)將大模型返回的信息通過(guò)Lex傳遞給Connect,Connect通過(guò)Amazon Polly進(jìn)行語(yǔ)音回復(fù),也可以通過(guò)Connect文字聊天API進(jìn)行文字回復(fù)。
如果系統(tǒng)多次無(wú)法解答用戶問(wèn)題,或者用戶明確說(shuō)出轉(zhuǎn)人工的指令,系統(tǒng)會(huì)將用戶轉(zhuǎn)到Connect的人工座席進(jìn)行詳細(xì)溝通。
部署方案
前提條件
確保擁有亞馬遜云科技賬號(hào)并能訪問(wèn)控制臺(tái)。
確保登錄到亞馬遜云科技的用戶擁有操作Amazon Connect、Kendra、Lambda、SageMaker、Lex的權(quán)限。
本文使用源代碼Github。
本文的操作將以Amazon us-west-2區(qū)域?yàn)槔?/p>
在Amazon Kendra創(chuàng)建知識(shí)庫(kù)
Step 1創(chuàng)建索引
進(jìn)入Amazon Kendra控制臺(tái)。
點(diǎn)擊右上方的“Create an Index”創(chuàng)建索引。
輸入索引名稱,在IAM role部分,選擇“Create a new role”,在Role name中輸入角色名稱,然后點(diǎn)擊“Next”按鈕(請(qǐng)注意:系統(tǒng)會(huì)自動(dòng)為名稱生成相應(yīng)的前綴,此前綴不能更改或刪除,否則會(huì)造成異常)。
后續(xù)兩頁(yè)保持默認(rèn)選項(xiàng),最后點(diǎn)“Create”按鈕創(chuàng)建索引。整個(gè)創(chuàng)建過(guò)程大概需要5-10分鐘。
Step 2創(chuàng)建數(shù)據(jù)源
在索引詳情頁(yè)中,點(diǎn)擊“Add data sources”創(chuàng)建數(shù)據(jù)源。
Kendra支持多種數(shù)據(jù)源,這里選擇網(wǎng)頁(yè)爬蟲(chóng)作為數(shù)據(jù)源,可以從指定的URL中定時(shí)爬取和更新相關(guān)內(nèi)容,適用于知識(shí)庫(kù)更新比較頻繁的場(chǎng)景。
輸入數(shù)據(jù)源名稱,Language部分可根據(jù)自身知識(shí)庫(kù)的語(yǔ)言選擇。因?yàn)楸疚氖褂弥形闹R(shí)庫(kù),所以選擇“Chinese(zh)”,然后點(diǎn)擊“Next”。
輸入目標(biāo)網(wǎng)頁(yè)的URL,最多可以輸入10個(gè)。如果需要訪問(wèn)內(nèi)部網(wǎng)頁(yè),則在“Web proxy”部分設(shè)置網(wǎng)頁(yè)的域名、端口號(hào)和訪問(wèn)憑證。
IAM role選擇”Create a new role”,并輸入角色名稱(請(qǐng)注意:系統(tǒng)會(huì)自動(dòng)為名稱生成相應(yīng)的前綴,此前綴不能更改或刪除,否則會(huì)造成異常)。
配置爬蟲(chóng)爬取的范圍與深度。
設(shè)置定期同步網(wǎng)頁(yè)數(shù)據(jù)的周期,也可以設(shè)置手動(dòng)同步(Run on demand)。然后點(diǎn)“Next”,最后一頁(yè)確認(rèn)信息后點(diǎn)“Create”按鈕創(chuàng)建數(shù)據(jù)源。
數(shù)據(jù)源創(chuàng)建完成后,點(diǎn)右上角的“Sync now”開(kāi)始爬取或同步指定網(wǎng)頁(yè)的數(shù)據(jù)。此過(guò)程根據(jù)爬取的范圍和深度,可能需要幾分鐘到幾個(gè)小時(shí)。此過(guò)程首先會(huì)對(duì)文檔進(jìn)行爬取以確定要索引的文檔,然后再對(duì)選定的文檔建立索引。
等待數(shù)據(jù)源同步成功后,可以點(diǎn)擊右邊欄“Search indexed content”測(cè)試索引情況。
因?yàn)榕廊〉闹形奈臋n,所以需要點(diǎn)擊右邊扳手圖標(biāo),將語(yǔ)言設(shè)置為“Chinese (zh)”并點(diǎn)”Save“,最后在頂部搜索輸入框中直接輸入問(wèn)題查看返回結(jié)果。
創(chuàng)建ChatGLM SageMaker Endpoint
進(jìn)入Amazon SageMaker控制臺(tái)。
在左邊菜單點(diǎn)擊Notebook->Notebook instances,如果當(dāng)前沒(méi)有實(shí)例可以復(fù)用,點(diǎn)擊Create notebook instance按鈕創(chuàng)建新的notebook instance。
輸入Notebook instance name,instance type選擇m5.xlarge,Platform identifier保持不變,IAM Role選擇Create a new role,其它保持默認(rèn)設(shè)置,最后點(diǎn)擊Create notebook instance按鈕完成創(chuàng)建。
當(dāng)實(shí)例狀態(tài)變?yōu)镮nService后,點(diǎn)擊Open JupyterLab,打開(kāi)Jupyter工作臺(tái)
點(diǎn)擊上傳圖標(biāo),將Github上/llm/chatglm/chatglm_sagemaker_byos.ipynb上傳到工作臺(tái)。
點(diǎn)擊新建文件夾圖片,新建名為code的文件夾,將Github上/LLM/chatglm/code目錄下的兩個(gè)文件也上傳到工作臺(tái)。
雙擊ipynb打開(kāi)筆記本,按照介紹順序執(zhí)行筆記本中的代碼。其中第二步是將ChatGLM部署到SageMaker的推理節(jié)點(diǎn),耗時(shí)大概5分鐘左右,成功后可以運(yùn)用筆記本中后面的步驟做相應(yīng)的測(cè)試。請(qǐng)注意,如果執(zhí)行第二步時(shí)出現(xiàn)ResourceLimitExceeded錯(cuò)誤,說(shuō)明在該區(qū)域還沒(méi)有相應(yīng)資源的配額,請(qǐng)到Service Quotas中輸入endpoint查看該區(qū)域哪些實(shí)例類型支持endpoint。如果Applied quota value為0,需要選中實(shí)例類型后,點(diǎn)Request quata increase按鈕申請(qǐng)。數(shù)量建議填1,否則可能會(huì)有申請(qǐng)失敗。
在左邊菜單中點(diǎn)擊Inference->Endpoints可以看到新創(chuàng)建Endpoint,狀態(tài)為InService說(shuō)明正常運(yùn)行。將Name復(fù)制下來(lái),供后續(xù)配置Lambda環(huán)境變量使用。
創(chuàng)建Lambda函數(shù)
進(jìn)入Amazon Lambda控制臺(tái)。
首先為L(zhǎng)ambda添加langchain的Lambda Layer。點(diǎn)擊左邊菜單欄的“Layer”,并點(diǎn)擊右上角“Create layer”按鈕。
名稱填寫(xiě)langchain,文件選擇Github上/Lambda/lambda-layer/lazip。
點(diǎn)擊右上角“Create function”按鈕創(chuàng)建Lambda函數(shù)。
輸入函數(shù)名稱,Runtime選擇“Python 3.9”,Architecture選擇“x86_64”,Execution Role選擇“Create a new role with Lambda permissions”,然后點(diǎn)“Create function”按鈕。稍后再為這個(gè)角色添加操作Lex與SageMaker Endpoint的權(quán)限。
創(chuàng)建成功后,點(diǎn)擊“Upload from”按鈕,下拉菜單中選“.zip file”,然后選擇Github上,/Lambda/script.zip,點(diǎn)擊“Save”。
點(diǎn)擊Code這一欄,在Runtime settings部分點(diǎn)擊Edit按鈕,將Handler這里改為script.lambda_function.lambda_handler,這是因?yàn)樯蟼髁嗣麨閟cript.zip文件,需要修改入口程序的目錄結(jié)構(gòu)。
點(diǎn)擊Code這一欄,在底部Layers部分點(diǎn)擊“Add a layer”按鈕添加LangChain Lambda Layer。
點(diǎn)擊Configuration欄,然后點(diǎn)擊右邊的“Edit”按鈕,修改函數(shù)運(yùn)行的基本參數(shù)。
設(shè)置函數(shù)運(yùn)行內(nèi)存為4096MB,Timeout設(shè)置為1分鐘,其它設(shè)置保持默認(rèn),點(diǎn)擊“Save”按鈕保存設(shè)置。
繼續(xù)點(diǎn)擊右邊“Environment variables”,點(diǎn)擊Edit按鈕設(shè)置兩個(gè)環(huán)境變量,Kendra索引ID與ChatGLM SageMaker endpoint名稱:
Key=KENDRA_INDEX_ID,Value=在Kendra中的Index ID
Key=CHATGLM_ENDPOINT,Value=部署ChatGLM模型的SageMaker endpoint名稱
轉(zhuǎn)到IAM控制臺(tái),點(diǎn)擊右邊的“Roles”,在列表中點(diǎn)選這個(gè)Lambda函數(shù)所關(guān)聯(lián)的Role,點(diǎn)開(kāi)Policy name下面的加號(hào),然后點(diǎn)擊“Edit”按鈕。
將如下JSON代碼貼在現(xiàn)有代碼后面,為L(zhǎng)ambda函數(shù)賦予操作Kendra與SageMaker的權(quán)限。請(qǐng)注意JSON格式。
使用Amazon Lex創(chuàng)建智能對(duì)話機(jī)器人
進(jìn)入Amazon Lex控制臺(tái)。
點(diǎn)擊右上角“Action”按鈕,在下拉菜單中選擇“Import”。
輸入機(jī)器人名稱,并選擇Github上/lex/chatgpt-bot-DRAFT-OEZEFSCJIQ-LexJson.zip文件,IAM Permission選擇“Create a role with basic Amazon Lex permissions”,COPPA部分選擇“No”,最后點(diǎn)擊“Import”按鈕導(dǎo)入機(jī)器人。
點(diǎn)擊導(dǎo)入成功后的機(jī)器人名稱,在左邊菜單中Aliases->TestBotAliases,并在Languages下點(diǎn)擊Mandarin(PRC),在Lambda Function選擇上面創(chuàng)建的Lambda函數(shù),點(diǎn)Save按鈕保存設(shè)置。
點(diǎn)擊左邊菜單欄Mandarin(PRC),再點(diǎn)擊右上角Build按鈕構(gòu)建機(jī)器人。
構(gòu)建成功后,點(diǎn)擊Test按鈕可以測(cè)試前面所有步驟是否配置成功。如報(bào)錯(cuò)或返回“Intent FallbackIntent is fulfilled”,說(shuō)明執(zhí)行Lambda時(shí)發(fā)生異常,可以到CloudWatch Log Group中查看Lambda日志,定位錯(cuò)誤原因。測(cè)試成功的結(jié)果如下圖所示:
最后使用Amazon Connect構(gòu)建客戶聯(lián)絡(luò)中心
進(jìn)入Amazon Connect控制臺(tái)。
點(diǎn)擊Create instance按鈕創(chuàng)建Connect實(shí)例。Identity management保持默認(rèn),輸入英文字母組成的別名后,點(diǎn)Next。
為Connect管理控制臺(tái)創(chuàng)建超級(jí)管理員,輸入相關(guān)信息后點(diǎn)Next,后兩頁(yè)保持默認(rèn)選項(xiàng),最后點(diǎn)Create instance按鈕完成創(chuàng)建。
Connect實(shí)例創(chuàng)建成功后,點(diǎn)擊左邊菜單中的Flows,在Amazon Lex部分,選擇同區(qū)域的Bot,然后點(diǎn)擊Add Amazon Lex Bot按鈕添加Bot。
點(diǎn)擊左邊菜單欄的Instances,點(diǎn)擊Access URL中的鏈接,使用Connect超級(jí)管理員的賬號(hào)密碼登錄。
成功登錄到Connect控制臺(tái)后,點(diǎn)擊“查看流”,然后點(diǎn)擊“創(chuàng)建聯(lián)系流”按鈕。
點(diǎn)擊右上角三角形按鈕,在下拉菜單中選擇“導(dǎo)入”,選擇Github中/Connect/LLM-Lex-InboundFlow文件導(dǎo)入聯(lián)系流。
雙擊“獲取用戶輸入”模塊,確認(rèn)Amazon Lex選擇為前面步驟創(chuàng)建的Bot,最后點(diǎn)擊“發(fā)布”按鈕發(fā)布此聯(lián)系流。
回到控制面板,點(diǎn)擊“開(kāi)始”按鈕創(chuàng)建一個(gè)電話號(hào)碼。
根據(jù)實(shí)際業(yè)務(wù)需要,選擇不同國(guó)家的電話號(hào)碼,如果國(guó)家不在列表中,需要開(kāi)工單申請(qǐng)。本文以美國(guó)的免費(fèi)電話為例。
創(chuàng)建成功后,點(diǎn)擊“查看電話號(hào)碼”,然后點(diǎn)擊該電話號(hào)碼,在“聯(lián)系流/IVR”中選擇先前創(chuàng)建的聯(lián)系流。
回到控制面板,點(diǎn)擊“測(cè)試聊天”,然后點(diǎn)擊“測(cè)試設(shè)置”,選中剛剛創(chuàng)建的聯(lián)系流,點(diǎn)擊應(yīng)用按鈕。
如下圖所示:左邊部分是模擬用戶聊天界面,右邊是座席服務(wù)臺(tái)。當(dāng)前用戶的會(huì)話會(huì)自動(dòng)由Amazon Lex機(jī)器人接替,只有當(dāng)客戶輸入“轉(zhuǎn)人工”字樣才會(huì)將會(huì)話轉(zhuǎn)到人工座席。
測(cè)試結(jié)果
此界面模擬用戶向座席發(fā)起文字聊天,由于在聯(lián)系流中設(shè)置了Lex機(jī)器人,所以客戶的問(wèn)題將由Lex機(jī)器人結(jié)合內(nèi)部知識(shí)庫(kù)與大語(yǔ)言模型來(lái)回答。
當(dāng)用戶輸入“轉(zhuǎn)人工”字樣,系統(tǒng)會(huì)將用戶的對(duì)話轉(zhuǎn)入到人工座席。
人工座席接受聊天請(qǐng)求后,就可以通過(guò)文字聊天與用戶。
總結(jié)
通過(guò)亞馬遜云科技Amazon Connect和Amazon LEX實(shí)現(xiàn)客服聯(lián)絡(luò)中心的自動(dòng)客服機(jī)器人,借助Amazon Lambda調(diào)用Amazon Kendra+ChatGLM擴(kuò)展了自動(dòng)客服機(jī)器人的對(duì)話能力,使對(duì)話機(jī)器人在沒(méi)有預(yù)設(shè)的對(duì)話流的情況下,查詢知識(shí)庫(kù)回答客戶的問(wèn)題,提升顧客體驗(yàn)的同時(shí)減少了在顧客服務(wù)上的人力資源投入。在此框架下,可以繼續(xù)不斷完善自動(dòng)機(jī)器人及大語(yǔ)言模型在回答問(wèn)題方面的準(zhǔn)確度。
審核編輯 黃宇
-
語(yǔ)言模型
+關(guān)注
關(guān)注
0文章
527瀏覽量
10286 -
亞馬遜
+關(guān)注
關(guān)注
8文章
2668瀏覽量
83413
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論