基於狀態機的聊天機器人設計經驗總結
為了更了解智慧機器人專案的需求和改進方向,我們常常需要研發一些工具。在我參與的多個機器人專案中,大多數都能夠成功地滿足產品需求。透過這些實踐,我們深刻認識到,如果要不斷進步和提高,就必須對現有的機器人定義語言進行重大的改進。
- 簡化需要複雜對話流程的機器人的創建過程。
- 最大限度地提高可重用性,透過重複使用過去已經定義過的模組和對話路徑來創建機器人
在傳統的做法中,完成這些並不容易,因為意圖定義與部分排序約束混合在一起,限制了對話路徑的自由。這對於處理「開放式」機器人(常見於FAQ樣式的機器人),其中大多數問題是獨立的且始終可用的,這已經足夠了。但對於更「封閉」的機器人來說,潛在的對話限制要多得多(例如用於從線上訂票機器人)。
為了將聊天機器人定義語言的功能提升到一個新的水平,在一些專案中我們引進了更接近狀態機語義的DSL,並完全將意圖定義與控制機器人執行定點可用意圖的轉換規則分離,這麼做有以下優勢:
- 新機器人中可以復用先前的意圖,即使設定的對話路徑不同。
- 可以使用狀態機定義複雜的對話流,讓機器人保持清晰和精確的語意。
- 可以建立複雜的狀態守護來控制轉換。根據使用者輸入、即將發生的事件以及先前的資料、對話參數等,將機器人移動到新狀態。
- 可以使用狀態主體來儲存複雜的對話邏輯,以回應使用者請求。
- 可以將機器人模組化,以便在其他機器人中重複使用部分狀態機。
- 可以將本地回退定義為狀態行為的一部分。除了預設的全域回退,還可以將本機回退與狀態相關聯,以便在狀態上下文中處理錯誤,例如顯示一則訊息,幫助使用者回答機器人在對話中的特定狀態下提出的問題。
意圖定義語言
意圖定義現在與執行部分解耦,但仍然是單獨的子語言。對於每個意圖,我們只需提供一些訓練句子,讓機器人能夠辨識出使用者話語的意圖,並從中提取所需的參數。
舉個例子,我們有一個簡單的機器人,它只能理解兩種類型的使用者話語:問候和陳述姓名。我們可以為每種話語類型提供幾個範例句子,讓機器人學會如何辨識它們。當使用者輸入話語時,機器人會根據它的意圖執行相應的操作,並從中提取所需的參數。
intent Hello { inputs { "你好" "早上好" } } intent MyNameIs { inputs { "我的名字叫小明" "我是小明" "你可以叫我小明" } creates context Greetings { set parameter name from fragment "小明" (entity any) } }
我們為每個意圖提供一些樣本句子,來訓練機器人如何識別它們。此外,在某些情況下,我們也會在上下文中收集一些參數(例如,使用者的姓名),以便日後能更個人化地回答使用者。
我們還沒有具體說明機器人應該先嘗試匹配哪個意圖,這是執行部分語言的內容。這種方法使我們能夠重複利用這些意圖(例如,在另一個機器人中,我們可能需要詢問使用者的姓名,而不僅僅是在問候意圖之後)。
執行定義語言
使用執行檔來定義一個狀態機,描述機器人如何回應意圖/事件,並且可以進行轉換。這使得機器人的設計者可以查看執行文件,並了解整個對話流程。
執行語言中的每個狀態包含 3 個部分
- Body (可選):機器人在進入狀態時執行的反應。
- Next (必備):定義了出站轉換,表示為 condition –> State。 當接收到事件/意圖時,會評估條件,如果滿足轉換,則執行引擎會移動到指定的狀態並執行其相應的反應。需要注意的是,轉換條件可以非常複雜。 它們是真正的守衛,這意味著如果整個條件不為真,則轉換不可導航,引擎將保持當前狀態。
- Fallback (可選):此部分可以包含任何程式碼(就像 Body 部分一樣),如果引擎無法找到可導航的轉換,則會執行這些代碼。
執行模型還包含 2 個特殊狀態:
- Init:是创建用户会话时进入的常规状态。它可以包含 Body、_Next_和 Fallback 部分。
- Default_Fallback:它只能包含 Body 部分,并且不能作为转换的目标状态。该状态表示在当前状态中未定义本地回退时执行的默认回退代码。该状态可用于打印通用错误消息(例如,“抱歉,我没明白您的意思”),而本地回退则可以打印针对当前状态的定制消息(例如,“请回答是或否”)。
最后,一个状态可以定义一个单一的通配符转换(使用保留字符___作为转换条件),当计算状态主体时将自动导航。这使我们能够在多个地方重用相同的代码并模块化执行逻辑。下面是一个简单的机器人示例,它只回复问候意图,询问用户名并向用户问好。这个机器人的回复可以通过我们基于 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
以上是基於狀態機的聊天機器人設計經驗總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

機器之能報道編輯:吳昕國內版的人形機器人+大模型組隊,首次完成疊衣服這類複雜柔性材料的操作任務。隨著融合了OpenAI多模態大模型的Figure01揭開神秘面紗,國內同行的相關進展一直備受關注。就在昨天,國內"人形機器人第一股"優必選發布了人形機器人WalkerS深入融合百度文心大模型後的首個Demo,展示了一些有趣的新功能。現在,得到百度文心大模型能力加持的WalkerS是這個樣子的。和Figure01一樣,WalkerS沒有走動,而是站在桌子後面完成一系列任務。它可以聽從人類的命令,折疊衣物

在工業自動化技術領域,最近有兩個熱點很難被忽視:人工智慧(AI)和英偉達(Nvidia)。不要改變原內容的意思,微調內容,重寫內容,不要續寫:「不僅如此,這兩者密切相關,因為英偉達在不僅僅局限於其最開始的圖形處理單元(GPU),正在將其GPU科技擴展到數位孿生領域,同時緊密連接著新興的AI技術。泰瑞達機器人及其MiR和優傲機器人公司。 Recently,Nvidiahascoll

人形機器人Ameca升級第二代了!最近,在世界行動通訊大會MWC2024上,世界上最先進機器人Ameca又現身了。會場周圍,Ameca引來一大波觀眾。得到GPT-4加持後,Ameca能夠對各種問題做出即時反應。 「來一段舞蹈」。當被問及是否有情感時,Ameca用一系列的面部表情做出回應,看起來非常逼真。就在前幾天,Ameca背後的英國機器人公司EngineeredArts剛剛示範了團隊最新的開發成果。影片中,機器人Ameca具備了視覺能力,能看見並描述房間整個狀況、描述具體物體。最厲害的是,她還能

這週,由OpenAI、微軟、貝佐斯和英偉達投資的機器人公司FigureAI宣布獲得接近7億美元的融資,計劃在未來一年內研發出可獨立行走的人形機器人。而特斯拉的擎天柱也屢屢傳出好消息。沒人懷疑,今年會是人形機器人爆發的一年。一家位於加拿大的機器人公司SanctuaryAI最近發布了一款全新的人形機器人Phoenix。官方號稱它能以和人類一樣的速率自主完成許多工作。世界上第一台能以人類速度自主完成任務的機器人Pheonix可以輕輕地抓取、移動並優雅地將每個物件放置在它的左右兩側。它能夠自主辨識物體的

微信,作為當下最受歡迎的社交軟體之一,提供了豐富的聊天功能。但有時,我們可能會遇到「不顯示該聊天」的情況,導致某些重要對話被隱藏。要恢復這些聊天,其實很簡單。只要依照以下這些步驟操作,就能輕鬆恢復被隱藏的聊天,繼續享受微信帶來的便利交流體驗。微信不顯示該聊天怎麼恢復?微信不顯示此聊天恢復方法方法一,嘗試直接在微信的訊息清單中搜尋該聊天物件的名稱或關鍵字。如果搜尋到了,點擊進入聊天介面,這樣就可以恢復顯示該聊天了。方法二,透過好友聊天恢復:開啟微信,點選通訊錄,找到被隱藏聊天顯示的好友,點選發送訊息

一眨眼的功夫,機器人都已經學會變魔術了?只見它先是拿起桌上的水勺,向觀眾證明了裡面什麼也沒有……然後,它又把手中雞蛋似的物體放了進去,然後把水勺放回桌子上,開始「施法」… …就在它把水勺再次拿起的時候,奇蹟發生了。原先放進去的雞蛋不翼而飛,跳出的東西變成了一個籃球……再來看一遍連貫動作:△此動圖為二倍速一套動作下來如行雲流水,只有把視頻用0.5倍速反复觀看,才終於發現其中的端倪了:如果手速再快一些,大概真的就可以瞞天過海了。有網友感嘆,機器人變魔術的程度比自己還要高:為我們表演這段魔術的,是Mag

近幾年最受消費者歡迎的智慧家電,掃拖機器人可謂是其中之一。它所帶來的操作便利性,甚至是無需操作,讓懶人們釋放了雙手,讓消費者能夠從日常的家務中「解放」出來,也能拿更多的時間花在自己喜歡的事情上,變相提高了生活品質。藉著這股熱潮,市面上幾乎所有的家電產品品牌都在做自己的掃拖機器人,一時間使得整個掃拖機器人市場熱鬧非凡。但市場的快速拓張必然會帶來一個隱患:很多廠商會採用機海戰術的方式快速佔領更多的市場份額,從而導致很多新品並沒有什麼升級點,說它是“套娃”機型也不為過。不過,並不是所有的掃拖機器人都是

以下10款類人機器人正在塑造我們的未來:1、ASIMO:ASIMO由Honda開發,是最知名的人形機器人之一。 ASIMO高4英尺,重119磅,配備先進的感測器和人工智慧功能,使其能夠在複雜的環境中導航並與人類互動。 ASIMO的多功能性使其適用於各種任務,從幫助殘疾人到在活動中進行演示。 2、Pepper:由SoftbankRobotics創建,Pepper旨在成為人類的社交伴侶。憑藉其富有表現力的面孔和識別情緒的能力,Pepper可以參與對話、在零售環境中提供幫助,甚至提供教育支持。 Pepper的
