Навыки Алисы/Как поднять целеориентированного бота для Алисы из библиотеки 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. И когда вы определились, вы поднимаете локально сервер, который будет получать ваши реплики из приложения Алисы и отправлять свои ответы.
Ссылки
править- Мария (лаборатория нейронных систем). Как поднять целеориентированного бота для Алисы из библиотеки DeepPavlov? // Школа Алисы. 2018-2019