基於ChatGPT的智慧客服助手

人工智慧洞察站發表於2023-10-13

來源:轉轉技術

  • 導讀

  • 1.應用場景與系統框圖

  • 2.搭建基於ChatGPT的智慧客服助手

    • 2.1 ChatGPT原理

    • 2.2 Prompt設計

  • 3.智慧客服系統二期最佳化之使用者問題分類

    • 3.1 Bert簡介

    • 3.2 使用者問題分類網路訓練資料

    • 3.3訓練分類模型

  • 4.智慧客服系統三期最佳化之商詳和質檢項相關知識篩選

  • 5.總結

  • 6.參考文獻


導讀

傳統客服領域,具有大量依賴人工,資料密集等特點。面對大量的使用者提問,人工客服需要根據使用者的問題,從大量資料中找出與使用者問題相關的資料,再組織語言進行回答。響應時間受限於人工客服的工作經驗和業務場景的複雜程度,耗時較長時會嚴重影響使用者的購物體驗。

智慧客服,是指藉助Large Language Model(LLM)擁有的出色的自然語言處理與理解能力,融合私有資料構建特定場景的智慧客服系統,為人工客服提供有力支援,提高人工客服的服務效率與服務質量。

1.應用場景與系統框圖

使用者看到的商品展示介面有詳細的商品引數和質檢報告,商品引數包含商品的基本資訊,質檢報告為轉轉質檢部門出具的權威檢測報告,方便使用者瞭解二手商品的真實狀況。

基於ChatGPT的智慧客服助手

使用者在轉轉App上與客服的談話內容大致可分成:商品引數諮詢,質檢報告諮詢,優惠活動諮詢,平臺政策諮詢,售後諮詢,閒聊問候六大類。人工客服在遇到使用者諮詢商品引數和質檢報告時,需要從種類繁多的商品詳情和質檢項中找到客戶問題相關的項,再給出使用者相應的解答。從使用者點選商品的全部資料中搜尋答案是比較耗時的,需要人工客服對使用者諮詢的商品引數較為了解,以便快速響應使用者的問題。

讓我們利用ChatGPT的自然語言處理與理解能力,輔助人工客服實現從大段的商品詳情和質檢報告中找出使用者感興趣的項,並解答使用者的問題吧。

整個智慧客服系統的框圖如下圖所示:使用者發起人工諮詢對話,首先分配客服,使用者的點選商品資訊同步給客服,然後智慧客服系統給出輔助資訊,客服決定採納與否,給使用者提供解答,一次會話結束。

基於ChatGPT的智慧客服助手

智慧客服系統分為三個模組:使用者問題分類模組,知識篩選模組和ChatGPT智慧客服模組。一期系統只有ChatGPT智慧客服模組,二期和三期最佳化增加了使用者問題分類模組和知識篩選模組。讓我們一起來看看它的建立流程吧。

2.搭建基於ChatGPT的智慧客服助手

2.1 ChatGPT原理

ChatGPT為Open AI開發的LLM,GPT的全稱是Generative Pre-Trained Transformer。ChatGPT屬於GPT系列的預訓練語言模型,GPT系列模型包括GPT-1,GPT-2和GPT-3,GPT系列模型的引數量見下表。


模型釋出時間層數引數量
GPT-12018-06121.17億
Bert2018-10121.15億
GPT-22019-024815億
GPT-32020-05961750億


模型規模的指數級擴張,帶來了模型理解能力質的躍升。但是模型的理解並沒有與使用者的意圖做對齊。ChatGPT以GPT-3為基礎,訓練網路採用了提示學習(Prompt Learning)和人類反饋的強化學習來訓練網路,使模型可以聽從指令,輸出對人類有用,可信和無害的回答[1-2]。提示學習屬於元學習的一種,透過將任務資訊告訴模型,訓練網路學會學習(learn to learn)。這種方式將NLP各種任務都歸一為文字生成任務。提示學習挖掘模型本身已經學到的知識,指令(Prompt)可以激發模型的補全能力。而基於人類反饋的強化學習,根據人類對預測內容的偏好,訓練了一個獎勵函式,將這個反應人類偏好的獎勵函式作為強化學習的獎勵,透過最近策略最佳化(proximal policy optimization)訓練網路策略使獎勵最大。

2.2 Prompt設計

ChatGPT好比一個知識庫,想要從這個知識庫獲取我們需要的知識,需要清晰的指令。透過清晰指令告訴ChatGPT它要完成的工作是什麼,以及要完成工作需要的詳細步驟,同時給出一些簡單的示例,可以幫助ChatGPT更好地理解並執行我們的指令。一個標準的指令由以下五部分組成:

(1)任務描述

(2)背景知識注入

(3)輸出格式地約定

(4)舉例說明,包括樣例輸入,樣例輸出

(5)給出輸入資料

這裡以轉轉智慧客服為例,設計這個場景的Prompt:

現在你的身份是一個電商客服,請根據下面給出的商品資訊和質檢資訊,回答使用者的問題,回答問題時要根據商品資訊和質檢資訊相關項給出精簡的答案。商品引數:{$product_info},質檢資訊:{$quality_info}。

AI:請問您有什麼問題要諮詢的嗎?

user:電池有維修更換嗎?

AI:根據質檢報告電池檢測項,該電池由平臺更換,更換電池品牌為全新海斯電池。

User:電池容量是多大?

整個Prompt可劃分為四部分,第一部分介紹任務,第二部分做知識注入,變數product_info和quality_info分別對應商品詳情和質檢報告,第三部分做任務舉例,第四部分給出使用者問題。LLM具有few-shot學習能力,透過幾個簡單的例子告訴模型期待的答案是什麼,可以引導LLM按照我們預期的方式完成任務。此時我們得到的ChatGPT的答覆是電池容量為2815mAh。

這裡以人工客服採納智慧客服建議的接納度來衡量智慧客服的服務質量。商品引數諮詢問題的採納度為20%,質檢項諮詢的採納度為6.4%,而閒聊問候和優惠活動這種型別的諮詢更偏好人工客服。基於ChatGPT的智慧客服,使用者問題的響應耗時在5-10s,人工客服的響應耗時在30s左右,智慧客服的響應速度更快。ChatGPT API的呼叫按token收費。目前智慧客服執行成本0.12元/會話。

3.智慧客服系統二期最佳化之使用者問題分類

不同型別的使用者諮詢,智慧客服給出建議的採納度也有較大差異。在商品引數諮詢和質檢項諮詢問題上,智慧客服意見的採納度較高,幫助人工客服提高使用者問題的響應速度。而對於閒聊問題等問題,智慧客服給出的建議採納度較低。

在ChatGPT智慧客服模組前置一個使用者問題分類模型,將分類結果為商品引數諮詢和質檢報告諮詢的問題送至基於ChatGPT的智慧客服系統,進一步降本增效。使用者問題分類模型採用 Bert做文字分類任務。接下來簡要介紹Bert分類在該場景的應用。

3.1 Bert簡介

Bert為2018年穀歌提出的預訓練語言模型[3],模型採用了Transformer的Encode端,基於多頭自注意力機制捕獲句子中的上下文資訊。預訓練階段採用完形填空任務和上下句判斷任務訓練網路。應用於下游任務時,可採用CLS位的特徵向量作為句向量,在網路後接入Linear層進行句子的分類。

基於ChatGPT的智慧客服助手

Bert模型在預訓練階段採用了33億文字語料進行訓練,網路對自然語言已有基本認知。基於Bert預訓練模型,去微調下游任務,在很多領域都取得了很好的效果。

3.2 使用者問題分類網路訓練資料

人工標註使用者問題分類的資料耗時較長,這裡採用ChatGPT給出使用者問題的分類,作為Bert 微調階段的訓練資料。

設計分類任務的Prompt:

請對使用者問題進行文字分類,需要按照要求將使用者的問題分類到:[ '商品引數諮詢', '質檢報告諮詢','售後諮詢', '平臺政策', '活動優惠', '閒聊問候']類別中。

User:這個手機記憶體是多大?

AI:商品引數諮詢

User:電池有拆修嗎?

AI:質檢報告諮詢

User:下單後從哪裡發貨?

AI:售後諮詢

User:支援7天無理由退貨嗎?

AI:平臺政策

User:你好

AI:閒聊問題

User:謝謝!

AI:閒聊問候

User:待機時長是多久?

3.3訓練分類模型

訓練資料集準備好後,開始微調Bert。網路的輸入為句子,文字經過分詞器進行分詞後,得到切分好的token序列。Bert輸入token的最大長度不得超過512,對於超長的序列,進行截斷操作。在文字的頭尾加入”[cls]”和”[sep]”後,會進行padding操作,方便網路進行批次化訓練。根據Bert的字典將處理好的序列對映為對應的id,就可以送入網路進行訓練。由於自注意力無法捕捉位置資訊,Bert在token embedding上疊加了位置embedding。

基於ChatGPT的智慧客服助手

接下來定義模型的結構,程式碼如下:

Import torch.nn as nn
from transformers import BertModel
class Classifier(nn.Module):
    def __init__(self,bert_model_path,num_classes):
        super(Classifier,self).__init__()
        self.bert = BertModel.from_pretrained(bert_model_path)
        self.dropout = nn.Dropout(0.1)
        self.fc = nn.Linear(768, num_classes)
    def forward(self,tokens,masks):
        _, pooled_output = self.bert(tokens, attention_mask=masks,return_dict=False)
        x = self.dropout(pooled_output)
        x = self.fc(x)
        return x

Bert模型產出的特徵維度為768,經過Dropout層隨機mask一定比例的權重,送至Linear層,將特徵向量對映到Label空間,num_classes對應了Label空間的維度,這裡我們要分類的種類有6類。訓練採用AdamW最佳化器,學習率為1e-5,訓練了10輪。測試集上準確率76.6%,f1 0.754。商品引數諮詢的f1 0.791,質檢報告諮詢的f1 0.841。

基於ChatGPT的智慧客服助手

透過前置的使用者問題分類模型,幫助智慧客服系統篩選掉了一些採納度低,適合人工客服回答的問題,智慧客服系統響應使用者會話的成本降到了0.033元/會話,執行費用降低了72.5%。

4.智慧客服系統三期最佳化之商詳和質檢項相關知識篩選

搭建智慧客服時Prompt包含了商品的全部商品詳情和質檢項資訊,並未考慮這些項與使用者問題的相關性。比如使用者問題是電池相關的,做商品詳情和質檢項的知識注入時,可以只注入電池相關的知識。token數量越長,ChatGPT處理所需時間也會越長。透過篩選與使用者問題相關的商詳和質檢項做知識注入,可以進一步壓縮完成一次會話所需token的數量,降低智慧客服的執行成本的同時,也提升智慧客服的響應速度。

Bert計算兩個句子相似度時,把兩個句子同時輸入Bert,進行資訊互動,計算速度是比較慢的,無法事先計算好句向量,語義搜尋時比較慢。Sentence-Bert借鑑了孿生網路的框架,將兩個句子送入兩個Bert模型中,這兩個模型的引數是共享的,網路結構[4]如下圖所示。Bert網路輸出每個token的embedding向量,透過pooling策略生成句向量的表徵。論文中分別用"[CLS]"位,平均池化,最大池化生成句向量的表徵,實驗表明pooling策略採用平均方式效果最好。得到的句向量計算兩者的餘弦相似性,用來衡量這兩個句子的相似度。

基於ChatGPT的智慧客服助手

假設使用者問客服“電池具體多少?”,客服拿到的使用者點選商品的詳情:95新 iPhone 12 128G 紫色 移動5G 聯通5G 電信5G 國行;網路制式:全網通;購買渠道:國行;保修情況:過保或小於30天;電池健康值:85%-90%;系統版本:iOS 16.5.1;充電次數:562;SIM卡:支援雙卡;來源:二手優品;IMEI:352***833;履約服務資訊:真的官方驗、7天無理由、一年平臺質保、順豐包郵、手機服務權益卡、寄存於長沙流轉中心,現在下單預計8月17日送達;CPU型號:蘋果 A14;電池容量:2815mAh;CPU主頻:3.0GHz;解鎖方式:面部識別;是否支援快充:支援;充電峰值功率:20W;解析度:2532*1170;螢幕尺寸:6.1英寸;主屏材質:OLED;上市時間:2020-10;作業系統:iOS;螢幕型別:全面屏;後置攝像頭:1200萬畫素+1200萬畫素;前置攝像頭:1200萬畫素;攝像頭總數:三攝像頭(後二);機身重量:162g;機身尺寸:146.7*71.5*7.4mm;機身型別:直板。

客服拿到的使用者點選商品的質檢報告樣例(省略部分質檢項):外殼外觀的情況-碎裂:無;外殼外觀的情況-劃痕:無;外殼外觀的情況-磨損:無;外殼外觀的情況-變形:無;外殼外觀的情況-脫膠/縫隙:無;外殼外觀的情況-外殼/其他:正常;外殼外觀的情況-刻字/圖:無;外殼外觀的情況-磕碰/掉漆:無;攝像頭外觀的情況-閃光燈:正常;攝像頭外觀的情況-前置攝像頭:正常;拆修浸液的情況-主機板:無維修;拆修浸液的情況-機身:無維修更換;拆修浸液的情況-零件維修/更換:無維修更換;拆修浸液的情況-零件缺失:無缺失;拆修浸液的情況-浸液痕跡:無浸液痕跡;充電的情況-無線充電:正常;充電的情況-有線充電:正常;電池檢測的情況-電池:無維修更換;包裝及配件的情況-包裝盒:1;包裝及配件的情況-資料線:無;包裝及配件的情況-充電器:無。

可以看到商品詳情和質檢項裡只有少數項與使用者問題相關,全部商詳和質檢項做知識注入會浪費很多token,導致ChatGPT需要在很長的序列裡找相關資訊回答使用者問題,響應速度較慢,效率不高。這裡透過Sentence-Bert計算使用者問題和商詳、質檢項的句向量,根據餘弦相似性挑選出最相關的top5商詳和質檢項做知識的注入,ChatGPT基於該商品電池相關的知識給出使用者響應。Top5商詳如下:電池容量:2815mAh,電池健康值:85%-90%,充電次數:562,充電峰值功率:20W,機身尺寸:146.771.57.4mm,top5質檢項如下:充電的情況-有線充電:正常,電池檢測的情況-電池:無維修更換,充電的情況-無線充電:正常,按鍵的情況-電源鍵:正常,包裝及配件的情況-充電器:無。此時ChatGPT智慧客服給出的響應為“電池容量為2815mAh”。原始知識注入token數為1228,經過相關知識篩選,token數降為132,token數下降了89%。

基於ChatGPT的智慧客服助手

5.總結

LLM具有的出色自然語言理解能力可以為各行各業賦能。傳統人工客服領域具有高度依賴人工,資料密集等特點,大量未被充分處理的資料為LLM在這個場景落地提供了沃土。這裡基於ChatGPT搭建的智慧客服系統已上線,助力客服提高服務質量與服務效能。

6.參考文獻

[1] Ouyang L , Wu J , Jiang X ,et al.Training language models to follow instructions with human feedback[J].arXiv e-prints, 2022.DOI:10.48550/arXiv.2203.02155.

[2] Brown T B , Mann B , Ryder N ,et al.Language Models are Few-Shot Learners[J]. 2020.DOI:10.48550/arXiv.2005.14165.

[3] Devlin J , Chang M W , Lee K ,et al.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[J]. 2018.DOI:10.48550/arXiv.1810.04805.

[4] Reimers N , Gurevych I .Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks[J]. 2019.DOI:10.18653/v1/D19-1410.


關於作者

王安,資深NLP演算法專家,負責搜尋場景的使用者意圖理解,基於ChatGPT的智慧客服的落地,在文字分類,實體識別,關係配對,問答場景有豐富落地經驗。微訊號:tiantian_375699720,歡迎建設性交流。

未來屬於為它做準備的人;腳下有路,未來可期。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027828/viewspace-2988667/,如需轉載,請註明出處,否則將追究法律責任。

相關文章