Обучение с Подкреплением¶
Импорт и экспорт данных из базы. Связь с GitHub.¶
Форматы хранения и представления данных¶
Через интерфейс Wisebot текущие данные проекта можно получить посредством экспорта их в виде архивной копии. Эту операцию можно выполнить в разделе Настройки выбранного проекта на вкладке Импорт/Экспорт. Для каждого проекта данные выгружаются отдельно.
При выгрузке данных необходимо учитывать следующие параметры:
-
Язык хранения данных
Каждый проект ассистента мультиязычен. Помимо русского, можно добавить другие языки, например, английский или французский, и создать переводы намерений и пользовательских историй. Выбор опции Все языки позволяет выгрузить данные по всем языкам в одном пакете. Если выбрать конкретный язык, экспортируются данные только по указанному языку. -
Экспорт разговоров
Этот плагин позволяет пользователям экспортировать свои беседы для автономного чтения в различных форматах, включая HTML, XML и обычный текст. Экспорт ограничивается на основе разрешений группы пользователей и выполняется поэтапно, группируя выбранные беседы в пакеты по мере необходимости. Пользователи могут экспортировать одну или несколько бесед с помощью встроенных инструментов. -
Экспорт входящих высказываний
Плагин позволяет экспортировать входящие высказывания в файл.
После экспорта формируется zip-архив, содержащий пакет данных цифрового ассистента. Имя пакета имеет следующий формат: сначала название проекта (например, Maria), затем дата и время формирования архива в формате yyyy-MM-ddTHH:mm:ss.fffZ
. Внутри архива содержится следующая структура файлов и каталогов:
Структура Архива и Назначение Файлов¶
-
Папка
Wisebot
Содержит 4 YAML-файла: -
analyticsconfig.yml
: информация о панели инструментов по умолчанию. bfconfig.yml
: название проекта, язык по умолчанию, хост, ID проекта и его токен.default-domain.yml
: названия существующих слотов, действий и сущностей.-
widgetsettings.yml
: тип данных и интерфейс для полей ввода. -
Папка
data
-
Папка
nlu
en.json
: модули, используемые для понимания естественного языка.ru.yml
: список намерений, редактируемый напрямую и импортируемый в Wisebot.
-
Папка
stories
Примеры диалогов, на которых бот учится правильно реагировать в зависимости от предыстории разговора. Каждый диалог в отдельном YAML-файле, состоящий из последовательных шагов с намерениями пользователя и действиями бота. -
Файл
endpoints.yml
Содержит различные конечные точки, используемые ботом, включая сервер для пользовательских действий и хранилище трекера для хранения разговоров. -
Файл
domain.yml
Определяет вселенную, в которой работает помощник: намерения, сущности, слоты, ответы, формы и действия. Также конфигурирует сеансы разговора. -
Файл
credentials.yml
Зашифрованный файл с учетными данными, безопасно хранимый в удаленном репозитории. -
Файлы
config-ru.yml
,config-en.yml
Определяют компоненты и политики, используемые моделью для прогнозирования на основе пользовательского ввода. Ключи рецепта, языка и конвейера настраивают компоненты NLU и политики прогнозирования.
Формат YAML¶
Rasa использует YAML («Yet Another Markup Language») для управления обучающими данными, включая NLU, истории и правила. Обучающие данные могут быть разделены на несколько YAML-файлов, каждый из которых может содержать комбинации различных типов данных.
Основные Компоненты YAML:¶
- NLU (Natural Language Understanding)
Определяет намерения и примеры для обучения модели. Примерnlu.yml
:
version: "2.0"
nlu:
- intent: приветствие
examples: |
- привет
- здравствуйте
- добрый день
- доброе утро
- добрый вечер
- приветствую
- здарова
- йо
- intent: прощание
examples: |
- пока
- до свидания
- до встречи
- всего доброго
- Stories
Описывают диалоги чат-бота с пользователями через последовательности намерений и действий. Пример истории:
stories:
- story: Приветствие и спрос о делах
steps:
- intent: приветствие
- action: utter_приветствие
- action: utter_как_дела
-
Actions
Набор действий, которые может выполнять бот, включая дефолтные и кастомные функции на Python. -
Rules
Определяют строго выполняемые ботом сценарии действий. Пример правила:
Преобразование форматов данных¶
Markdown является удобным форматом для начала, однако возможны ситуации, когда данные нужно конвертировать из других форматов (например, LUIS, Dialogflow, JSON) в формат Rasa. Для этого используйте команду:
--data
: путь к файлу или директории с данными NLU.--out
: имя выходного файла.-f
: формат выходных данных (JSON или MD).
После преобразования переместите данные в папку data
и удалите старые файлы.
Импорт/Экспорт данных через интерфейс¶
Wisebot позволяет импортировать и экспортировать проекты Rasa или Rasa X через меню Настройки → Импорт/Экспорт. При импорте загруженные истории будут доступны в визуальном редакторе.
Для экспорта проектов выберите Экспорт, после чего получите ZIP-архив с файлами:
awesome-project/
├── data/
│ ├── nlu.md
│ └── stories.md
├── config.yml
├── credentials.yml
├── domain.yml
└── endpoints.yml
Взаимодействие с GitHub¶
Wisebot использует Git для управления версиями. Каждый проект можно подключить к ветке репозитория GitHub, что позволяет отправлять изменения и возвращаться к предыдущим версиям.
Установка Git¶
- Windows: Скачайте Git для Windows и следуйте инструкциям установки.
- macOS: Скачайте Git для macOS и запустите установщик.
- Linux: Установите Git через менеджер пакетов, например:
Настройка Git¶
Настройте имя пользователя и электронную почту:
Регистрация на GitHub¶
- Перейдите на https://github.com и нажмите Sign up.
- Введите имя пользователя, адрес электронной почты и пароль.
- Подтвердите почту с помощью кода активации.
- Следуйте инструкциям по выбору тарифного плана и настройке профиля.
Создание Репозитория¶
- Нажмите Create repository.
- Введите название репозитория.
- Нажмите Create repository.
Настройка Репозитория¶
Используйте SSH-ключи для аутентификации и настройте доступ с минимальными необходимыми разрешениями.
- Проверка установки Git:
Должен отобразиться номер версии, например, git version 2.35.1
.
- Добавление SSH-ключа:
Сгенерируйте SSH-ключ и добавьте его в ваш аккаунт GitHub:
Затем добавьте содержимое ~/.ssh/id_rsa.pub
в разделе SSH-ключей вашего профиля GitHub.
Теперь ваш проект Wisebot может быть связан с репозиторием GitHub для управления версиями и совместной работы.
Преобразователь формата данных¶
Markdown — это, пожалуй, самый безопасный выбор для начинающих при создании данных. Однако может возникнуть ситуация, когда обучающие данные автоматизированы или получены из другого источника, такого как формат данных LUIS, формат данных WIT, формат данных Dialogflow или JSON. Rasa предоставляет способ преобразования формата данных. Убедитесь, что виртуальная среда активирована, и выполните следующую команду (она преобразует MD в JSON):
- --data — путь к файлу или каталогу, содержащему данные Rasa NLU.
- --out — имя файла для сохранения тренировочных данных в формате Rasa.
- -f — выходной формат, в который должны быть преобразованы данные обучения. Принимает либо
json
, либоmd
.
После получения необходимых данных переместите их в папку data и удалите все существующие файлы.
Импорт/экспорт данных через интерфейс¶
Вы можете легко импортировать проект Rasa или Rasa X в Wisebot. Перейдите в меню Настройки (левая боковая панель), выберите Импорт/экспорт, затем Импорт, и загрузите необходимые файлы.
После импорта файлов ваши истории будут доступны в визуальном редакторе историй.
Вы можете экспортировать диалоги, созданные с помощью Wisebot, в существующий проект Rasa или Rasa X. Перейдите в меню Настройки, выберите Импорт/экспорт, затем Экспорт.
При экспорте проекта ссылки и ветви сохраняются в файлах .md
, поэтому вы можете повторно импортировать эти файлы и сохранить их.
Вы получите ZIP-архив, содержащий все необходимые файлы:
awesome-project/
├── data/
│ ├── nlu.md
│ └── stories.md
├── config.yml
├── credentials.yml
├── domain.yml
└── endpoints.yml
Взаимодействие с GitHub¶
Управление версиями в Wisebot осуществляется с помощью Git. Каждый проект может быть подключен к ветке репозитория Git, что позволяет отправлять изменения и возвращаться к предыдущим версиям.
Установка Git¶
Windows:
Скачайте Git для Windows, запустите .exe
-файл и следуйте инструкциям установщика.
macOS:
Скачайте Git для macOS и запустите .dmg
-файл. Если установка не начинается, перейдите в Системные настройки → Безопасность и нажмите кнопку Open anyway (Открыть всё равно).
Linux:
Установите Git через встроенный менеджер пакетов. Для Ubuntu используйте команду:
Команды для других дистрибутивов можно найти здесь.
Проверка установки Git¶
Откройте терминал и введите команду:
Если Git установлен, вы увидите номер версии, например, git version 2.35.1
.
Настройка Git¶
Выполните следующие команды для настройки имени пользователя и электронной почты, чтобы ваши действия в Git были подписаны и связаны с GitHub:
Добавить имя (введите его в кавычках):
Добавить электронную почту (замените email@example.com
на вашу почту):
Опция --global
означает, что имя и почта будут использоваться для всех ваших действий в Git. Если вы хотите изменить эту информацию для конкретного проекта, используйте те же команды без опции --global
.
Регистрация на GitHub¶
GitHub — веб-сервис на основе Git, который помогает совместно разрабатывать IT-проекты. На GitHub разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за обновлениями других пользователей.
Ваш профиль на GitHub и все проекты в нём — это публичное портфолио разработчика, поэтому необходимо создать профиль, если у вас его ещё нет.
- Перейдите на https://github.com и нажмите кнопку Sign up.
- Введите имя пользователя (понадобится в дальнейшей работе), адрес электронной почты (тот же, что использовался при настройке Git) и пароль.
- На вашу почту придёт код активации — введите его на сайте.
- Выберите тарифный план. Если вы пользуетесь GitHub для учёбы, укажите, что профиль нужен только для вас и вы студент.
- Пропустите опросы и выбор интересов.
Поздравляем! Вы зарегистрировались, и у вас есть собственный профиль.
Создание репозитория¶
- Нажмите на кнопку Create repository (Создать репозиторий).
- Введите название репозитория в поле Repository name (Название репозитория).
- Нажмите кнопку Create repository (Создать репозиторий).
Настройка репозитория¶
Два ключевых компонента для подключения к репозиторию Git — строка подключения и аутентификация. Существует множество методов аутентификации для Git, но рекомендуется использовать SSH-ключи, поскольку они обеспечивают более высокий уровень безопасности. Также следует ограничить доступ к ключу минимальными необходимыми разрешениями для извлечения и отправки в используемую ветку проекта.
Обратите внимание, что SSH-ключи, хранящиеся в Wisebot, не шифруются и видны любому пользователю с разрешением git-credentials:r
в области проекта.
Установка SSH-ключей¶
Для доступа к проектам на GitHub со своего компьютера и выполнения команд без постоянного ввода пароля необходимо использовать SSH-ключи.
SSH — протокол для безопасного соединения между компьютерами.
SSH-ключ состоит из двух частей — открытого и закрытого ключа. Открытый ключ отправляется на сервер и может быть общедоступным, тогда как закрытый ключ остаётся секретным и доступен только вам.
Подключение к GitHub через SSH работает следующим образом:
- Вы отправляете запрос к GitHub, который знает ваш открытый ключ.
- GitHub подтверждает вашу личность и отправляет ответ.
- Только вы можете расшифровать этот ответ, поскольку только у вас есть соответствующий закрытый ключ.
Создание SSH-ключа¶
Для создания SSH-ключа в Linux/macOS откройте терминал и введите команду:
При появлении запроса укажите имя файла и нажмите клавишу Enter.
Затем введите и повторно подтвердите парольную фразу.
После этого будет создан SSH-ключ. Полный вывод терминала должен выглядеть примерно так:
В каталоге, где вы создавали ключи, появятся два файла: id_rsa
(закрытый ключ) и id_rsa.pub
(открытый ключ).
Добавление SSH-ключа в репозиторий GitHub¶
- Откройте репозиторий GitHub.
- Перейдите в Settings (Настройки) → Deploy keys (Развертывание ключей).
- Нажмите Add deploy key (Добавить ключ развертывания).
- Введите заголовок и вставьте содержимое файла
.pub
в поле Key (Ключ). - Установите флажок Allow write access (Разрешить доступ на запись), чтобы Wisebot мог отправлять данные.
- Нажмите Add key (Добавить ключ).
Теперь вы увидите новый ключ с указанным заголовком в разделе Deploy keys.
Подключение Wisebot к Git¶
- Откройте проект в Wisebot и перейдите в Settings (Настройки) → Git credentials (Учетные данные Git).
- Скопируйте строку подключения Git в поле репозитория и укажите имя ветки, которую Wisebot будет использовать для хранения текущего проекта.
Примечание: Ключ SSH состоит из двух файлов: открытого ключа (.pub
) и закрытого ключа. Скопируйте содержимое *.pub
в поле для открытого ключа, а закрытый ключ вставьте в соответствующее поле.
- Нажмите кнопку Save (Сохранить), чтобы сохранить учетные данные. После сохранения интерфейс будет выглядеть следующим образом:
- Чтобы убедиться, что вы подключены к Git, вернитесь на экран историй и убедитесь, что кнопка Git видна на верхней панели.
Примечание: Кнопка Git будет отключена, если проект не подключен к экземпляру Rasa, так как обработка импортированных и экспортированных файлов зависит от Rasa.
Использование интеграции Git¶
После подключения проекта к репозиторию Git кнопка Git появится на главной панели. Нажмите на неё, чтобы открыть выпадающий список с двумя действиями: Commit & Push (Фиксация и отправка) и Revert (Возврат к предыдущему).
Фиксация и отправка¶
Чтобы сохранить изменения в подключенном репозитории:
- Выберите опцию Commit & Push в выпадающем списке Git.
- В открывшемся окне введите сообщение фиксации, описывающее внесённые изменения.
- Нажмите кнопку Push to Remote (Отправить на удалённый сервер), чтобы сохранить изменения.
Если изменения успешно сохранены, в правом верхнем углу экрана появится зелёное уведомление.
Если с момента последней фиксации не было изменений, появится жёлтое уведомление.
Если Wisebot не может выполнить фиксацию и отправку, возникнет красное уведомление с сообщением об ошибке.
Возврат к предыдущей версии¶
Чтобы вернуться к предыдущей версии проекта:
- Выберите опцию Revert в выпадающем списке Git.
- В открывшемся окне найдите фиксацию, к которой хотите вернуться, наведите курсор на строку и нажмите появившуюся кнопку Revert (Возвратиться).
- Если в проекте есть несохранённые изменения, они будут сохранены с сообщением фиксации перед возвратом к выбранной версии.
Примечание: Project state before revert to <commitId>
Обработка входящих высказываний¶
Обслуживание модели¶
Новые данные постоянно поступают во "Входящие", когда пользователи общаются с вашим ботом. Поддержание модели включает обработку входящих высказываний путем исправления неправильных интерпретаций NLU, проверки корректности и принятия решения о том, следует ли хранить эти новые данные.
Исправление и проверка¶
Намерения и сущности могут быть исправлены в один клик, что позволяет быстро исправить десятки входящих высказываний. Чтобы изменить название намерения, нажмите на намерение и выберите правильное или создайте новое. Также доступны стандартные инструменты аннотаций.
После исправления высказывания отметьте его как допустимое с помощью соответствующей кнопки. Если у вас есть множество новых проверенных примеров, вы можете использовать их в качестве оценочного набора или добавить в обучающие данные. Для этого нажмите на зеленую галочку и затем на кнопку Добавить к данным обучения, подтвердите действие.
Проверенные данные позволяют регулярно оценивать модель с использованием актуальных данных, что помогает улучшить качество тренировочных данных.
Контроль роста¶
Новые данные полезны только до тех пор, пока они обучают модель чему-то новому. Систематическое добавление каждой новой записи сделает модель слишком большой и увеличит время обучения. Wisebot помогает эффективно справляться с этими проблемами.
Высказывания, которые нельзя отнести к какому-либо намерению или необходимо создать новое, можно удалить. Наведите курсор на высказывание и нажмите на значок корзины. Вы можете удалить все высказывания с определенным намерением или удалить отдельное высказывание.
Мониторинг и анализ работы модели¶
Аналитика¶
Wisebot предлагает гибкую панель аналитики для мониторинга вашего помощника Rasa. Вы можете добавлять, переупорядочить и настраивать аналитические карты на панели мониторинга. Вы можете несколько раз использовать одни и те же карты с разными параметрами с разным названием. Раздел “Аналитика” находится в левой боковой панели.
Еще одна важная особенность большинства карт заключается в том, что с помощью представления панели вы можете переходить к соответствующим разговорам и проверять их.
Экспорт и загрузка¶
Вы можете скачать файл для всех карт из меню .csv
Вы также можете скачать файл Excel, содержащий данные каждой карты на отдельном листе.
Для добавления дополнительной карточки необходимо нажать на кнопку Добавить карточку.
Разговоры с течением времени¶
Эта карта отображает эволюцию количества разговоров с течением времени.
Вы можете настроить эту карту с помощью фильтров для мониторинга вовлеченности пользователей, сравнивая соответствующие беседы с общим количеством разговоров.
Всего разговоров¶
Вы можете включить типы бесед, используемых для расчета общего количества бесед в меню:
- Беседы, инициированные пользователем (когда пользователь отправляет сообщение или открывает виджет чата);
- Беседы, инициированные помощником.
Сопоставление разговоров¶
Фильтры ниже (Минимальное количество высказываний и Фильтр события беседы) создадут подмножество этих разговоров. Они называются совпадающими разговорами.
Затем можно измерить вовлеченность как в табличном представлении, так и в представлениях диаграммы. В приведенном ниже примере мы рассматриваем вовлеченного пользователя, если количество высказываний пользователя в разговоре составляет > = 2.
Общее количество бесед отображается красным цветом на диаграмме, если включен параметр Показать общее количество бесед. Отфильтрованные беседы отображаются на диаграмме синим цветом.
Параметры:¶
- Показать общее количество бесед. Отображение общего количества бесед выбранного типа на диаграмме.
- Диалоги, инициированные пользователем. Отображение бесед, инициированных сообщением пользователя (или начальным намерением, таким как initPayload в виджете чата).
- Триггерные разговоры. Отображение разговоров,инициированных проактивно.
- Минимальное количество высказываний. Отображение разговоров по крайней мере с определенным количеством пользовательских высказываний. Поскольку первое высказывание обычно инициируется каналом для отображения приветственного сообщения (initPayload), оно игнорируется. Это означает, что типичное высказывание, вызванное другими каналами, такими как Telegram, не считается высказыванием пользователя.
- Фильтрация событий беседы. Отображение бесед, включающих или исключающих набор намерений и действий.
Продолжительность разговора¶
Эта карточка отображает беседы, сгруппированные по количеству времени между первым и последним высказыванием пользователя или ответом бота в разговоре.
Длительность разговора¶
Эта карта отображает количество раз, когда пользователь взаимодействовал с чат-ботом во время разговора. Беседы в диапазоне дат группируются по количеству содержащихся в них высказываний пользователей. Количество высказываний пользователя отсчитывается от второго, так как первое обычно отправляется интеллектуальным триггером или автоматическим событием, которое не связано с взаимодействием пользователя с чат-ботом.
Главные намерения¶
На этой карточке отображается количество раз, когда намерение использовалось в выбранном диапазоне дат. Намерения, отправленные интеллектуальным триггером, исключаются из этой карты.
Параметры:¶
- Включенные намерения. Отображение только тех намерений, которые перечислены в этом фильтре.
- Исключенные намерения. Не отображать намерения, перечисленные в этом фильтре.
- Ограничение на отображение. Задайте максимальное количество намерений для отображения на линейчатой или круговой диаграмме. Этот параметр не влияет на представление таблицы или загрузку.
Лучшие триггеры¶
Эта карта отображает количество раз, когда материал с интеллектуальным триггером был активирован этим триггером в выбранном диапазоне дат.
Параметры:¶
- Ограничение на отображение. Задайте максимальное количество активированных материалов для отображения на линейчатой или круговой диаграмме. Этот параметр не влияет на представление таблицы или загрузку.
События действий с течением времени¶
На этой карточке отображается количество запусков действия в беседе в течение выбранного периода времени, сгруппированного по времени окончания беседы. Распространенным вариантом использования является использование этого виджета для измерения частоты резервных вариантов.
Параметры:¶
- Включенные действия. Учитывайте действия, добавленные в этот фильтр, только как вхождения действий.
- Исключенные действия. Действия, добавленные в этот фильтр, не будут учитываться как вхождения действий.
Воронка разговоров¶
Эта карта отслеживает вовлеченность и высадку по упорядоченной последовательности событий.
Совпадения — это случаи, когда последовательность включений и исключений событий, указанных в выбранном фильтре последовательностей, находится в порядке диалога.
Вовлеченность сработавшей истории можно измерить, начав выбранную последовательность с действия или ответа бота, который сразу же следует за началом истории.
Обратите внимание, что ответы ботов в форме не являются допустимым методом отслеживания вовлеченности, и вместо них следует использовать слоты.
Параметры:¶
- Выбранная последовательность. Добавьте намерения и действия в этот фильтр, нажав на кнопку со значком плюса и выбрав событие из выпадающего списка. Кроме того, введите событие, которое вы хотите добавить, в строку поиска и нажмите клавишу ВВОД. События в этом фильтре могут быть помечены как включенные (зеленый) или исключенные (красный). Чтобы переключиться между этими параметрами, щелкните метку события в фильтре последовательностей.
- Выбранная последовательность (включение). Включенные события должны быть найдены в беседе после всех предыдущих событий в последовательности.
- Выбранная последовательность (исключение). Исключенные события не должны находиться между предыдущим событием и следующим событием или окончанием беседы, если это последнее событие в последовательности.
Последовательность может состоять из намерений, действий и событий слота. Шаги могут быть отменены, если вы хотите отслеживать последовательность, в которой определенное событие не произошло.
Удаление карточек¶
Шаг 1. Удерживая курсор на выбранной карточке, перетащите ее в область удаления, чтобы удалить.
Шаг 2. Переместите карточку в область Удалить так, чтобы данная область стала красного цвета.