Навыки CDQA
Бета
CDQA (Closed Domain Question Answering) — это вопросно-ответная система на основе машинного обучения. В нее загружается текстовый файл, фрагменты из которого бот может использовать при ответе на вопросы пользователей.
Чтобы начать работу с CDQA:
Создание CDQA
Перейдите в проект.
На панели управления нажмите База знаний.
Если в базе знаний уже есть модули, нажмите на панели вкладок Добавить модуль.
Выберите 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();
}