Конфигурационный файл 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
задает список самостоятельно созданных тегов действий, которые используются в проекте.