概述
客戶聯絡中心在現代是構成一個完整企業的重要組成部分,作為企業與顧客的連接紐帶,在銷售、服務支持以及提升顧客滿意度方面發揮著至關重要的作用。使用亞馬遜云科技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”按鈕(請注意:系統會自動為名稱生成相應的前綴,此前綴不能更改或刪除,否則會造成異常)。
后續兩頁保持默認選項,最后點“Create”按鈕創建索引。整個創建過程大概需要5-10分鐘。
Step 2創建數據源
在索引詳情頁中,點擊“Add data sources”創建數據源。
Kendra支持多種數據源,這里選擇網頁爬蟲作為數據源,可以從指定的URL中定時爬取和更新相關內容,適用于知識庫更新比較頻繁的場景。
輸入數據源名稱,Language部分可根據自身知識庫的語言選擇。因為本文使用中文知識庫,所以選擇“Chinese(zh)”,然后點擊“Next”。
輸入目標網頁的URL,最多可以輸入10個。如果需要訪問內部網頁,則在“Web proxy”部分設置網頁的域名、端口號和訪問憑證。
IAM role選擇”Create a new role”,并輸入角色名稱(請注意:系統會自動為名稱生成相應的前綴,此前綴不能更改或刪除,否則會造成異常)。
配置爬蟲爬取的范圍與深度。
設置定期同步網頁數據的周期,也可以設置手動同步(Run on demand)。然后點“Next”,最后一頁確認信息后點“Create”按鈕創建數據源。
數據源創建完成后,點右上角的“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目錄下的兩個文件也上傳到工作臺。
雙擊ipynb打開筆記本,按照介紹順序執行筆記本中的代碼。其中第二步是將ChatGLM部署到SageMaker的推理節點,耗時大概5分鐘左右,成功后可以運用筆記本中后面的步驟做相應的測試。請注意,如果執行第二步時出現ResourceLimitExceeded錯誤,說明在該區域還沒有相應資源的配額,請到Service Quotas中輸入endpoint查看該區域哪些實例類型支持endpoint。如果Applied quota value為0,需要選中實例類型后,點Request quata increase按鈕申請。數量建議填1,否則可能會有申請失敗。
在左邊菜單中點擊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的權限。
創建成功后,點擊“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。
點擊Configuration欄,然后點擊右邊的“Edit”按鈕,修改函數運行的基本參數。
設置函數運行內存為4096MB,Timeout設置為1分鐘,其它設置保持默認,點擊“Save”按鈕保存設置。
繼續點擊右邊“Environment variables”,點擊Edit按鈕設置兩個環境變量,Kendra索引ID與ChatGLM SageMaker endpoint名稱:
Key=KENDRA_INDEX_ID,Value=在Kendra中的Index ID
Key=CHATGLM_ENDPOINT,Value=部署ChatGLM模型的SageMaker endpoint名稱
轉到IAM控制臺,點擊右邊的“Roles”,在列表中點選這個Lambda函數所關聯的Role,點開Policy name下面的加號,然后點擊“Edit”按鈕。
將如下JSON代碼貼在現有代碼后面,為Lambda函數賦予操作Kendra與SageMaker的權限。請注意JSON格式。
使用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按鈕保存設置。
點擊左邊菜單欄Mandarin(PRC),再點擊右上角Build按鈕構建機器人。
構建成功后,點擊Test按鈕可以測試前面所有步驟是否配置成功。如報錯或返回“Intent FallbackIntent is fulfilled”,說明執行Lambda時發生異常,可以到CloudWatch Log Group中查看Lambda日志,定位錯誤原因。測試成功的結果如下圖所示:
最后使用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,最后點擊“發布”按鈕發布此聯系流。
回到控制面板,點擊“開始”按鈕創建一個電話號碼。
根據實際業務需要,選擇不同國家的電話號碼,如果國家不在列表中,需要開工單申請。本文以美國的免費電話為例。
創建成功后,點擊“查看電話號碼”,然后點擊該電話號碼,在“聯系流/IVR”中選擇先前創建的聯系流。
回到控制面板,點擊“測試聊天”,然后點擊“測試設置”,選中剛剛創建的聯系流,點擊應用按鈕。
如下圖所示:左邊部分是模擬用戶聊天界面,右邊是座席服務臺。當前用戶的會話會自動由Amazon Lex機器人接替,只有當客戶輸入“轉人工”字樣才會將會話轉到人工座席。
測試結果
此界面模擬用戶向座席發起文字聊天,由于在聯系流中設置了Lex機器人,所以客戶的問題將由Lex機器人結合內部知識庫與大語言模型來回答。
當用戶輸入“轉人工”字樣,系統會將用戶的對話轉入到人工座席。
人工座席接受聊天請求后,就可以通過文字聊天與用戶。
總結
通過亞馬遜云科技Amazon Connect和Amazon LEX實現客服聯絡中心的自動客服機器人,借助Amazon Lambda調用Amazon Kendra+ChatGLM擴展了自動客服機器人的對話能力,使對話機器人在沒有預設的對話流的情況下,查詢知識庫回答客戶的問題,提升顧客體驗的同時減少了在顧客服務上的人力資源投入。在此框架下,可以繼續不斷完善自動機器人及大語言模型在回答問題方面的準確度。
審核編輯 黃宇
-
語言模型
+關注
關注
0文章
557瀏覽量
10585 -
亞馬遜
+關注
關注
8文章
2690瀏覽量
84290
發布評論請先 登錄
相關推薦
MaaS X Cherry Studio:基于DeepSeek API快速構建個人AI智能助手

AI知識庫的搭建與應用:企業數字化轉型的關鍵步驟
《AI Agent 應用與項目實戰》閱讀心得3——RAG架構與部署本地知識庫
《AI Agent 應用與項目實戰》閱讀心得2——客服機器人、AutoGen框架 、生成式代理
聚云科技榮獲亞馬遜云科技生成式AI能力認證
基于華為云 Flexus 云服務器 X 搭建部署——AI 知識庫問答系統(使用 1panel 面板安裝)

評論