加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關推薦
  • 電子產業(yè)圖譜
申請入駐 產業(yè)圖譜

基于亞馬遜云科技大語言模型構建企業(yè)專屬智能客服機器人

2023/11/10
2822
閱讀需 22 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

?概述

?客戶聯絡中心在現代是構成一個完整企業(yè)的重要組成部分,作為企業(yè)與顧客的連接紐帶,在銷售、服務支持以及提升顧客滿意度方面發(fā)揮著至關重要的作用。使用亞馬遜云科技Amazon Connect出海企業(yè)可以快速搭建自己的全球客服聯絡中心。當前客服聯絡中心也面臨諸多的挑戰(zhàn),如長時間的電話等待、溝通困難、有用信息的缺乏、對客戶的回復缺乏標準難以統一,這些對客戶都可能會帶來不好的體驗。當連接建立后,客戶又需要重復地講述求助的原因、個人的身份、訂單信息等。通過對話機器人接收客戶問題、回答客戶問題,可以讓客戶不需要排隊等待。對于已識別的客戶,對話機器人有更多的相關信息,可以避免無效的問答,專注于更相關的信息。

?Amazon Lex是基于AI聊天機器人的框架,可以根據業(yè)務場景設置各種各樣的意圖(Intent)來預訓練機器人的基礎模型,然后借助自然語言理解(NLU)實現與客戶的對話。交付一個更快速更順暢的客戶體驗的同時也節(jié)省了人力成本。

?但隨著業(yè)務場景的增加,需要負責維護機器人的人員盡可能羅列出所有分支場景,并設計相應的意圖,同時還要保證最新的數據能夠及時更新到基礎模型中,這會帶來巨大的維護成本與挑戰(zhàn)。為了解決上述問題,需要引入檢索增強生成(Retrieval Augmented Generation,RAG)技術,并結合生成式人工智能(GenAI)和大型語言模型(LLMs),將機器人的響應限制在公司的數據范圍內,為用戶提供更加專業(yè)精準的應答,并且無需花費大量的人力整理知識庫、預訓練機器人的基礎模型。通過接入知識庫豐富客戶對話內容,提升對話體驗。

?本文將演示如何結合Amazon Connect、Amazon Lex、Amazon Kendra、Amazon Lambda和Amazon SageMaker,以及LangChain對大模型的調用,打造企業(yè)專屬的智能客服。

?架構概述

  • 使用Amazon Connect的核心組件——聯系流(Contact Flow),創(chuàng)建符合自身業(yè)務場景的IVR(Interactive Voice Response),并將獲取用戶輸入的模塊設置為Amazon Lex,實現用戶對話的語義理解。
  • Amazon Connect將用戶的呼入語音或文字輸入傳入Amazon Lex,通過在Lex中設置Lambda函數,將每一次用戶的對話內容發(fā)送給Lambda函數做相應處理,最后將結果返回到Lex,實現人機對話。這里有個技巧是:無需人工為機器人創(chuàng)建大量的意圖用于預訓練,由于沒有預訓練模型去匹配用戶的問題,Lex會自動匹配系統默認的FallbackIntent并發(fā)送給Lambda。將核心問題語義理解部分從Lex轉移到了大語言模型,再由Lambda將大語言模型回復的內容嵌入FallbackIntent中,完成一次對話閉環(huán),這樣就大大節(jié)省了設計和維護預訓練數據的人力成本。
  • Lambda獲取用戶問題后,將用戶問題作為關鍵字,調用Amazon Kendra的知識庫索引,利用Kendra自身的向量比對與自然語言理解特性,查詢出匹配度高的結果集并返回給Lambda。Kendra支持多種文件格式和第三方平臺作為數據源,本文選擇網頁爬蟲作為數據源連接器,利用此連接器的定期爬取功能,實現知識庫的自動更新。Kendra在抓去數據和建立索引時,會根據自身在14個主要行業(yè)(計算機、工業(yè)、汽車、電信、人力資源、法律、健康、能源、旅游、醫(yī)療、傳媒、保險、制藥和新聞)領域中的知識,對數據做文本切割和Embedding,并借助自身的自然語言理解(NLU)特性,進一步提升查詢匹配的精準度。
  • Lambda函數拿到Kendra返回的數據后,會作為上下文通過Langchain生成相應的提示詞(Prompt)并發(fā)送給大語言模型。提示詞大致的格式為:“請在以下內容中回答

    <用戶提問>”。由于Kendra對數據源提前做了Embedding,內容更加精準,所以僅需截取排序前三的內容作為上下文拼接在提示詞中,從而避免了大語言模型中Token數量限制問題,同時更加精簡的提示詞也能提升大模型的響應速率。

  • 在SageMaker中部署大語言模型作為推理的終端節(jié)點。本文使用了清華大學開源的模型——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區(qū)域為例。

?在Amazon Kendra創(chuàng)建知識庫

?Step 1創(chuàng)建索引

  • 進入Amazon Kendra控制臺。
  • 點擊右上方的“Create an Index”創(chuàng)建索引。
  • 輸入索引名稱,在IAM role部分,選擇“Create a new role”,在Role name中輸入角色名稱,然后點擊“Next”按鈕(請注意:系統會自動為名稱生成相應的前綴,此前綴不能更改或刪除,否則會造成異常)。

  • 后續(xù)兩頁保持默認選項,最后點“Create”按鈕創(chuàng)建索引。整個創(chuàng)建過程大概需要5-10分鐘。

?Step 2創(chuàng)建數據源

  • 在索引詳情頁中,點擊“Add data sources”創(chuàng)建數據源。

  • Kendra支持多種數據源,這里選擇網頁爬蟲作為數據源,可以從指定的URL中定時爬取和更新相關內容,適用于知識庫更新比較頻繁的場景。

  • 輸入數據源名稱,Language部分可根據自身知識庫的語言選擇。因為本文使用中文知識庫,所以選擇“Chinese(zh)”,然后點擊“Next”。

  • 輸入目標網頁的URL,最多可以輸入10個。如果需要訪問內部網頁,則在“Web proxy”部分設置網頁的域名、端口號和訪問憑證。

  • IAM role選擇”Create a new role”,并輸入角色名稱(請注意:系統會自動為名稱生成相應的前綴,此前綴不能更改或刪除,否則會造成異常)。

  • 配置爬蟲爬取的范圍與深度。
  • 設置定期同步網頁數據的周期,也可以設置手動同步(Run on demand)。然后點“Next”,最后一頁確認信息后點“Create”按鈕創(chuàng)建數據源。

  • 數據源創(chuàng)建完成后,點右上角的“Sync now”開始爬取或同步指定網頁的數據。此過程根據爬取的范圍和深度,可能需要幾分鐘到幾個小時。此過程首先會對文檔進行爬取以確定要索引的文檔,然后再對選定的文檔建立索引。
  • 等待數據源同步成功后,可以點擊右邊欄“Search indexed content”測試索引情況。
  • 因為爬取的中文文檔,所以需要點擊右邊扳手圖標,將語言設置為“Chinese (zh)”并點”Save“,最后在頂部搜索輸入框中直接輸入問題查看返回結果。

?創(chuàng)建ChatGLM SageMaker Endpoint

  • 進入Amazon SageMaker控制臺。
  • 在左邊菜單點擊Notebook->Notebook instances,如果當前沒有實例可以復用,點擊Create notebook instance按鈕創(chuàng)建新的notebook instance。
  • 輸入Notebook instance name,instance type選擇m5.xlarge,Platform identifier保持不變,IAM Role選擇Create a new role,其它保持默認設置,最后點擊Create notebook instance按鈕完成創(chuàng)建。
  • 當實例狀態(tài)變?yōu)镮nService后,點擊Open JupyterLab,打開Jupyter工作臺
  • 點擊上傳圖標,將Github上/llm/chatglm/chatglm_sagemaker_byos.ipynb上傳到工作臺。
  • 點擊新建文件夾圖片,新建名為code的文件夾,將Github上/LLM/chatglm/code目錄下的兩個文件也上傳到工作臺。

  • 雙擊ipynb打開筆記本,按照介紹順序執(zhí)行筆記本中的代碼。其中第二步是將ChatGLM部署到SageMaker的推理節(jié)點,耗時大概5分鐘左右,成功后可以運用筆記本中后面的步驟做相應的測試。請注意,如果執(zhí)行第二步時出現ResourceLimitExceeded錯誤,說明在該區(qū)域還沒有相應資源的配額,請到Service Quotas中輸入endpoint查看該區(qū)域哪些實例類型支持endpoint。如果Applied quota value為0,需要選中實例類型后,點Request quata increase按鈕申請。數量建議填1,否則可能會有申請失敗。

  • 在左邊菜單中點擊Inference->Endpoints可以看到新創(chuàng)建Endpoint,狀態(tài)為InService說明正常運行。將Name復制下來,供后續(xù)配置Lambda環(huán)境變量使用。

?創(chuàng)建Lambda函數

  • 進入Amazon Lambda控制臺。

?

  • 首先為Lambda添加langchain的Lambda Layer。點擊左邊菜單欄的“Layer”,并點擊右上角“Create layer”按鈕。
  • 名稱填寫langchain,文件選擇Github上/Lambda/lambda-layer/lazip。
  • 點擊右上角“Create function”按鈕創(chuàng)建Lambda函數。
  • 輸入函數名稱,Runtime選擇“Python 3.9”,Architecture選擇“x86_64”,Execution Role選擇“Create a new role with Lambda permissions”,然后點“Create function”按鈕。稍后再為這個角色添加操作Lex與SageMaker Endpoint的權限。

  • 創(chuàng)建成功后,點擊“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”按鈕保存設置。

  • 繼續(xù)點擊右邊“Environment variables”,點擊Edit按鈕設置兩個環(huán)境變量,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創(chuàng)建智能對話機器人

  • 進入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選擇上面創(chuàng)建的Lambda函數,點Save按鈕保存設置。

  • 點擊左邊菜單欄Mandarin(PRC),再點擊右上角Build按鈕構建機器人。

  • 構建成功后,點擊Test按鈕可以測試前面所有步驟是否配置成功。如報錯或返回“Intent FallbackIntent is fulfilled”,說明執(zhí)行Lambda時發(fā)生異常,可以到CloudWatch Log Group中查看Lambda日志,定位錯誤原因。測試成功的結果如下圖所示:

?最后使用Amazon Connect構建客戶聯絡中心

  • 進入Amazon Connect控制臺。
  • 點擊Create instance按鈕創(chuàng)建Connect實例。Identity management保持默認,輸入英文字母組成的別名后,點Next。
  • 為Connect管理控制臺創(chuàng)建超級管理員,輸入相關信息后點Next,后兩頁保持默認選項,最后點Create instance按鈕完成創(chuàng)建。
  • Connect實例創(chuàng)建成功后,點擊左邊菜單中的Flows,在Amazon Lex部分,選擇同區(qū)域的Bot,然后點擊Add Amazon Lex Bot按鈕添加Bot。
  • 點擊左邊菜單欄的Instances,點擊Access URL中的鏈接,使用Connect超級管理員的賬號密碼登錄。
  • 成功登錄到Connect控制臺后,點擊“查看流”,然后點擊“創(chuàng)建聯系流”按鈕。
  • 點擊右上角三角形按鈕,在下拉菜單中選擇“導入”,選擇Github中/Connect/LLM-Lex-InboundFlow文件導入聯系流。
  • 雙擊“獲取用戶輸入”模塊,確認Amazon Lex選擇為前面步驟創(chuàng)建的Bot,最后點擊“發(fā)布”按鈕發(fā)布此聯系流。
  • 回到控制面板,點擊“開始”按鈕創(chuàng)建一個電話號碼。
  • 根據實際業(yè)務需要,選擇不同國家的電話號碼,如果國家不在列表中,需要開工單申請。本文以美國的免費電話為例。

  • 創(chuàng)建成功后,點擊“查看電話號碼”,然后點擊該電話號碼,在“聯系流/IVR”中選擇先前創(chuàng)建的聯系流。
  • 回到控制面板,點擊“測試聊天”,然后點擊“測試設置”,選中剛剛創(chuàng)建的聯系流,點擊應用按鈕。

  • 如下圖所示:左邊部分是模擬用戶聊天界面,右邊是座席服務臺。當前用戶的會話會自動由Amazon Lex機器人接替,只有當客戶輸入“轉人工”字樣才會將會話轉到人工座席。

?測試結果

?此界面模擬用戶向座席發(fā)起文字聊天,由于在聯系流中設置了Lex機器人,所以客戶的問題將由Lex機器人結合內部知識庫與大語言模型來回答。

?當用戶輸入“轉人工”字樣,系統會將用戶的對話轉入到人工座席。

?人工座席接受聊天請求后,就可以通過文字聊天與用戶。

?總結

?通過亞馬遜云科技Amazon Connect和Amazon LEX實現客服聯絡中心的自動客服機器人,借助Amazon Lambda調用Amazon Kendra+ChatGLM擴展了自動客服機器人的對話能力,使對話機器人在沒有預設的對話流的情況下,查詢知識庫回答客戶的問題,提升顧客體驗的同時減少了在顧客服務上的人力資源投入。在此框架下,可以繼續(xù)不斷完善自動機器人及大語言模型在回答問題方面的準確度。

推薦器件

更多器件
器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
STM32F427VIT6 1 STMicroelectronics High-performance advanced line, Arm Cortex-M4 core with DSP and FPU, 2 Mbytes of Flash memory, 180 MHz CPU, ART Accelerator, Chrom-ART Accelerator,FSMC

ECAD模型

下載ECAD模型
$22.31 查看
ATSAM4S16BA-ANR 1 Microchip Technology Inc RISC Microcontroller
$5.12 查看
PIC24EP512GU810-I/PT 1 Microchip Technology Inc 16-BIT, FLASH, 60 MHz, MICROCONTROLLER, PQFP100, 12 X 12 MM, 1 MM HEIGHT, LEAD FREE, PLASTIC, TQFP-100

ECAD模型

下載ECAD模型
$10.44 查看

相關推薦

電子產業(yè)圖譜