5 способов прекратить взаимодействие с ботами в Rasa: подробное руководство

В этой статье мы рассмотрим различные методы прекращения взаимодействия ботов в Rasa, популярной платформе с открытым исходным кодом для создания диалоговых чат-ботов с искусственным интеллектом. Если вы хотите предоставить пользователям возможность выйти из разговора или реализовать механизм тайм-аута, мы вам поможем. Мы подробно обсудим каждый метод и приведем примеры кода для вашего удобства. Давайте погрузимся!

Метод 1: триггер ввода пользователя
Один из самых простых способов прекратить взаимодействие с ботом — разрешить пользователям явно запрашивать выход. Вы можете определить конкретный триггер пользовательского ввода, например «выход» или «выход», и обрабатывать его в своих действиях Rasa. Вот пример:

# domain.yml
intents:
  - exit
# actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ExitBotAction(Action):
    def name(self) -> Text:
        return "action_exit_bot"
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        dispatcher.utter_message("Thank you for chatting with me. Goodbye!")
        return []
# stories.md
## Exit Conversation
* exit
  - action_exit_bot

Метод 2: механизм таймаута
Чтобы обеспечить автоматический способ завершения разговора при отсутствии активности пользователя в течение определенного периода, вы можете реализовать механизм таймаута. Для этого Rasa предоставляет параметр session_expiration_timeв файле config.yml. Вот как это можно настроить:

# config.yml
policies:
  - name: MemoizationPolicy
  - name: TEDPolicy
    max_history: 5
  - name: RulePolicy
    core_fallback_threshold: 0.3
    core_fallback_action_name: "action_default_fallback"
session_config:
  session_expiration_time: 600  # Timeout set to 10 minutes

Метод 3: настраиваемое действие
Вы также можете реализовать настраиваемое действие, которое проверяет наличие определенных условий и соответствующим образом завершает диалог. Например, вы можете захотеть завершить разговор после определенного количества ходов. Вот пример специального действия, которое завершает взаимодействие после трех ходов:

# actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class TerminateConversationAction(Action):
    def name(self) -> Text:
        return "action_terminate_conversation"
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        if len(tracker.events) >= 3:
            dispatcher.utter_message("We have reached the maximum number of turns. Goodbye!")
            return [ActionExecuted("action_restart")]  # Optional: Restart the conversation
        return []

Метод 4: возобновить разговор
В некоторых случаях вы можете предоставить пользователям возможность возобновить разговор с самого начала. Этого можно добиться, определив настраиваемое действие, которое сбрасывает состояние разговора. Вот пример:

# actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class RestartConversationAction(Action):
    def name(self) -> Text:
        return "action_restart_conversation"
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        return [Restarted()]

Метод 5: триггер внешнего события
Наконец, вы можете прекратить взаимодействие с ботом на основе внешних событий или условий. Например, вы можете захотеть завершить разговор, если определенный вызов API возвращает определенный ответ. Вот пример того, как этого можно добиться с помощью специального действия:

# actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ExternalEventAction(Action):
    def name(self) -> Text:
        return "action_external_event"
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        # Check external event or condition
        if external_condition_met():
            dispatcher.utter_message("External condition met. Terminating conversation.")
            return [ActionExecuted("action_restart")]  # Optional: Restart the conversation
        return []

В этой статье мы рассмотрели пять различных способов прекращения взаимодействия с ботом в Rasa. Мы рассмотрели триггеры пользовательского ввода, механизмы тайм-аута, настраиваемые действия, перезапуск диалога и триггеры внешних событий. Каждый метод предоставляет уникальный способ завершения диалога в зависимости от конкретных требований.

Реализуя эти методы, вы можете улучшить взаимодействие с пользователем и обеспечить больший контроль над ходом разговора в чат-боте Rasa. Не стесняйтесь выбирать метод, который лучше всего подходит для вашего случая использования, или комбинируйте несколько методов для большей гибкости.

Помните: понимание того, когда и как корректно завершить разговор, имеет решающее значение для создания эффективных и удобных для пользователя чат-ботов. Используйте эти методы в качестве строительных блоков для обеспечения эффективного взаимодействия с пользователями.

Удачного создания ботов!