如何从 Rasa Chatbot 的自定义操作发送自定义 JSON 响应?

machine learningartificial intelligenceprogramming

简介

Rasa Chatbot 的开发者友好型自定义操作允许生成任意 JSON 响应。它有助于开发动态和自定义的 JSON 响应。Rasa Chatbot 是一个灵活的平台,用于开发对话式 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 Chatbot 的自定义操作中创建自定义 JSON 响应

在自定义操作中访问用户输入和上下文

要为 Rasa Chatbot 创建独一无二的 JSON 响应,您可以在自定义操作代码中访问用户输入和当前上下文。用户输入、聊天历史记录和其他配置选项都可以通过"tracker"对象访问。"tracker.latest_message['text']"将返回最新的用户消息,而"tracker.events"将返回历史事件。

以编程方式生成自定义 JSON 响应

您可以使用代码为您自己的操作创建动态 JSON 响应。JSON 响应的结构和要填充的内容可以根据用户的输入和所需的逻辑来确定。创建 JSON 格式的数据就像使用键值对填充字典对象一样简单。修改后的 JSON 答案可以通过调度程序对象返回给用户。以下是代码片段:


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]]:
      # 动态生成自定义 JSON 响应
      custom_response = {
         "key1": "value1",
         "key2": "value2",
         # 根据需要添加更多键值对
      }

      # 发送自定义 JSON 响应
      dispatcher.utter_message(json_message=custom_response)
      return []

格式化自定义 JSON 响应

您可以根据需要修改返回的 JSON 数据的结构和内容。无论是文本、图形、按钮还是其他内容,您都可以自由添加。响应的结构必须符合 JSON 语法规范。聊天机器人的预期功能依赖于格式良好的 JSON 答案。

下一步,从 Rasa Chatbot 的自定义操作发送自定义 JSON 响应

场景概述

在此示例中,我们将向您展示如何使用 Rasa Chatbot 中的自定义操作发送个性化的 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]]:
      # 根据用户输入检索产品信息的逻辑
      product_info = self.get_product_info(tracker.latest_message["text"]) 
      # 自定义 JSON 响应
      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 Chatbot 框架内生成和交付的自定义 JSON 回复是否正确。

开发人员可以通过遵循这些技术来测试和排除定制 JSON 答案的故障,从而确保其 Rasa Chatbot 实现的稳健性和效率。

Rasa Chatbot 自定义操作中自定义 JSON 响应的最佳实践

为了提高回复的可读性和可维护性,使用明确的键和值在 JSON 中排列它们非常重要。

通过个性化 JSON 回复适应各种情况 - 根据根据用户意图或操作进行更细致、更相关的对话。

自定义 JSON 响应的错误处理和回退 − 聊天机器人能否妥善处理意外事件并向用户提供有用信息,取决于 JSON 响应中实现的复杂错误处理机制和回退策略。

结论

本节结论简明扼要地总结了与 Rasa Chatbot JSON 响应的自定义操作相关的要点。首先,我们将回顾自定义 JSON 响应的工作原理及其用途。然后,本文将介绍定制 JSON 响应在聊天机器人创建中的作用及其用途。最后,本文强调了更好地利用特定 JSON 响应对于改进聊天机器人交互至关重要。这种强大的功能使开发人员能够根据每个用户定制 Rasa Chatbot 交互。


相关文章