Полное руководство по Rasa: методы и примеры кода для создания диалогового ИИ

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

  1. Распознавание намерений.
    Распознавание намерений — важнейший шаг в создании диалогового ИИ. Rasa предоставляет возможность определять намерения и обучать модели их точному распознаванию. Вот пример того, как определить намерения в Rasa:
## intent:greet
- Hi
- Hello
- Hey there
  1. Извлечение сущностей.
    Сущности представляют собой важные фрагменты информации в сообщениях пользователя. Rasa позволяет вам определять сущности и извлекать их из вводимых пользователем данных. Вот пример:
## intent:book_flight
- Book a flight from [New York](source) to [San Francisco](destination) on [Friday](departure_date)
  1. Управление диалогами.
    Rasa позволяет создавать интерактивные и динамичные разговоры. Вы можете определить потоки диалога, используя истории и правила. Вот пример истории на языке Раса:
## story_01
* greet
  - utter_greet
* book_flight{"source": "New York", "destination": "San Francisco", "departure_date": "Friday"}
  - action_book_flight
  1. Настраиваемые действия.
    С помощью Rasa вы можете определять настраиваемые действия для выполнения определенных задач во время разговора. Вот пример специального действия по бронированию рейса:
class ActionBookFlight(Action):
    def name(self) -> Text:
        return "action_book_flight"
    def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        source = tracker.get_slot("source")
        destination = tracker.get_slot("destination")
        departure_date = tracker.get_slot("departure_date")
        # Perform the flight booking logic here
        dispatcher.utter_message("Your flight from {} to {} on {} has been booked.".format(source, destination, departure_date))
        return []
  1. Действия с формой.
    Rasa также поддерживает действия с формой, которые помогают пользователям задавать ряд вопросов для сбора всей необходимой информации. Вот пример:
class FlightBookingForm(FormAction):
    def name(self) -> Text:
        return "flight_booking_form"
    @staticmethod
    def required_slots(tracker: Tracker) -> List[Text]:
        return ["source", "destination", "departure_date"]
    def slot_mappings(self) -> Dict[Text, Union[Dict, List[Dict]]]:
        return {
            "source": self.from_entity(entity="source"),
            "destination": self.from_entity(entity="destination"),
            "departure_date": self.from_entity(entity="departure_date")
        }
    def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        # Perform the flight booking logic here
        dispatcher.utter_message("Your flight has been booked.")
        return []

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