Диалоговое Ядро - компонент Диалогового Процессора SOVA,предназначеного для использования в системах автоматизации диалога (ботах). Диалоговое ядро (engine), реализует функционал генерации текстовых ответов в реальном времени, используя для этого бинарную поисковую базу, подготовленную компилятором языка DL.
Для запуска Диалогового Ядра в стандартном режиме необходимо выполнить следующую команду:
docker-compose up -d
Диалоговое ядро запустится с Базой Знаний по умолчанию в режиме docker-compose и будет принимать запросы на localhost:2255.
Для обновления Базы Знаний, необходимо положить исходные данные в директорию dldata (если ее нет, то она будет автоматичеки создана при запуске Диалогового Ядра) и выполнить команду:
./docker/update.sh
Запустится процесс компиляции Базы Знаний, причем бот Диалоговое Ядро будет работать и отвечать на запросы до самого момента замены скомпилированной Базы Знаний. В случае, если в данных Базы Знаний были допущены ошибки, компиляци выдаст полное их описание и прервет обновление. В случае, если компиляция прошла успешно, скомпилированная База Значний автоматически устанавливается в Диалоговое Ядро, а ее копия копируется в директорию /dldata под именем dldata.ie2 и может быть использована Диалоговым Ядром для быстрого старта с этой Базой Знаний.
- Установка зависимостей:
apt-get update && apt-get upgrade -y cmake \
build-essential flex libgmp-dev \
libmemcached-dev libreadline-dev libicu-dev
- Сборка Диалогового Ядра:
mkdir cmake_build && cd cmake_build && cmake ../build && make -j 5
Компилятор Языка DL – InfCompiler
Получение подсказки поиспользованию:
InfCompiler --help
Вывод текущей версии компилятора и информации по сборке:
InfCompiler --version
Запуск компиляции:
InfCompiler [ConfigFile] [OPTIONS]
// Конфигурация компилятора языка DL.
[Main]
// Корневая директория для Диалогового Ядра. Значение по умолчанию - родительская диретория конфигурационного файла.
// RootDir = /usr/local/InfEngine
[Functions]
// Директория с библиотеками внешних функций.
RootDir = release/lib/functions
// Список внешних функций.
ConfigFile = conf/functions.lst
[Log]
// Уровень логирования. Возможные значения: [ "NONE", "ERROR", "WARN", "INFO", "DEBUG" ]. Значение по умолчанию: "NONE".
Level = INFO
// Идентификатор логирования. По умолчанию: "InfEngine Compiler".
Identificator = InfEngine Compiler
[Swap]
// Swap файл для компиляции.
FilePath = tmp/swap
// Ограничение памяти. Значение по умолчанию: "0" ( Swap отключен ).
MemoryLimit = 10000000
[InfCompiler]
// Корневой каталог для DL данных.
DLDataDir = data/dlstable
// Путь к списку файлов с шаблонами на языке DL.
DLPatternsList = dl.lst
// Путь к списку файлов со словарями на языке DL.
DLDictsList = dict.lst
// Путь к списку переменных, используемых в Диалоговом Ядре.
DLVarsList = defvars.lst
// Путь к целевой базе.
TargetPath = dldata.ie2
// Флаг жесткости компиляции. Возможные значения: [ "TRUE", "FALSE" ]. Значения по умолчанию: "TRUE"
StrictMode = true
// Путь к файлу с алиасами на языке DL.
DLAliases = aliases.dl
// Путь к списку файлов с синонимами.
SynonymsConfFile = syn.lst
// Корневой путь для файлов с синонимами.
SynonymsRootDir = synonyms
Сервис Диалогового Ядра - InfServer
Получение подсказки поиспользованию:
InfServer --help
Вывод текущей версии компилятора и информации по сборке:
InfServer --version
// Конфигурация Диалогового Ядра.
[Functions]
// Директория с библиотеками внешних функций.
RootDir = release/lib/functions
// Список внешних функций.
ConfigFile = conf/functions.lst
[Log]
// Уровень логирования. Возможные значения: [ "NONE", "ERROR", "WARN", "INFO", "DEBUG" ]. Значение по умолчанию: "NONE".
Level = WARN
// Идентификатор логирования. По умолчанию: "InfEngine Server".
Identificator = InfEngine Server
// Flag for logging all data flow between server and clients. Default value: "false".
// Флаг для логгирования всех данных проходящих через Диалоговое Ядро.
DataFlow = false
[Cache]
// Сервер кэширования.
Servers = localhost:11211
// TTL для кэш записей. Значение по умолчанию: "604800" ( одна неделя ).
TTL = 604800
[InfServer]
// Путь к бинарной Базе Знаний.
BasePath = release/dldata/dldata.ie2
// Максимальное число запросов, обрабатываемых одним процессом. Значение по умолчанию: "10000".
MaxRequestsNumber = 1000
// Таймаут для запроса. Значение по умолчанию: "30".
TimeOut = 30
// Путь к файлу с алиасами на языке DL.
DLAliases = release/dldata/aliases.dl
// Флаг отладочного режима.
DebugMode = YES
Процесс Сервер - Сервис реализующий запуск Сервисов Диалогового Ядра в мультипроцессном режиме
ap-process-server path-to-inf-server
# Путь к InfServer.
FilterPath ./bin/InfServer
# Параметры запуска InfServer.
FilterParam ./conf/InfServer.conf
# Сокет, который процесс-сервер будет слушать.
Listen tcp::2255
# Логгирование.
LogLevel 0
SyslogFacility local3
# Путь к файлу с pid'ом процесс сервера.
PidFile ./tmp/process-server.pid
# Максимальное количество одновременных процессов InfServer.
MaxFilters 1
# Количество процессов InfServer, которые будут запущены при старте процесс-сервера.
StartFilters 0
# Минимальное разрешенное количество запущенных процессов InfServer.
MinSpareFilters 0
Пример Базы Знаний и формата всех необходимых для компиляции файлов представлен в директории /docker/dldata.