Навыки Алисы/Как поднять целеориентированного бота для Алисы из библиотеки DeepPavlov

Как поднять целеориентированного бота для Алисы из библиотеки DeepPavlov

править

Документация DeepPavlov

править

[Документация DeepPavlov] [Github]

=Диалоговые системы их их различия

править

Диалоговые системы обычно бывают двух типов:

  • Целеориентированные диалоговые системы
  • диалоговые системы

Различия диалоговых систем:

  • Целеориентированная диалоговая система преследует какую-то цель
  • Чит-чат не имеет конкретной цели, это просто общение для получения эмоций

Целеориентированные диалоговые системы

править

Классическая целеориентированная диалоговая система состоит из следующих блоков:

  • Блок понимания (NLU).

Его задача — это выделить полезную информацию из текущей реплики пользователя.

  • Диалоговый менеджер (DM).

Задача диалогового менеджера состоит в принятии решений о том, что мы дальше будем делать.

  • Модуль генерации текстов (NLG).

На вход он принимает действие и превращает его в текст.

Взаимодействие с DeepPavlov

править
  • Первым делом, чтобы это сделать, нужно установить библиотеку с помощью команды pip.
!pip install -q deeppavlov
  • Далее мы должны найти нужную модель среди всех моделей.
from deeppavlov import configs
# интересующая модель
configs.go_bot.gobot_dstc2
  • Мы определились с конфигом. Теперь нам нужно с ним взаимодействовать (установка зависимостей).
!python -m deeppavlov install gobot_dstc2
  • Скачивание модели.
!python -m deeppavlov download gobot_dstc2
  • Использование модели.
# для остановки взаимодействия с ботом введите "exit"
!python -m deeppavlov interact gobot_dstc2

Взаимодействие с DeepPavlov в Python

править
  • Подаем на вход описание модели в build_model, и она возвращает объект python, который можно будет далее вызвать и с ним пообщаться.
In []:  from deeppavlov import configs, build_model

In []:  gobot = build_model(configs.go_bot.gobot_dstc2, download = True)
# Теперь подаем на вход список входных реплик
In []:  gobot(["Hi! I want some cheap chinese food."])

Out []: ['The lucky star serves chinese food.']

# обнуление диалога
In []:  gobot.reset()

Мы можем общаться сразу несколькими пользователями с этой диалоговой системой и она будет выдавать список ответов.

Создание агента

править
  • Сначала инициализируем нашу модель, потом поместим её в умение, а далее создадим агент, который состоит из одного нашего умения.
# инициализация модели
from deeppavlov import build_model

gobot = build_model(configs.go_bot.gobot_dstc2, download = True)
# помещение в умение
from deeppavlov.skills.default_skill.default_skill import DefaultStatelessSkill

gobot_skill = DefaultStatelessSkill(gobot)
# создание агента
from deeppavlov.agents.default_agent.default_agent import DefaultAgent
from deeppavlov.agents.processors.highest_confidence_selector import HighestConfidenceSelector

gobot_agent = DefaultAgent((gobot_skill), skills_selector=HighestConfidenceSelector())

Итоговый агент принимает на вход тот же самый список реплик, и с ним можно общаться, как и с моделью.

Сервер, который будет общаться с Алисой

править

Нам необходимо:

  • установить сертификаты https
  • установить endpoint для запросов Алисы
  • установить порт для подключения
from deeppavlov.utils.alice import start_agent_server

start_agent_server(gobot_agent, host='0.0.0.0', port=5000, endpoint='/agent')

Команда StartAgentServer принимает на вход агент. Вы в свою очередь определяете хост, порт и endpoint. И когда вы определились, вы поднимаете локально сервер, который будет получать ваши реплики из приложения Алисы и отправлять свои ответы.

Ссылки

править