Навыки CDQA
Бета
CDQA (Closed Domain Question Answering) — это вопросно-ответная система на основе машинного обучения. В нее загружается текстовый файл, фрагменты из которого бот может использовать при ответе на вопросы пользователей.
Чтобы начать работу с CDQA:
Создание CDQA
-
Перейдите в проект.
-
На панели управления нажмите База знаний → Q&A.
-
Если в базе знаний уже есть модули, нажмите на панели вкладок Добавить модуль.
-
Выберите CDQA и настройте модуль:
- Введите название CDQA.
- Выберите язык документа: русский и английский или другие языки.
- Загрузите документ, из которого бот будет брать ответы.
предупреждениеТребования к файлу: файл TXT, кодировка UTF-8, размер до 1 Мбайт. -
Нажмите Добавить модуль.
Подключение CDQA к сценарию
- Перейдите в меню базы знаний.
- Найдите модуль CDQA и нажмите напротив него → Скопировать код модуля.
- Нажмите Редактор → Код на панели управления.
- Вставьте скопированный код в конец сценария. Он выглядит так:
state: NoMatch
event!: noMatch
script:
var result = $caila.cdqaQuery($request.query, "CDQA.Наши курсы", 0.5);
if (result.predicted) {
$reactions.answer(result.predicted);
} else {
$reactions.answer("Я не нашел ответ в своих документах. Пожалуйста, спросите что-нибудь другое.");
}
Это стейт, в который бот перейдет по событию noMatch
— когда не сможет найти ответ на вопрос пользователя в модулях FAQ или среди других интентов CAILA.
В этом стейте бот вызывает специальный метод $caila.cdqaQuery
, чтобы получить ответ от CDQA.
event!: noMatch
в сценарии должен быть только один.
Если такой стейт уже существует, удалите или адаптируйте его код под вызов $caila.cdqaQuery
.Вы можете использовать поиск ответа в CDQA и в любом другом месте сценария. Например, если вопрос пользователя относится к модулю FAQ, бот может сначала искать ответ в документе, а стандартный ответ из FAQ использовать, только если такой ответ не найден:
state: FAQ.Education
intentGroup!: /KnowledgeBase/FAQ.Образование
script:
var result = $caila.cdqaQuery($request.query, "CDQA.Наши курсы", 0.5);
if (result.predicted) {
$reactions.answer(result.predicted);
} else {
$faq.pushReplies();
}