如何在 Rasa 聊天機器人自定義操作中傳送自定義 JSON 響應?


介紹

Rasa 聊天機器人的開發者友好型自定義操作允許生成任意 JSON 答案。它有助於開發動態和自定義的 JSON 答案。Rasa 聊天機器人是一個靈活的平臺,用於開發對話式 AI 聊天機器人。該範例將自然語言處理和會話管理結合在一起。使用自定義操作,程式設計師可以指示聊天機器人執行非常精確的任務。呼叫 API 和資料庫查詢都屬於此類。開發人員可以透過使用特定於每個使用者的動態材料和格式來利用自定義 JSON 答案,從而提高聊天機器人的可用性。

設定 Rasa 聊天機器人以傳送自定義 JSON 響應

要讓您的 Rasa 聊天機器人的自定義操作提供個性化的 JSON 響應,您需要執行一些額外的步驟。

**首先**,讓我們定義“自定義操作”的含義,它是指導機器人行為的 Python 程式碼片段。建立自定義操作以生成所需的 JSON 結構允許傳送個性化的 JSON 響應。這是一個返回 JSON 格式資料的自定義操作示例。

Python 程式碼:

from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher

class CustomAction(Action):
   def name(self) -> Text:
      return "action_send_json_response"

   def run(self, dispatcher: CollectingDispatcher,
      tracker: Tracker,
      domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
      # Generate the custom JSON response
      json_response = {
         "message": "This is a custom JSON response",
         "data": {
            "key": "value"
         }
      }
      # Send the custom JSON response
      dispatcher.utter_message(json_message=json_response)
      return []

其次,**域檔案中的自定義響應配置** 聊天機器人可以被程式設計為使用預定義的自定義響應模板,這些模板可以在 Rasa 域檔案中定義。透過定義具有 JSON 結構的模板,您可以配置唯一的 JSON 響應。因此,為了說明:

**YAML 程式碼:**

responses:
   utter_custom_json_response:
   - text: '{"message": "This is a custom JSON response", "data": {"key": "value"}}'

建立自定義 JSON 響應模板

在您的域檔案中建立響應模板是配置唯一 JSON 響應的另一種選擇。會話上下文可以以動態的方式整合到這些模板中。因此,為了說明:

**YAML 程式碼:**

responses:
   utter_custom_dynamic_json_response:
   - text: '{"message": "This is a custom JSON response", "data": {"entity_value": "{entity_name}"}}'

**第三**,在 Rasa 聊天機器人的自定義操作中建立自定義 JSON 響應

在自定義操作中訪問使用者輸入和上下文

要為 Rasa 聊天機器人建立獨一無二的 JSON 響應,您可以在自定義操作程式碼中訪問使用者輸入和當前上下文。“tracker”物件可訪問使用者輸入、聊天記錄和其他配置選項。“tracker.latest_message['text']”將返回最新的使用者訊息,而“tracker.events”將返回歷史事件。

以程式設計方式生成自定義 JSON 響應

您可以使用您自己的操作程式碼建立動態 JSON 響應。JSON 響應的結構以及填充它的內容可以根據使用者的輸入和所需的邏輯來確定。建立 JSON 格式的資料就像用鍵值對填充字典物件一樣簡單。然後,可以透過 dispatcher 物件將修改後的 JSON 答案發送回使用者。以下是一個程式碼片段:

**Python 程式碼:**

from typing import Any, Dict, List, Text
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class CustomAction(Action):
   def name(self) -> Text:
      return "custom_action"

   def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
      # Generate custom JSON response dynamically
      custom_response = {
         "key1": "value1",
         "key2": "value2",
         # Add more key-value pairs as needed
      }

      # Send the custom JSON response
      dispatcher.utter_message(json_message=custom_response)
      return []

格式化自定義 JSON 響應

可以修改返回的 JSON 資料的結構和內容以滿足您的需求。無論是文字、圖形、按鈕還是其他內容,您都可以隨意包含它。響應必須以與 JSON 語法規範相容的方式進行結構化。聊天機器人的預期功能依賴於格式良好的 JSON 響應。

**接下來**,從 Rasa 聊天機器人的自定義操作傳送自定義 JSON 響應

場景概述

在這個例子中,我們將向您展示如何使用 Rasa 聊天機器人中的自定義操作來發送個性化的 JSON 響應。讓我們假設聊天機器人的任務是透過查詢資料庫來詳細回答使用者關於特定產品的問題。

在 Python 中定義自定義操作

首先,將定義一個 Python 自定義操作來管理資料檢索機制。這是一個示例程式碼片段:

**Python 程式碼:**

from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher

class RetrieveProductInfoAction(Action):
   def name(self) -> Text:
      return "action_retrieve_product_info"

   def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
      # Logic to retrieve product information based on user input
      product_info = self.get_product_info(tracker.latest_message["text"]) 
      # Custom JSON response
      response = {
         "type": "product_info",
         "data": product_info
      } 
      dispatcher.utter_message(json_message=response)
      return []

建立自定義 JSON 響應模板

接下來,必須開發一個獨特的 JSON 響應模板,概述響應的結構。您可以透過新增或刪除部分來修改此示例以適應您的需求。因此,為了說明:

**JSON 程式碼:**

{
   "type": "product_info",
   "data": {
      "product_name": "",
      "description": "",
      "price": 0.0,
      "availability": ""
   }
}

從自定義操作傳送自定義 JSON 響應

在自定義操作的“run()”方法中,我們檢索必要的資料並將其儲存在“product_info”變數中。“product_info”然後與已建立的模板一起使用以生成個性化的 JSON 響應。為了完成此過程,我們透過“dispatcher.utter_message()”方法將解析後的 JSON 返回給使用者。

您可以按照這些說明操作並根據您的需求進行調整,讓您的 Rasa 聊天機器人提供自定義 JSON 響應。

測試和排除 Rasa 聊天機器人中自定義 JSON 響應的故障

為了確保 Rasa 聊天機器人中定製 JSON 響應的質量和功能,需要進行嚴格的測試和故障排除。必須採取以下步驟:

  • 執行本地測試以確保自定義操作的正確執行。

  • 調查自定義 JSON 響應中發生的常見問題,包括錯誤的格式或不完整的資料檢索。

  • 檢查在 Rasa 聊天機器人框架內生成和傳遞的自定義 JSON 響應是否正確。

開發人員可以透過遵守這些測試和排除自定義 JSON 響應故障的技術來確保其 Rasa 聊天機器人實現的穩健性和效率。

Rasa 聊天機器人自定義操作中自定義 JSON 響應的最佳實踐

為了提高響應的可讀性和可維護性,務必使用明確的鍵和值以 JSON 格式排列它們。

適應各種情況的個性化 JSON 響應:根據使用者意圖或操作修改 JSON 響應,以實現更細緻和相關的對話。

**自定義 JSON 響應的錯誤處理和回退**:聊天機器人優雅地處理意外事件並向用戶提供有益資訊的能力取決於在 JSON 響應中實現的複雜的錯誤處理機制和回退策略。

結論

本節的結論簡要總結了關於 Rasa 聊天機器人 JSON 響應的自定義操作中涵蓋的主要要點。首先,我們將回顧自定義 JSON 響應的工作原理及其用途。然後,文章描述了自定義 JSON 響應在聊天機器人建立中的用途和方式。最後,它強調了透過更好地利用特定 JSON 響應來改進聊天機器人互動的重要性。此強大的功能使開發人員能夠根據每個使用者的需求定製 Rasa 聊天機器人互動。

更新於:2023 年 9 月 29 日

423 次檢視

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告