Многопрофильность в Google Dialogflow - PullRequest
4 голосов
/ 16 апреля 2020

Моя компания в настоящее время пытается создать многопользовательского чат-бота с помощью Google Dialogflow. Мы изучаем имеющиеся в нашем распоряжении инструменты, но документация по topi c все еще немного скудна. Наше понимание и определение многопользовательской аренды в этом контексте позволило бы нам иметь немного разные разговорные потоки в зависимости от компании, в которой работает конечный пользователь. Например:

Пользователь A от компании Foo хочет заказать мороженое. Компания Foo предоставляет набор вкусов (шоколад, ваниль, мята) и обслуживает только конусы мороженого, но позволяет пользователям добавлять гарниры к их мороженому (шоколадная стружка, сахарная посыпка).

Пользователь B от компании Bar хочет заказать мороженое. Компания Бар предоставляет набор вкусов (клубника, фисташка, лимон) и предлагает мороженое и чашки, но не предлагает гарниров.

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

Нашей вторичной целью здесь было бы свести к минимуму избыточность на стороне Dialogflow: в идеале должен быть только один агент, и в идеале намерения, которые не требуют дублирования, не должны дублироваться.

Наша архитектура не управляется клиентом; клиент всегда перехватывается нашим внутренним сервером (C#), который отвечает за обработку взаимодействия с Dialogflow. Мы считаем, что это дает нам большую гибкость и лучшую интеграцию с нашим существующим стеком.

Мы определили следующие многообещающие функции:

  • Суб-намерения
  • Входные контексты
  • Переопределяемые объекты
  • Мега / субагенты

Но мы еще не определили четкого пути. Мы также рассматриваем доступные альтернативы, такие как Microsoft BotBuilder, Amazon AWS Chatbot и ChatterBot с открытым исходным кодом.

Короче говоря, есть ли лучшая практика, когда дело доходит до этого? Если нет, то любые идеи и мысли по этому вопросу будут приветствоваться.

1 Ответ

3 голосов
/ 16 апреля 2020

это действительно интересный вопрос: -).
Прежде всего позвольте мне сказать, что не существует устоявшихся правил, мир Chatbot развивается, когда мы говорим.

Лично я вижу 2 подхода:

  • на платформе : чат-чат построен на платформе (ie DialogFlow , Chatfuel и др. c (много чего есть), который предоставляет возможности NLP, конструктор диалогов, метрики и (в основном все платформы) возможность добавить веб-крюк для интеграции вашего бэкэнда
  • на основе фреймворка : Chatbot построен на низкоуровневом фреймворке (ie MS Bot, Rasa ), который поддерживает проектирование / разработку / выполнение диалога в вашем коде .

В первом случае использование DialogFlow дает несколько преимуществ, но у вас есть 2 основных ограничения: зависимость от облака (все пользовательские трафик c отправляются через Google) и ограниченная гибкость в разработке вашего разговор.
Если вам удастся поддерживать один поток разговоров, тогда ваш веб-крючок может заполнять данные по требованию (ie разные варианты, разные варианты), это очень выполнимо.
Вы Разговор может также содержать ответвления (добавьте garni sh), которые вы активируете с помощью события (сгенерированного из webhook, если у данных компании есть определенный флаг), это также выполнимо, но начинает делать разговор более громоздким.

Во втором подходе у вас гораздо больше гибкости (весь поток разговоров находится в вашем коде), но, очевидно, вам необходимо «предоставить» недостающие функции, например, интеграцию LUIS для NLU и т. Д. c.
Rasa - хороший фреймворк, если этот подход кажется вам интересным: он основан на Python и предлагает встроенные возможности NLU, а также интеграцию каналов.

Надеюсь, это поможет, удачи !

Беппе

...