DeepPavlov Dream -- это платформа для создания модульный диалоговых систем.
Документация архитектуры для DeepPavlov Agent может быть найдена на readthedocs documentation.
На данный момент представлены 6 дистрибутивов:
- полная версия англоязычного бота DREAM (основан на версии бота, участвовавшего в lexa Prize Challenge)
- 4 дистрибутива Deepy представляют собой легкие версии бота на английском языке,
- русскоязычная диалоговая система, в основе которой лежит генеративная модель DialoGPT Russian.
Базовая версия Lunar assistant. Deepy Base содержит аннотатор исправления опечаток Spelling Preprocessing, шаблонный навык Harvesters Maintenance Skill и навык открытого домена на основе AIML, написанный на Dialog Flow Framework.
Расширенная версия Lunar assistant. Deepy Advanced содержит аннотаторы исправления опечаток Spelling Preprocessing, разделения текста на предложения Sentence Segmentation, связывания сущностей Entity Linking и детектирвоания специальный намерений Intent Catcher, навык Harvesters Maintenance GoBot Skill для целеориентированных ответов, и навык открытого домена на основе AIML, написанный на Dialog Flow Framework.
FAQ-версия (Frequently-asked Questions) Lunar assistant. Deepy FAQ содержит аннотатор исправления опечаток Spelling Preprocessing, навык Frequently Asked Questions Skill на основе шаблонов, и навык открытого домена на основе AIML, написанный на Dialog Flow Framework.
Целеориентированная версия Lunar assistant. Deepy GoBot Base содержит аннотатор исправления опечаток Spelling Preprocessing, навык Harvesters Maintenance GoBot Skill для целеориентированных ответов, и навык открытого домена на основе AIML, написанный на Dialog Flow Framework.
Полная версия DeepPavlov Dream Socialbot на английском языке.
Данная версия практически идентична DREAM socialbot из
the end of Alexa Prize Challenge 4.
Некоторые API сервисы заменены на обучаемые модели.
Некоторые сервисы (например, News Annotator, Game Skill, Weather Skill) требуют использования приватных
ключей для использования API сервисов, большинство распространяются бесплатно.
Если вы хотите использовать эти сервисы в локальной версии бота, добавьте свои ключи в переменные окружения
(например, ./.env
).
Данная версия Dream Socialbot потребляет много ресурсов в связи с модульной архитектурой и изначальными целями
(участие в Alexa Prize Challenge). Демо-версия бота для общения представлена на нашем сайте.
Мини-версия DeepPavlov Dream Socialbot. Данная версия основана на нейросетевой генерации с использованием English DialoGPT модели. Дистрибутив также содержит компоненты для детектирования запросов пользователя и выдачи специальных ответов на них. Link to the distribution.
Русскоязычная версия DeepPavlov Dream Socialbot. Данная версия основана на нейросетевой генерации с использованием Russian DialoGPT модели by DeepPavlov. Дистрибутив также содержит компоненты для детектирования запросов пользователя и выдачи специальных ответов на них. Link to the distribution.
- Операционная система Ubuntu 18.04+, Windows 10+ (через WSL & WSL2), MacOS Big Sur;
- Версия docker от 20 и выше;
- Версия docker-compose v1.29.2;
- Оперативная память от 2 гигабайт (при использовании прокси контейнеров), от 4 гигабайт (при использовании дистрибутивов на основе БЯМ) и от 20 гигабайт (при использовании сценарных дистрибутивов).
git clone https://github.com/deeppavlov/dream.git
Установите docker и docker-compose
Если вы получаете ошибку "Permission denied" во время запуска docker-compose, убедитесь, что ваш докер клиент сконфигурирован правильно.
Подставьте вместо VERSION
нужное название дистрибутива: deepy_base
, deepy_adv
, deepy_faq
, deepy_gobot_base
.
docker-compose -f docker-compose.yml -f assistant_dists/VERSION/docker-compose.override.yml up --build
Простейший способ испольховать Dream - поднимать бота с помощью proxy-сервисов. Все запросы будут перенаправлены на DeepPavlov API, поэтому вам не потребуется большое число ресурсов. Локально поднимаются только агент и база данные mongo. См. использование proxy.
docker-compose -f docker-compose.yml -f assistant_dists/dream/docker-compose.override.yml -f assistant_dists/dream/dev.yml -f assistant_dists/dream/proxy.yml up --build
Данный дистрибутив DeepPavlov Dream требует крайне много вычислительных ресурсов. Для оценки требований можно обратиться к разделу Компоненты.
docker-compose -f docker-compose.yml -f assistant_dists/dream/docker-compose.override.yml -f assistant_dists/dream/dev.yml up --build
Мы также предоставляем конфигурационный файл (assistant_dists/dream/test.yml
) для распределения по GPU для серверов с несколькими доступными GPU.
AGENT_PORT=4242 docker-compose -f docker-compose.yml -f assistant_dists/dream/docker-compose.override.yml -f assistant_dists/dream/dev.yml -f assistant_dists/dream/test.yml up
Если естьнеобходимость перезапустить определенный контейнер без re-building (убедитесь, что маппинг папок в assistant_dists/dream/dev.yml
правильный):
AGENT_PORT=4242 docker-compose -f docker-compose.yml -f assistant_dists/dream/docker-compose.override.yml -f assistant_dists/dream/dev.yml restart container-name
DeepPavlov Agent предоставляет 3 варианта взаимодействия: через интерфейс командной строки, API и Телеграм-бот
В отдельной вкладке терминала запустите:
docker-compose exec agent python -m deeppavlov_agent.run agent.channel=cmd agent.pipeline_config=assistant_dists/dream/pipeline_conf.json
Введите имя пользователя и можете начать общаться с Dream!
Как только вы подняли бота, Agent API станет доступен по адресу http://localhost:4242
.
Узнать больше про API можно в DeepPavlov Agent Docs.
Браузерный интерфейс чата в DeepPavlov Agent доступен по адресу `http://localhost:4242/chat'.
На данный момент Телеграм-бот разворачивается вместо HTTP API
Измените определение agent
command
внутри docker-compose.override.yml
:
agent:
command: sh -c 'bin/wait && python -m deeppavlov_agent.run agent.channel=telegram agent.telegram_token=<TELEGRAM_BOT_TOKEN> agent.pipeline_config=assistant_dists/dream/pipeline_conf.json'
ВАЖНО: Не храните токен бота в открытом репозитории!
Dream использует несколько конфигурационных файлов для docker-compose:
./docker-compose.yml
-- основной файл, включающий контейнеры агента DeepPavlov Agent и базы данных mongo;
./assistant_dists/*/docker-compose.override.yml
содержит все компоненты для дистрибутива и их основные параметры;
./assistant_dists/dream/dev.yml
включает маппинг папок (volume binding) для более простой отладки;
./assistant_dists/dream/test.yml
содержит перераспределение по доступным GPU;
./assistant_dists/dream/proxy.yml
содержит список proxy-контейнеров.
Если ваши ресурсы ограничены, вы можете заменить некоторые (например, все, кроме тех, что вы разрабатываете локально)
контейнеры на proxy-версии, поднятые DeepPavlov.
Для этого, убедитесь, что они определены в proxy.yml
, например.:
convers-evaluator-annotator:
command: ["nginx", "-g", "daemon off;"]
build:
context: dp/proxy/
dockerfile: Dockerfile
environment:
- PROXY_PASS=proxy.deeppavlov.ai:8004
- PORT=8004
и включайте этот файл в команду запуска:
docker-compose -f docker-compose.yml -f assistant_dists/dream/docker-compose.override.yml -f assistant_dists/dream/dev.yml -f assistant_dists/dream/proxy.yml up --build
По умолчанию, proxy.yml
содержит все контейнеры кроме агента и базы данных.
Архитектура Russian Dream представлена на изображении:
Name | Requirements | Description |
---|---|---|
Rule Based Selector | Algorithm that selects list of skills to generate candidate responses to the current context based on topics, entities, emotions, toxicity, dialogue acts and dialogue history | |
Response Selector | 50 MB RAM | Algorithm that selects a final responses among the given list of candidate responses |
Name | Requirements | Description |
---|---|---|
Badlisted Words | 50 MB RAM | detects obscene Russian words from the badlist |
Entity Detection | 5.5 GB RAM | extracts entities and their types from utterances |
Entity Linking | 400 MB RAM | finds Wikidata entity ids for the entities detected with Entity Detection |
Fact Retrieval | 6.5 GiB RAM, 1 GiB GPU | Аннотатор извлечения параграфов Википедии, релевантных истории диалога. |
Intent Catcher | 900 MB RAM | classifies user utterances into a number of predefined intents which are trained on a set of phrases and regexps |
NER | 1.7 GB RAM, 4.9 GB GPU | extracts person names, names of locations, organizations from uncased text using ruBert-based (pyTorch) model |
Relative Persona Extractor | 50 MB RAM | Annotator utilizing Sentence Ranker to rank persona sentences and selecting N_SENTENCES_TO_RETURN the most relevant sentences |
Sentseg | 2.4 GB RAM, 4.9 GB GPU | recovers punctuation using ruBert-based (pyTorch) model and splits into sentences |
Spacy Annotator | 250 MB RAM | token-wise annotations by Spacy |
Spelling Preprocessing | 8 GB RAM | Russian Levenshtein correction model |
Toxic Classification | 3.5 GB RAM, 3 GB GPU | Toxic classification model from Transformers specified as PRETRAINED_MODEL_NAME_OR_PATH |
Wiki Parser | 100 MB RAM | extracts Wikidata triplets for the entities detected with Entity Linking |
DialogRPT | 3.8 GB RAM, 2 GB GPU | DialogRPT model which is based on Russian DialoGPT by DeepPavlov and fine-tuned on Russian Pikabu Comment sequences |
Name | Requirements | Description |
---|---|---|
DialoGPT | 2.8 GB RAM, 2 GB GPU | Russian DialoGPT by DeepPavlov |
Dummy Skill | a fallback skill with multiple non-toxic candidate responses and random Russian questions | |
Personal Info Skill | 40 MB RAM | queries and stores user's name, birthplace, and location |
DFF Generative Skill | 50 MB RAM | [New DFF version] generative skill which uses DialoGPT service to generate 3 different hypotheses |
DFF Intent Responder | 50 MB RAM | provides template-based replies for some of the intents detected by Intent Catcher annotator |
DFF Program Y Skill | 80 MB RAM | [New DFF version] Chatbot Program Y (https://github.com/keiffster/program-y) adapted for Dream socialbot |
DFF Friendship Skill | 70 MB RAM | [New DFF version] DFF-based skill to greet the user in the beginning of the dialog, and forward the user to some scripted skill |
DFF Template Skill | 50 MB RAM | [New DFF version] DFF-based skill that provides an example of DFF usage |
Seq2seq Persona-based | 1.5 GB RAM, 1.5 GB GPU | generative service based on Transformers seq2seq model, the model was pre-trained on the PersonaChat dataset to generate a response conditioned on a several sentences of the socialbot's persona |
Text QA | 3.8 GiB RAM, 5.2 GiB GPU | Навык для ответа на вопросы по тексту. |
Kuratov Y. et al. DREAM technical report for the Alexa Prize 2019 //Alexa Prize Proceedings. – 2020.
Baymurzina D. et al. DREAM Technical Report for the Alexa Prize 4 //Alexa Prize Proceedings. – 2021.
DeepPavlov Dream is licensed under Apache 2.0.
Program-y (see dream/skills/dff_program_y_skill
, dream/skills/dff_program_y_wide_skill
, dream/skills/dff_program_y_dangerous_skill
)
is licensed under Apache 2.0.
Eliza (see dream/skills/eliza
) is licensed under MIT License.
For making certification xlsx
- file with bot responses, you can use xlsx_responder.py
script by executing
docker-compose -f docker-compose.yml -f dev.yml exec -T -u $(id -u) agent python3 \
utils/xlsx_responder.py --url http://0.0.0.0:4242 \
--input 'tests/dream/test_questions.xlsx' \
--output 'tests/dream/output/test_questions_output.xlsx'\
--cache tests/dream/output/test_questions_output_$(date --iso-8601=seconds).json
Make sure all services are deployed. --input
- xlsx
file with certification questions, --output
- xlsx
file with bot responses, --cache
- json
, that contains a detailed markup and is used for a cache.