Конфигурационный файл chatbot.yaml
chatbot.yaml — конфигурационный файл чат-бота. Файл содержит основную информацию о конфигурации проекта, например:
- имя главного файла сценария;
- данные о подключаемых зависимостях;
- конфигурацию NLU;
- перечень файлов с тестами.
В данном разделе перечислены настройки, которые можно задать в chatbot.yaml, и их назначение.
Точка входа в сценарий
entryPoint: main.sc
Поле используется для указания файла, с которого начинается загрузка сценария чат-бота при публикации.
Файл должен находиться в папке src и обычно называется main.sc или entryPoint.sc.
require.entryPoint — обязательное поле.Имя бота
name: echo-bot
Поле задает имя бота, которое будет использовано, например, в сообщениях о публикации бота в канал. Если поле отсутствует, в качестве имени используется системное название проекта.
Настройки NLU
Диалоговый движок
botEngine: v2
Поле задает версию диалогового движка бота.
v2 позволяет использовать NLU-ядро для понимания естественного языка.
Это рекомендуемое значение поля для всех новых проектов.v2, будет использован движок первой версии v1.
NLU на этом движке возможен только при помощи паттернов.Язык бота
language: ru
Поле задает язык, на котором общается бот. Значение поля должно быть ISO-кодом нужного языка.
Пороговые значения классификатора
nlp:
intentNoMatchThresholds:
phrases: 0.2
patterns: 0.2
Поля phrases и patterns в секции nlp.intentNoMatchThresholds задают пороговые значения для классификатора интентов NLU и его гипотез.
Рассмотрим поведение классификатора интентов:
- Пользователь отправляет запрос боту.
- При формировании гипотез классификатор сравнивает запрос с паттернами и тренировочными фразами по отдельности. Он вычисляет вероятность для каждой из гипотез.
- Если вероятность гипотезы меньше, чем порог у
phrasesилиpatterns, эта гипотеза не учитывается при дальнейшей обработке запроса и определении стейта в сценарии.
Таким образом, intentNoMatchThresholds задает минимальную похожесть запроса на фразы или паттерны.
Чем ближе значение к 1, тем строже классификатор и тем более точные требуются совпадения.
Значение phrases и patterns по умолчанию — 0.2.
Это значение используется, если не задать другое для любого из полей.
nlp использовалась секция caila.
Она содержит поле noMatchThreshold, которое задает общее пороговое значение и для фраз, и для паттернов.
В новых проектах для корректного определения паттернов рекомендуется использовать вместо нее секцию nlp,
поскольку у классификатора и алгоритма, который вычисляет вес паттернов, могут быть разные шкалы.Длина $context.nBest
nlp:
nbest: 3
nbestPatterns: 1
nbestIntents: 2
nbestExamples: 3
Поля семейства nlp.nbest задают число правил активации,
к которым можно получить доступ из сценария через объект $context.
- Поле
nbestзадает длину$context.nBest— массива сработавших для запроса правил активации всех типов: паттернов, интентов и примеров. Значение по умолчанию —1. - Поле
nbestPatternsзадает длину$context.nBestPatterns— массива правил активации, сработавших только при помощи паттернов. Если поле не указано, то этот массив недоступен.
nbestIntents и nbestExamples работают аналогично для интентов и примеров.
Ограничения при обработке запроса
Ограничение на длину запроса
nlp:
lengthLimit:
enabled: true
symbols: 100
words: -1
Секция nlp.lengthLimit задает ограничение на длину запросов, которые принимает бот:
enabledвключает или выключает проверку.symbols— максимальное количество символов в запросе.words— максимальное количество слов в запросе. Если указано-1, эта проверка не производится.
По умолчанию включено ограничение на 400 символов, ограничение на количество слов отключено.
lengthLimit.Ограничение на время обработки запроса
nlp:
timeLimit:
enabled: true
timeout: 500
Секция nlp.timeLimit задает ограничение на общее время, в течение которого будет обработан запрос:
enabledвключает или выключает проверку.timeout— максимальное время обработки запроса в миллисекундах.
По умолчанию ограничение включено со значением таймаута 10000 (10 секунд).
timeLimit.XML-тесты
tests:
include:
- "authorization.xml"
- "integration-tests/*.xml"
exclude:
- "broken.xml"
caseSensitive: false
XML-тесты сценариев позволяют п роверить логику чат-бота, эмулируя запросы клиента и проверяя ответы от бота.
По умолчанию выполняются все тесты из файлов в папке проекта test.
Это поведение можно переопределить в секции tests, задав значения для подсекций include и/или exclude:
include— будут выполнены тесты только из тех файлов, которые попадают под шаблоны, перечисленные в этой подсекции.exclude— из выполнения будут исключены все файлы, которые попадают под шаблоны, перечисленные в этой подсекции.
Поле caseSensitive определяет, должны ли шаблоны учитывать регистр названий файлов. Значение по умолчанию — true.
Зависимости
dependencies:
- name: common
type: git
url: https://<repository>
version: heads/master
Секция dependencies позволяет задать список зависимостей проекта.
Теги действий
customTags:
- src/blocks/SumTwoNumbers/block.json
Секция customTags задает список самостоятельно созданных тегов действий, которые используются в проекте.