Рубрики
Без рубрики

Свободный API для создания чат-ботов на Java (и почему это наша третья попытка определить отличный язык определения ботов!)

В Katkit мы продолжаем наши поиски, чтобы найти оптимальный язык как для разработки, так и для разработки чат-ботов. Некоторые т… С тегами fluent, java, nlp, бот.

В Katkit мы продолжаем наш поиск оптимального языка для разработки ботов и чат-ботов. Некоторое время назад мы объяснили наше решение перейти на DSL (Доменный язык), основанный на семантике государственной машины , чтобы помочь вам создавать более мощных ботов.

Этот DSL определенно был улучшением по сравнению с нашей первой попыткой создать DSL чат-бота, но мы быстро заметили некоторые проблемы, приятные функции или громоздкие вещи, с которыми нам все еще приходилось иметь дело. Например, язык выполнения, необходимый для интеграции повторно используемых функций/методов для поддержки сложных ботов, над которыми мы работаем. Управление зависимостями также было кошмаром из-за множества уровней, которые необходимо было настроить. Большинство из этих проблем не имели ничего общего с семантикой языка, но с синтаксисом и инфраструктурой.

Поэтому мы решили сохранить семантику конечного автомата, но изменить синтаксис языка, перейдя с внешнего DSL на Внутренний DSL . Внешний DSL – это независимый язык (со своей собственной грамматикой, синтаксическим анализатором, компилятором,…). Внутренние DSL встроены в язык общего назначения, обычно в виде определенной формы API, известной как Fluent API или fluent интерфейс .

Переход на внутренний DSL приносит несколько преимуществ которые, мы надеемся, вы оцените:

  • Не нужно изучать новый язык, просто используйте Java
  • Нет необходимости использовать какой-либо конкретный инструмент для создания ботов Katkit, подойдет любая Java IDE
  • Используйте все существующие инструменты Java при создании, отладке и тестировании ботов
  • Используйте всю мощь языка Java (и всех библиотек) для создания сложных ботов (при необходимости).

Все это при сохранении четко определенной и высокоуровневой семантики, обеспечиваемой нашим внутренним интерфейсом DSL/fluent. Таким образом, мы в основном сочетаем преимущества наличия определенного DSL-чата с возможностями языка общего назначения.

Теперь мы выпустили новую версию Katkit и ее движок выполнения, чтобы вы могли начать использовать этот новый синтаксис при создании своих ботов. Мы добавим дополнительную документацию по новому Свободный интерфейс/DSL-конструкции скоро, но позвольте мне представить вам ключевые из них в этом примере GreetingsBot, простой бот, который просто отвечает, когда обнаруживает, что вы его приветствуете. Вы можете найти полный исходный код бота здесь, в следующем я просто сосредоточусь на нескольких основных частях.

Определение намерения

Мы можем легко создать намерения, которые бот должен распознавать (в данном примере приветствия и то, как пользователь чувствует себя прямо сейчас), и обучающие предложения, которые будут использоваться для обучения бота их пониманию (эти предложения будут использоваться, например, при настройке бота для использования DialogFlow в качестве поставщика распознавания намерений ).

Аналогичным образом вы также можете определить сопоставление сущностей и параметров для сбора соответствующих данных из высказывания пользователя во время процесса сопоставления (которые будут использоваться позже в ответе, например, получение имени пользователя и использование его для ответа ей более личным способом позже в рабочем процессе бота).

Определение платформы

Xat kit поддерживает несколько платформ (и вы можете создать свою собственную!) итак, следующий шаг – объявить, какие комбинации платформ будет использовать ваш бот (либо вызывая действия на платформе, либо получая от нее события). Это может быть несколько (например, наши боты, которые позволяют вам общаться с GitHub из Slack ). В этом примере мы используем нашу веб-чат-платформу React в качестве единственного ввода/вывода бота.

Течение разговора и определение обеих реакций

Наконец, для каждого намерения мы определяем ответ бота. Поскольку наш язык чат-ботов основан на семантике государственной машины , мы можем определять состояния, (условные) переходы между состояниями, состояния по умолчанию и локальные резервные состояния… для создания настолько сложных разговоров, насколько это необходимо.

Как вы можете видеть, дизайн API Fluent в значительной степени зависит от цепочки методов для улучшения разборчивости кода и уменьшения необходимости в промежуточных переменных. В то же время ключевые концепции обоих проектов (намерение, состояние, платформа,…) немедленно доступны разработчику ботов, которому не нужно отвлекаться на шаблонный или продвинутый код Java (если он/она этого не хочет).

Кстати, мы понимаем, что невозможно создать единый язык, который бы подходил для всех типов создателей чат-ботов. Нет такой вещи, как язык ботов, чтобы управлять ими всеми . Опыт, который мы имели с не-разработчиками, привел к выводу: каким бы абстрактным ни был наш DSL, он все еще был слишком техническим для использования . Поэтому вместо того, чтобы продолжать следовать этой мечте, мы сосредоточились на создании среды ботов, простой в использовании разработчиками, позволяющей им повторно использовать предпочитаемый язык, IDE и инструменты. Мы будем продолжать добавлять дополнительные документы и учебные пособия, объясняющие новый синтаксис, но некоторые из ключевых методов описаны здесь .

Мы уверены, что техническим специалистам понравится это новое предложение по использованию свободного интерфейса для определения ботов. В то время как для нетехнических людей будут разработаны другие интерфейсы (например, см. Наше графическое представление загрузки или даже более (полу)автоматические способы создания бота из любой информации, которая у них уже есть) поверх этого. Ожидайте новостей и на других фронтах! И, как всегда, дайте нам знать, что вы думаете об этом новом способе определения ботов в Xatkit.

Оригинал: “https://dev.to/jcabot/a-fluent-api-to-create-chatbots-in-java-and-why-this-is-our-third-attempt-to-define-a-great-bot-definition-language-379c”