如何在 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 次查看

启动您的职业生涯

完成课程获得认证

开始学习
广告