自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于狀態(tài)機的聊天機器人設計經驗總結

人工智能 機器人
意圖定義現在與執(zhí)行部分解耦,但仍然是一個單獨的子語言。對于每個意圖,我們只需提供一些訓練句子,讓機器人能夠識別出用戶話語的意圖,并從中提取所需的參數。

為了更好地了解智能機器人項目的需求和改進方向,我們常常需要研發(fā)一些工具。在我參與的多個機器人項目中,大多數都能夠成功地滿足產品需求。通過這些實踐,我們深刻認識到,如果要不斷進步和提高,就必須對現有的機器人定義語言進行重大的改進。

  • 簡化需要復雜對話流程的機器人的創(chuàng)建過程。
  • 最大限度地提高可重用性,通過重用過去已經定義過的模塊和對話路徑來創(chuàng)建機器人

在傳統(tǒng)的做法中,完成這些并不容易,因為意圖定義與部分排序約束混合在一起,限制了對話路徑的自由度。這對于處理“開放式”機器人(常見于FAQ樣式的機器人),其中大多數問題是獨立的且始終可用的,這已經足夠了。但對于更“封閉”的機器人來說,潛在的對話限制要多得多(比如用于從在線訂票機器人)。

為了將聊天機器人定義語言的功能提升到一個新的水平,在一些項目中我們引進了更接近狀態(tài)機語義的DSL,并完全將意圖定義與控制機器人執(zhí)行定點可用意圖的轉換規(guī)則分離,這么做有以下優(yōu)勢:

  1. 新機器人中可以復用以前的意圖,即使設置的對話路徑不同。
  2. 可以使用狀態(tài)機定義復雜的對話流,讓機器人保持清晰和精確的語義。
  3. 可以創(chuàng)建復雜的狀態(tài)守護來控制轉換。根據用戶輸入、即將發(fā)生的事件以及之前的數據、對話參數等,將機器人移動到新狀態(tài)。
  4. 可以使用狀態(tài)主體來存儲復雜的對話邏輯,以響應用戶請求。
  5. 可以將機器人模塊化,以便在其他機器人中重用部分狀態(tài)機。
  6. 可以將本地回退定義為狀態(tài)行為的一部分。除了默認的全局回退,還可以將本地回退與狀態(tài)相關聯,以便在狀態(tài)上下文中處理錯誤,比如顯示一條消息,幫助用戶回答機器人在對話中的特定狀態(tài)下提出的問題。

意圖定義語言

意圖定義現在與執(zhí)行部分解耦,但仍然是一個單獨的子語言。對于每個意圖,我們只需提供一些訓練句子,讓機器人能夠識別出用戶話語的意圖,并從中提取所需的參數。

舉個例子,我們有一個簡單的機器人,它只能理解兩種類型的用戶話語:問候和陳述姓名。我們可以為每種話語類型提供幾個示例句子,讓機器人學會如何識別它們。當用戶輸入一個話語時,機器人會根據它的意圖執(zhí)行相應的操作,并從中提取所需的參數。

intent Hello {
inputs {
"你好"
"早上好"
}
}

intent MyNameIs {
inputs {
"我的名字叫小明"
"我是小明"
"你可以叫我小明"
}
creates context Greetings {
set parameter name from fragment "小明" (entity any)
}
}

我們?yōu)槊糠N意圖提供一些樣本句子,來訓練機器人如何識別它們。此外,在某些情況下,我們還會在上下文中收集一些參數(例如,用戶的姓名),以便以后能夠更個性化地回答用戶。

我們還沒有具體說明機器人應該先嘗試匹配哪種意圖,這是執(zhí)行部分語言的內容。這種方法使我們能夠重復利用這些意圖(例如,在另一個機器人中,我們可能需要詢問用戶的姓名,而不僅僅是在問候意圖之后)。

執(zhí)行定義語言

使用執(zhí)行文件來定義一個狀態(tài)機,描述機器人如何響應意圖/事件,并且可以進行轉換。這使得機器人的設計者可以查看執(zhí)行文件,了解整個對話流程。

執(zhí)行語言中的每個狀態(tài)包含 3 個部分

  • Body (可選):機器人在進入狀態(tài)時執(zhí)行的反應。
  • Next (必選):定義了出站轉換,表示為 condition –> State。 當接收到事件/意圖時,會評估條件,如果滿足轉換,則執(zhí)行引擎會移動到指定的狀態(tài)并執(zhí)行其相應的反應。需要注意的是,轉換條件可以非常復雜。 它們是真正的守衛(wèi),這意味著如果整個條件不為真,則轉換不可導航,引擎將保持當前狀態(tài)。
  • Fallback (可選):此部分可以包含任意代碼(就像 Body 部分一樣),如果引擎無法找到可導航的轉換,則會執(zhí)行這些代碼。

執(zhí)行模型還包含 2 個特殊狀態(tài):

  • Init:是創(chuàng)建用戶會話時進入的常規(guī)狀態(tài)。它可以包含 Body、_Next_和 Fallback 部分。
  • Default_Fallback:它只能包含 Body 部分,并且不能作為轉換的目標狀態(tài)。該狀態(tài)表示在當前狀態(tài)中未定義本地回退時執(zhí)行的默認回退代碼。該狀態(tài)可用于打印通用錯誤消息(例如,“抱歉,我沒明白您的意思”),而本地回退則可以打印針對當前狀態(tài)的定制消息(例如,“請回答是或否”)。

最后,一個狀態(tài)可以定義一個單一的通配符轉換(使用保留字符___作為轉換條件),當計算狀態(tài)主體時將自動導航。這使我們能夠在多個地方重用相同的代碼并模塊化執(zhí)行邏輯。下面是一個簡單的機器人示例,它只回復問候意圖,詢問用戶名并向用戶問好。這個機器人的回復可以通過我們基于 React 的聊天小部件顯示。

//We can always have an init state in case we need to initialize some bot parameters (e.g. welcoming message)
Init {
Next {
//Here we state that the bot will first listen for an utterance matching the Hello intent, it will ignore anything else
intent == Hello --> HandleHello
}
}
HandleHello {
Body {
ReactPlatform.Reply("你好, 你叫什么名字?")
}
Next {
//We wait for the user to input the name, no other transition is possible at this point
//Obviously, in more complex bots we may have several possible outgoing transitions in a given state
intent == MyNameIs --> HandleMyNameIs
}
}
HandleMyNameIs {
Body {
ReactPlatform.Reply("你好 " + context.get("Greetings").get("name"))
}
Next {
// An automatic transition to the Init state since at this point the conversation is finished and we can start again
_ --> Init
}
}
// Default Fallback state could go here


責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-10-25 12:15:39

2022-07-03 10:23:06

機器人場景個性化

2022-07-05 06:42:01

聊天機器人人工智能

2013-01-18 09:05:35

設計需求

2016-10-25 14:42:52

白宮開源機器人代碼

2020-02-02 09:19:14

聊天機器人機器人智能

2024-04-24 11:31:03

金融服務聊天機器人人工智能

2016-02-16 14:46:33

聊天機器人機器學習自然語言

2023-10-30 11:22:19

聊天機器人云計算

2020-10-10 09:42:03

聊天機器人機器學習人工智能

2023-03-07 07:52:47

ChatGPT人工智能

2024-09-02 08:17:53

RAG聊天機器人人工智能

2017-03-28 12:21:21

機器人定義

2019-12-19 16:08:40

人工智能機器人數據

2023-06-29 15:04:21

微軟ChatGPT

2023-12-18 19:05:34

2015-09-30 14:40:47

WebAPI接口設計

2021-10-28 22:46:13

Python機器人數據

2019-06-04 08:00:00

機器人聊天機器人人工智能
點贊
收藏

51CTO技術棧公眾號