В этой статье мы рассмотрим различные методы прекращения взаимодействия ботов в 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. Не стесняйтесь выбирать метод, который лучше всего подходит для вашего случая использования, или комбинируйте несколько методов для большей гибкости.
Помните: понимание того, когда и как корректно завершить разговор, имеет решающее значение для создания эффективных и удобных для пользователя чат-ботов. Используйте эти методы в качестве строительных блоков для обеспечения эффективного взаимодействия с пользователями.
Удачного создания ботов!