做過了40+個機器人的總結:對話機器人核心功能要點
導語:本文作者前后經歷了40+個機器人的搭建、設計與運營,同時從0-1構建了機器人對話平臺。通過對過往經驗的復盤總結,作者對“對話機器人”的核心功能要點做了梳理與總結,希望這篇文章對你有所幫助,歡迎大家討論。
一、對話概述
在講對話核心功能之前,我們先看一下,什么是對話?
對話是對話雙方基于某個話題,通過語言進行信息交互的過程。比如:你早上起來,你媽媽跟你的對話:
Mother:早餐想吃啥?我給你煮
你:我喝點粥就好了
Mother:那煎荷包蛋給你吃吧
你:好嘞,我剛想吃
Mother:要一個還是兩個?
你:一個就好了
Mother:再給你弄點腐乳吧
你:好呀
1.1 對話組成部分
對話的定義中,有幾個關鍵的組成部分。
1.1.1 對話雙方
即一個對話中的信息傳遞與交互者,這里一般指的是雙方的對話,若是超過2人,則視為“群聊”??梢韵胂胛⑿胖械亩x:單聊和群聊。
在上述的例子中,對話雙方就是你和你媽媽。你們倆通過語言進行信息的交互,如果你爸也參與進來,那就是三方的對話。相較于雙方的對話,三方(或更多)的對話,在信息交互上更為復雜些,這不在我們的討論范圍內。
1.1.2? 話題
一個對話的進行,必定有其對應的話題,話題與對話雙方的核心需求相關聯。
沒有話題的對話,幾乎不存在。當然,你可能會說,那我就漫無目的的閑聊唄,沒有固定話題呀。是的,這里我們把“閑聊”也看做一個話題。
“閑聊”雖然看起來漫無目的,但是其本質也是為了滿足對話雙方的需求與目的。如果沒有這個需求,那雙方可能連說話/打字都懶得動,故這里把“閑聊”也定義為某個話題。
在上述的例子中,你和你媽媽這個對話的話題就是“吃早餐”,為什么有這個話題?
因為你媽媽關心你早餐吃什么,你不論出于真的想吃早餐也好,想讓你媽媽放心也好,都是基于“吃早餐”這個話題,跟你媽媽聊幾句。當然你除了聊“吃早餐”,你可能也會在對話中,突然想起你昨天到的快遞,進而問你媽媽“快遞是不是拿了”。
此時,對話就變成了多個話題:“吃早餐”、“是否拿快遞”。
一個對話中,可能只有1個話題,也可能有多個話題。詳情你可以回想下生活中的各種對話。當多個話題交織在一起時,對話的結構也會變復雜。但是,幾乎沒有對話是沒話題,對話雙方在那兒對話的(想想是不是挺詭異),這種“牛頭不對馬嘴”的對話,同樣也不在我們的討論范圍內。
1.1.3 語言
語言是信息的載體。在對話中,基于話題,對話雙方是需要語言來交流的,語言可以通過語音(也就是說話)、文字(也就是打字)來表達。
而我們為什么需要語言呢?因為語言主要是來傳遞人要表達的信息的,再看上述的例子:你媽媽說:“早餐想吃啥?我給你煮”.
為啥你媽媽要這么說?因為你媽媽要知道你“早餐想吃啥”這個信息,因為獲取這個信息,她才能進行接下去的動作:你想喝粥,她就煮粥;你想吃包子,她就熱包子;你想吃龍蝦,她可能就把你抓過來打你頭并說:“一大早你腦子是睡傻了吧你”。
同樣的,你說“我喝點粥就好了”,也是通過語言來傳遞“你想喝粥”的信息給你媽媽,讓她接收到這個信息,你們倆都在使用語言傳遞各自想要表達的信息。
當然,語音、文字這兩種方式,能承載的信息是有差別的。語音能承載的信息更多,因為有語調、語速等更多維度的信息。這個也是目前AI對話領域的ASR信息衰減的一個原因,此處在不贅述。
1.1.4 信息交互
對話的本質在于對話雙方間的信息交互。信息交互是讓對話進行的必要條件。
比如上述的例子中,你媽媽問你:“早餐想吃啥?我給你煮”。而你沒回應她,繼續玩弄自己的手機。那你媽媽會怎么樣呢?你媽媽大概率會再問你一次“早餐想吃啥?”(生氣值上升20%)。
為什么?因為在對話中,信息是需要交互的。你沒有回應你媽媽問你的話,這是信息的單向傳遞,你媽媽并沒有獲取到她想要的信息,所以她再問了你一次。假如你再不回答,那對于這個話題,對話就進行不下去了。你媽媽可能開始質問你,對話的話題就轉變為另一個:“為什么你媽媽問你話你不答”。
所以,信息交互對于對話而言,是至關重要的組成部分,也是讓對話進行的基石。
1.2 機器人在對話中的職責
在講機器人在對話中的角色與職責前,我們先來看一下,機器人能做的事情是什么?對話機器人的興起,得益于本次AI中的NLP領域的發展??捎糜趯υ挼腁I能力有什么呢?
- 語義識別能力:意圖識別、實體識別、語義相似度識別
- 知識構建與識別能力:知識圖譜
看著似乎挺抽象是吧?沒事,我們后面會具體講。簡單地說,現在的AI技術決定了對話機器人可以解決的問題是:某個特定行業領域下,基于某類特定問題,提供簡單固定的解答/服務。
上述的“吃早餐”對話場景,如果是一個“早餐機器人”,它會怎么做呢?
假設它的工作流程是:詢問早餐需求->做早餐,那么,“詢問早餐需求”跟你的對話應該是這樣的:
Bot:早上好,請問你早餐想吃什么呢?(提供選項:粥,包子,面包,花生湯)
你:我想喝粥
Bot:好的。那您喝粥配荷包蛋可以嗎?
你:好啊,我剛想吃荷包蛋
Bot:吃一個還是兩個呢?
你:一個就好了
Bot:再配點腐乳嗎?
你:好呀
看完這段你可能會說:這效果不是跟我和我媽的對話一樣嘛!機器人真的有這么厲害嗎?
答案是NO,機器人并沒有那么厲害。為什么?我們從剛才說的對話機器人可解決的問題看。
1.2.1 特定行業領域的特定問題
上述的對話是基于“吃早餐”這個話題對應的“飲食”這類領域而定的。如果是所有領域(或者說是開放閾),機器人是處理不了的。
比如你突然問它:“我的快遞單號是多少”,它可能就沒法解答。因為它只是針對你“吃早餐”的機器人。問快遞單號的話,你可以打開淘寶,讓阿里小蜜機器人回答你:)
1.2.2 提供簡單固定的解答/服務
機器人只能提供固定流程的解答與服務,并不能解答復雜、隨機性太大的對話問題。
比如剛才的對話,機器人說:“早上好,請問你早餐想吃什么呢?”而你說:“有鍋邊糊嗎”(注解:鍋邊糊是福建早餐小吃)機器人可能壓根就不知道你在說什么。
因為機器人的這個問題,是有人為的預設值,若訪客回復內容,未落在預設值內,就會出現機器人無法處理的問題。
所以,在設計機器人時,需要了解當機器人發問后,訪客可能會說的內容。語言本身就是開放閾的內容,訪客會說什么,設計者只能按照概率大小去設計,盡量去覆蓋,并無法窮盡訪客的說法。
而訪客的語言,又受到個人因素、當時環境因素的影響,從本質上來說,這是永遠的矛盾點。
因此,對話機器人能解決的對話問題,是所有對話語言問題中的一部分,或者說一小部分。雖然對話機器人做不了非常智能、隨機性很大的對話問題,但是在某些領域,對話機器人還是可以很高效、便捷地幫人處理很多對話問題。
比如智能客服領域、系統內人力資源問答領域等等,這也是目前對話機器人的價值應用領域。
二、機器人對話
2.1 用戶對話場景
既然對話機器人是針對某個特定行業領域的對話,那么在設計對話功能之前,第一步是需要明確,對話機器人解決的是哪個行業領域,什么訪客,具體什么場景的的問題。這是對話機器人的框架與邊界,只有先確定,后面的設計才可以進行。
2.1.1 確定行業領域
比如:“電商行業”、“金融行業”、“醫療行業”等等,行業決定了訪客特性、機器人應答策略、機器人知識庫內容與結構。
2.1.2 確定對話場景
比如:“售后場景”、“售前場景”、“企業內部接待支持”、“微信群聊”等等。不同的對話場景,可能對應不同的對話目的,決定了機器人“該如何應答”。
場景往下拆分,根據顆粒度從大到小,又可分為:場景->意圖,指的是場景從大到小的拆分。
有的機器人根據業務需要,還會更細地拆分為:場景->主題->意圖(父意圖)->意圖(子意圖)。每個意圖下分別對應不同的機器人對話流程,同時流程間會設定各種規則,以應對在對話中訪客不同的發問情況。
如何確定對話場景?
一般需要AI訓練師/AI PM,根據行業內的場景情況,通過人工對話數據,或查閱相關資料/訪談的方式,了解行業場景特性,并拆分出具體的訪客意圖。
比如:在“電腦培訓售前場景”中,根據訪客對話場景,會劃分“咨詢網頁設計”、“咨詢JAVA課程”、“咨詢SEO課程”,“咨詢Python課程”等等。常見的,對話場景的數量,一般在20個-50個之間不等(當然,某些特定對話場景會超出這個范圍)。
對話場景的劃分,需遵循MECE原則:相互獨立,完全窮盡。即:所有意圖需覆蓋所有的訪客意圖情況(完全窮盡),且意圖之間盡量相互獨立,互不交叉(相互獨立)。這會為后續的應答策略,做一個良好的場景設定,讓后續的對話設計更好進行。
2.2 機器人應答策略
雖然不同的對話場景中,機器人具體的應答策略是不一樣的:比如售后場景的機器人主要以解答為主,而售前場景的機器人是引導訪客留聯。但是在所有場景的機器人中,是有一套適用于對話機器人設計的應答策略方法論的,差別點在于具體落地機器人的實現展示方式。
2.2.1 單輪對話、多輪對話
根據機器人與訪客對話形式的不同,可以將對話形態劃分為單輪對話、多輪對話,通俗地講即:你想讓機器人如何解決訪客的問題。
2.2.1.1 單輪對話:訪客問一個問題,機器人立即回答
比如:
訪客:“你們培訓地點是在哪兒???”
BOT:“我們是在海淀區知春路25號百事大廈13樓”
這類訪客問題中,訪客問的是一個客觀的,不隨訪客信息/其他信息等的不同而不同的回答。即:不論訪客是小明,還是小紅,“培訓地點”它永遠都是“海淀區知春路25號百事大廈13樓”。所以機器人只需要根據事實(通常將該類知識配置在知識庫中),直接回答即可。
由于其交互是一問一答,在一個對話輪次中即可解決問題,故稱之為“單輪對話”。
2.2.1.2 多輪對話:訪客問一個問題,機器人通過詢問訪客信息,根據訪客不同的信息作出回答
比如:
訪客:“我可以報六級英語培訓班嗎”
BOT:“請問下您通過四級英語考試了嗎?”
訪客:“通過了”
BOT:“嗯好的,您可以報六級英語培訓班的,這邊登記下您的信息”
這類訪客問題中,若要進行回復(無論是機器人/人工),則需確定某些參數信息才可回復?!笆欠裢ㄟ^四級英語考試”,是上述例子中的參數變量。
“通過”對應一個回答;“未通過”則對應另一個回答。機器人需要通過詢問訪客這些信息,才能進行回答。所以對話需要進行多輪的交互,一般為“機器人詢問-訪客答”的方式,故稱之為“多輪對話”。
這兩種對話形式,也構成了目前對話機器人的對話,是對話的框架基礎。為什么沒有其他類型的對話形式呢?
原因很簡單,因為現有的NLP技術,在支撐具體業務場景下,這兩種對話形式是最有效的?;蛘邠Q句話說,暫時沒有第三種方式讓機器人更好地服務訪客。
而對話機器人的設計,主要在于對話策略的設計,具體表現在對話流程的邏輯設計。單輪對話由于其一問一答的形式,基本不需要對話邏輯的設計,其重點在于知識的構建和回答的設計。所以,對話設計的重點,在于多輪對話的設計。
2.2.2 多輪對話設計
多輪對話的設計要點:場景、對話流程、信息流轉。
2.2.2.1 場景
定義對話場景,行業內機器人的做法主要是通過意圖定義場景。比如:“咨詢Python課程”這個意圖,通過對意圖的解答和服務,來完成機器人對話。
2.2.2.2 對話流程
這個是對話機器人的核心,包括:對話流程如何運轉、異常情況該如何處理、多輪對話與單輪對話的協作配合。
2.2.2.3 信息流程
對話內的信息,是對話的核心要素。所以需要設計:對話內信息如何流轉;同時,由于機器人是需要和對話外的系統做信息交流,所以也需設計對話外信息如何與對話內信息進行交互流轉。
2.3 核心功能要點
2.3.1 場景識別
場景識別,是對對話場景、用戶意圖的識別。這也是對話中體現AI技術運用的核心功能。行業內主流的做法,是用意圖來定義,對應的AI技術就是意圖識別,本質上是一種分類算法。
比如:“咨詢Python課程”這個意圖,需要提供訪客關于這個意圖的各式各樣的說法,進行模型訓練,從而“教會”模型去識別。所以需提供讓用戶可進行意圖定義、語料定義的功能,讓用戶可進行配置。
通常的做法是:
2.3.1.1 讓用戶構建語料
主要有2種方式:
- 讓用戶自行構想創建。但這種方式是及其枯燥和艱難的,因為定義一個意圖,需要幾十條甚至上百、上千條的對話語料(對模型來說,數據量越多越好)。對于用戶來說,任務艱巨且乏味;
- 抽取人工對話數據,通過系統推薦構建語料庫。這種方式是在用戶創建數條語料后,系統根據相似度,從人工對話數據語料中,推薦給用戶。用戶可自行決定添加/不添加,省去了自己憑空想象的枯燥過程。
2.3.1.2 讓用戶構建意圖句式
與第一種方式不同,這種方式是讓用戶抽象意圖的各種表達方式,通過一個句式,來涵蓋訪客的說法。句式內容可包括:關鍵詞、正則表達式、實體。通過配置詞順序、匹配度,來構建句式,從而實現匹配訪客說法的目的。
值得注意的是,這種構建方法,本質上是通過“寫規則”來設計,與AI的理念實際上是相反的。所以一般作為補充第一種方式使用。
其弊端也很明顯:往往句式寫多了,句式之間可能出現交叉、互斥的情況。而配置的人卻較難發現與調整。當句式越來越多后,就更難進行調整,對對話機器人實則是一種隱患。
當然,這種方式在機器人冷啟動時相當好用,這也是其存在的可能是最大的價值。
除了上述通過意圖來定義用戶場景外,還能通過其他維度進行定義。比如,通過關鍵詞、實體、正則表達式、變量,來定義用戶場景。
定義的維度越豐富,能支撐的業務也就越多,同時對于后續流程的處理,也就需考慮更為復雜的情況。所以基于當前需解決的業務形態來設計,至關重要。
2.3.2 流程邏輯
流程邏輯的構建,可以說是對話機器人的骨架。流程決定了對話機器人是否可為訪客提供價值。流程與場景一般是一一對應的關系,通常我們若用意圖來定義場景的話,那么每一個意圖,將會對應一個對話流程。
還是上述“電腦培訓行業”的機器人,當機器人向訪客詢問:“請問你想了解哪方面的培訓課程呢?”
- 訪客若說:“我想了解Python課”,那么對應意圖識別的結果為“咨詢Python課程”,于是進入“Python課程”的對話流程;
- 訪客若說:“我想了解JAVA課”,那么對應意圖識別的結果為“咨詢JAVA課程”,于是進入“JAVA課程”的對話流程。
當然,訪客也有可能什么都不說,或者壓根就不回答機器人的問題,只顧自己描述自己的問題。這就需要機器人設計者(AI訓練師),構建“無意圖”/“通用意圖”,來覆蓋訪客的各種場景,讓機器人應對自如。
以下講講流程邏輯功能設計中的關鍵要點:當你開始設計對話機器人時,你就會發現,對話機器人的骨架,其實是一棵對話樹。
除了對訪客問題的識別,通過AI能力進行外,這棵樹幾乎全部是由AI PM/AI訓練師,通過定義對話規則,來構成的。這也就是我們說的對話策略。而流程的設計,即使這棵樹的設計。
2.3.2.1 流程間邏輯
一個機器人中,必定有多個流程,一般數量在幾十個,流程間邏輯的設計尤為重要。
- 流程優先級
眾多流程中,當訪客的問題,同時滿足多個流程進入條件時,哪一個流程優先觸發?
通常的做法是,讓用戶給意圖/流程做一個優先級的排序。如按照編輯順序從上往下,越重要的意圖,用戶可以放在越前面。這是一種對于大多數場景有效的做法,但是真的就沒問題嗎?
答案是NO,比如:
訪客:“Python課和JAVA課,哪個好學???”
這種情況下,訪客意圖是“咨詢Python課程”,還是“咨詢JAVA課程”呢?
按照我們剛才說的策略,用戶意圖“咨詢Python課程”排在“咨詢JAVA課程”前面,則進入“咨詢Python課程”意圖的流程,反之則對換——這能解決訪客的問題嗎?
這是通過人工預判的方式,來提前設定訪客問題的意圖歸屬。而訪客的意圖,可能隨著對話場景、對話語境、自身情況的不同,而存在差異的。簡單來說,就是我們用一種簡單的一刀切的方式,來解決訪客的可能復雜的意圖問題。這是一種概率押賭的方式,只能解決一大部分問題,而非所有問題。
很遺憾,目前的AI技術,只到這個能力,還尚未到真正的“人工智能”時代。所以技術不夠,產品來湊,需要產品經理來不足AI不好解決的問題。
我們的做法是,針對這句訪客問題,可用知識圖譜進行答疑(當然也可配置FAQ+規則,但是需要做的排列組合較多,如:Python+JAVA;Python+C語言,等等),同時進入一個“無意圖”的流程。通過進一步詢問來確定訪客的意圖及對應的流程。
- 流程間跳轉關系
流程間分為同級流程,與父子流程。
同級流程:同級流程之間的跳轉,一般和流程中新意圖的識別有關。當訪客觸發新的意圖時,即做流程跳轉,比如:
訪客:“我想學Python”? ? —-進入“Python課程”流程
BOT:“可以的,我先了解下您的情況”
…
訪客:“C語言怎么樣?。俊?#8212;-跳轉至“C語言課程”流程
…
父子流程:子流程的準入條件,需為先觸發父流程。二者為并非同級關系,而是從屬關系。
比如:在醫療口腔中,“牙齒美白”與“冷光美白”是父子流程關系。因為“冷光美白”是“牙齒美白”中的一種方式。
訪客:“你們能做牙齒美白嗎?”? ? —-進入“牙齒美白”流程
BOT:“可以的,我先了解下您的情況”
…
訪客:“冷光的你們有沒有???”—-跳轉至“冷光美白”流程
…
一般而言,進入子流程后,將不再返回至父流程。因為子流程是更細的場景,對話機器人的服務原則是,進入更細的場景,即能提供更有針對性的服務。
- 流程執行唯一性
同級流程中,當流程執行后,訪客問題再次出發了該流程,是否可再次進入呢?
這個問題其實根據不同的行業與業務場景,策略的選擇是不一樣的。通常來講,對于售后服務等來說,重復進入同一個流程,要求是較低的。
同時由于詞槽收集可避免重復發問,所以可接受再次進入流程;而售前引導性的場景,就較為幾回再次進入同一流程,因為這樣往往會讓機器人看著更加“不智能”,降低訪客對服務的信任感,所以一般是不能再次進入的。
但是無論如何,這個問題都是在對話機器人中,流程邏輯設計中應考慮的要素。
2.3.2.2 流程內邏輯
流程內的邏輯,指的是當訪客進入某流程時,機器人的應答策略。
- 流程準入條件
前面說了,流程一般的準入條件為意圖。但一些較復雜的場景,除了意圖外,我們還可以用關鍵詞、正則表達式、實體、變量來定義訪客的場景,作為流程準入的條件。
流程準入條件,可以看成是流程的大門:條件定義得寬泛,則門越大,進入流程的訪客問題類別更少,在流程中需處理的情況就越多;條件定義得苛刻,則門越窄,進入流程的訪客問題類別越少,在流程中需處理的情況就越少。但是同時,需定義的流程數量也更多。
- 流程進展
流程進展是對話處理的關鍵。簡單來說就是,機器人如何發問?當機器人發問后,訪客的各種回復情況,怎么處理?
a. 機器人如何發問?
a)發問內容
發問內容與當前意圖下,機器人需獲取的信息相關。通常為設計者設計的固定詢問話術,進行發問。
這里順便提到AI技術:NLG,即對話生成??赏ㄟ^AI通過對話場景,生成相應的話術內容。但從實際效果來看,目前的NLG尚未達到業務對話要求,固定的話術效果會更好。
b)發問順序
發問順序通常是固定的預設順序。通常設計者會根據用戶場景,設計某個意圖下,機器人發問的具體順序。當然,在發問之前,若機器人已收集到相應信息,可做跳過處理。
b. 訪客回復后,機器人如何處理?
訪客回復后的處理,是對話流程往下進行的必要條件。機器人發問后,訪客的回應可能有幾種情況:
a)提供了機器人發問的信息
情況1:提供了單一信息,比如:
BOT:“你想咨詢什么課程呢?”
訪客:“Python課”
這種情況是最理想的情況。我們只需要設定不同信息下對應不同的對話分支走向即可,對話樹也即順利進行下去。
情況1:提供了多信息
BOT:“你想咨詢什么課程呢?”
訪客:“Python和JAVA的課程我都考慮”
這種情況中,AI算法會從訪客的回復中提取“Python”和“JAVA”兩個信息,并且并不知道訪客到底是想要哪個。這種情況就需要做特殊處理,有幾種常見的處理方式:
- 隨機選取一個信息,進行后續對話分支的執行;
- 構建句式,選取其中一個信息,作為分支執行的條件;
- 進入除預設分支外的默認/其他分支,執行后續的動作。
具體適用哪種策略,也需根據不同機器人而設計。
b) 訪客回復,但未提供機器人發問的信息
情況1:訪客的回復內容,未在預設的對話分支中,比如:
BOT:“你想咨詢電腦培訓的什么課程呢?”
訪客:“我想咨詢畫畫的班”
這種情況下,一般設計者也較難預知這種訪客的回復,一般會讓對話走“默認/其他”分支流程,以便讓對話繼續。當然,事后發現了問題,也可以通過補充對話分支的方式,來擴充機器人應答能力。
情況2:訪客的回復內容,新起了一個話題,比如:
訪客:“我想咨詢下Python課程”
BOT:“好的。請問您是什么學歷呢?”
訪客:“對了,你們的JAVA課怎么樣???”
這種情況,訪客已經新起了個話題“JAVA課”,對話可以進入“JAVA課”的意圖流程中。當然,也可以不進入,這就涉及到“新流程優先”還是流程內“分支優先”的問題。
一般而言,對于場景較為垂類,較無多話題交叉的對話,使用“分支優先”是更優的選擇;而對于對話中較長有多話題交叉的對話,使用“新流程優先”效果會更好一些。這也是策略的選擇,通過概率大小決定應答策略。
c) 訪客不回復
當機器人發問后,訪客不回復。有可能是訪客離開了對話,也有可能是訪客切換了應用程序(常見于手機中)。訪客若不提供相關的信息,對話不好進行下去。
處理的方式有:間隔一段時間(如幾十秒)后,機器人再次發問(話術可有所變化),以獲得相應信息;或是靜默等待,若訪客依然不回復,則自動填入信息默認值,執行下一步對話動作。
- 流程打斷處理
在機器人發問-訪客回復的多輪對話 交互中,我們預想的是訪客會按照我們預設的對話節奏進行。但是實際過程中,訪客并不在意機器人是按照什么規則、什么節奏進行對話的,所以會出現當機器人正在應答,訪客進行打斷的情況(特別是在語音機器人的場景中)。
一般的處理方式是:被打斷后,機器人暫?;貜?,等待訪客表述完。被打斷的流程,若進入了新的流程,一般會等新流程執行結束后,再次回到原有流程。這個可根據不同的流程而設定“打斷后恢復”的設置。
2.3.3 信息流轉
前文講了,對話中的信息流轉,是對話的重要屬性,信息流轉分為對話內與對話外的信息流轉。
2.3.3.1 對話內信息流轉
即通過獲取訪客信息,做信息的記錄、傳遞、更新與使用。其中,有兩個要素是最重要的:
- 實體:實體是系統獲取訪客信息的來源。可以通過AI的實體識別能力,也可通過定義關鍵詞庫的方式進行識別,這是信息獲取的源頭;
- 變量(詞槽):通過實體識別獲取了訪客信息后,需要存在一個載體中,這個載體就是變量(詞槽)。變量就像人體血液中的紅細胞一樣,獲取、運輸、更新對話信息,并把信息給對話的中控系統使用。可作為條件判斷的依據,也可作為話術的內容。
2.3.3.2 對話外信息流轉
在對話機器人中,對話信息不僅在對話中流轉,也可跟對話外部的系統做信息的交互,比如:
訪客:“幫我查一下明天的天氣”
BOT:“好的。明天北京天氣晴,氣溫15-23攝氏度?!?/p>
對話機器人需要通過外部系統(查天氣系統),才能獲取具體的天氣信息。其中,通過將具體的日期、地點信息傳遞給查天氣系統,獲取相應的天氣信息,這就是對話外信息流轉。
一般會設置接口調用的方式,通過設定接口和參數,與對話 機器人外的系統做信息交互。從而實現各種對話機器人技能的落地,如:查天氣、訂火車票、開電視、打開音樂等等
2.3.4 流程與知識庫協作
如果說流程是整個對話機器人的骨架,那么知識庫就如同機器人的血肉,因為機器人做答疑的一大部分內容,是通過知識庫進行的。而流程與知識庫需通過寫作配合,才能讓對話機器人在解答訪客問題的同時,又讓對話順利無縫地進展,從而最終達到對話目的。
流程與知識庫協作的策略,主要有以下2種:
- 訪客發送的每條信息,先使用知識庫做解答,后執行流程的動作與話術:該策略適用于“解答型服務”的對話。即:盡量解答訪客的每個問題,即使機器人的對話顯得啰嗦,也可接受。
- 當訪客回復未在預設的對話分支中時,才使用知識庫做解答
該策略適用于“引導性服務”的對話,對話重點在于讓對話引導的體驗更加,而不在于解答訪客的每個問題。兩種策略均各有利弊,側重點不同,提供的服務體驗也不同,可根據具體情況而確定。
三、總結
對話機器人產品,鑒于現有的AI技術,可以說有一大部分是需要AI PM做規則設計、策略設計的。
設計思路可概括為:用判斷概率的方式,選擇其對話策略。所以對話中有大量的邏輯設計、策略選擇,根據對話機器人所處的行業領域與用戶場景,做不同的取舍和側重點設計。
本文主要概述了對話機器人的設計要點,但有些要點中,又有其豐富的設計理念和實操細節,本文不在此方面贅述。后續會針對重點要素做詳細講解,希望對你有幫助。
作者:咖喱魚丸,5年PM經驗,2年AI PM經驗
本文由 @咖喱魚蛋egg 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
真心厲害?。。。。?! 一整個服氣~~~
期望可以和作者深入聊一下!真的受益匪淺!
期望和作者聊一下,有個合作
可以私聊~
牛