Создаем свою команду чат-бота для Google Home, Assistant через API.AI Dialogflow
В последние несколько лет мы слышим, что «будущее — это прежде всего искусственный интеллект».
Искусственный интеллект делает компьютеры «умными», чтобы они могли думать самостоятельно и быть еще более полезными для нас. Понятно, что Google вкладывает значительные средства в следующие области:
- Машинное обучение (Machine learning ) — обучение компьютеров тому, как распознавать патерны данных и оперировать с ними.
- Распознавание речи и понимание языка — смыслы, способность понимать со всеми небольшими различиями и нюансами, когда вы говорите.
Сегодня мы можем видеть все это вместе в Google Assistant. Это позволяет, общаясь с Google, быть более продуктивным. В этой статье мы рассмотрим, как все это работает, создав новую команду (Action) для Google home. В то же время у нас будет замечательный бот, который в будущем можно интегрировать с другими сервисами (например, Slack).
Здорово?
Что именно? API.AI Dialogflow
Google Home — это колонка, активируемая голосом, которая стоит у вас дома. Google Assistant — это проводник между пользователями и Google. Получить результат можно, поговорив с помощником. Пользователи могут многое сделать, просто используя Ассистент напрямую. Чтобы узнать больше о помощнике, посмотрите это короткое видео ниже.
Actions on Google позволяют разработчикам расширять помощника. Это то, на чем мы собираемся сосредоточиться сегодня в нашем примере анекдот про животных. В этой статье вы узнаете, как создать свою собственную команду в Google с API.AI.
Кстати, вы можете увидеть видео версию этого текста ниже.
Мы собираемся использовать API.AI Dialogflow, который является платформой для взаимодействия с пользователем, иными словами, он поможет нам «общаться» с машинами таким образом, чтобы техника лучше понимала нас.
Как работает команда «разговор»?
Пользователь должен вызвать вашу команду. Вы говорите фразу типа «Ok, Google, расскажи анекдот про животных (Ok Google, talk to Animal joke)». Это сообщает Google название команды, к которой нужно обратиться.
С этого момента пользователь ведет разговор внутри вашей команды. Команда генерирует вывод диалога, который будет разговаривать с пользователем. Затем человек отправляет запрос, ваш экшн обрабатывает его и отвечает снова. У пользователя есть двусторонний диалог, пока разговор не закончится.
На диаграмме представлено нагляднее схема работы «команды».
Что такое API.AI?
API.AI позволяет машине понять, что пытается сказать пользователь, и помогает подобрать ответ. Вы вводите в качестве примера предложения, которые может говорить человек.
Вы можете указать, какие ключевые параметры вам нужно получить от говорщего. Далее используется машинное обучение, чтобы понять предложение и управлять беседой.
Нажмите на следующую ссылку, чтобы войти в API.AI.
После входа в систему вы можете создать своего первого агента. Вам нужно будет:
- Дать вашему агенту имя. В нашем случае это будет «AnimalJoker». Обратите внимание, что имя агента не может содержать пробелов между словами.
- Дайте краткое описание, чтобы другие пользователи знали, что будет делать эта команда. В нашем случае введите: «Действие, которое рассказывает анекдоты о животных. Но только хороший».
- Нажмите «Сохранить». Это кнопка в правом верхнем углу экрана.
Что такое объекты?
Объекты (Entities) — это значения, которые мы пытаемся извлечь из фраз пользователя. Вроде как заполнять форму, запрашивать детали у пользователя. API.AI будет выполнять запросы, пока не извлечет необходимую информацию. Вот так выглядит объект в API.AI
Мы создадим объект Animal.
Первый шаг — нажать кнопку «Создать объект (Create Entity)» (она находится в правом верхнем углу).
Затем вы должны напечатать названия животных.
Окончательный результат должен выглядеть примерно так, как показано ниже.
Что нужно запомнить:
- Вы должны «помочь» алгоритму машинного обучения API.AI путем предоставления синонимов. Например, собака также может быть щенком. В нашем случае можно пока ограничится 2–3 синонимами.
- В реальном мире постарайтесь привести как можно больше примеров, чтобы охватить больше случаев.
Что такое цель?
Цель (An Intent) активируется рядом фраз пользователя (“user says”). Это может быть что-то вроде «пожалуйста, расскажите мне шутку с животными» или «Дайте мне рецепт бургера».
- Вам нужно подобрать достаточно предложений для обучения алгоритма API.AI. Тогда, даже если пользователь не скажет точно слова, которые вы внесли, API.AI все равно сможет их понять!
- Вы должны создать отдельные цели для разных типов действий.
- Не пытайтесь объединить их все вместе.
В нашем примере мы создадим только две цели:
- Tell_Joke intent — эта цель будет обрабатывать шутки.
- Quit intent — эта цель будет обрабатывать завершение действия.
Создайте цель «Tell_Joke»
После того, как у нас есть наш новый объект $Animal. Если вы заметили $ перед словом — это не ошибка. Это способ, которым мы будем ссылаться на наш новый объект. Думайте об этом как о специальном знаке, чтобы показать нам, что мы имеем в виду наш объект, а не просто другое животное.
Пришло время создать цель, которая расскажет нам анекдоты.
Сначала нажмите кнопку «Создать цель» (‘Create Intent’).
Далее начните вводить несколько предложений, которые вы хотите использовать, чтобы получить анекдот. Например, «Пожалуйста, расскажите мне шутку про собак». Введите несколько предложений, чтобы API.AI мог начать обучение своим алгоритмом. Вы можете видеть, что при вводе API.AI автоматически распознает, что фраза включает один из объектов, поэтому выделяет его.
Посмотрите ниже, как это должно выглядеть.
Затем мы пропускаем часть ‘Events’ и в разделе ‘Action’ нам нужно убедиться, что объект @Animal там присутствует. В строке ввода «user says» мы должны напечатать «Скажите, какое животное вам нравится», так как в случаях, когда человек не назвал животное, будет ясно, что нам нужен этот объект.
Наконец, в разделе «Text Response» мы записываем анекдоты. Вы можете взять несколько идей из изображения ниже.
Обратите внимание, что мы используем значение $Animal в нашем ответе, чтобы создать шутку, основанную на животном, которого попросил пользователь.
Заполнив все лучшими анекдотами и шутамии, не забудьте нажать кнопку «Сохранить» (Save) в правом верхнем углу экрана.
Создайте цель «Выход»
Хорошая манера при дизайне приложения — это возможность закончить разговор по желанию пользователя.
Вы должны снова нажать кнопку «Create Intent». Затем начните вводить несколько предложений, которые завершат разговор. Например, «пока-пока» или «Пока, шутничок»
Ниже показано, как это намерение должно выглядеть.
И последнее, но не менее важное: вам необходимо установить флажок «Завершить разговор» (end conversation), чтобы он знал, как закончить разговор на этом этапе.
Мы почти закончили!
Кстати, если вы хотите загрузить все эти определения, не выполняя пошаговое руководство, вы можете сделать это за 3 простых шага.
Смотрите изображение ниже.
Как только вы импортируете все из zip-файла, вы можете начать добавлять или редактировать больше целей и объектов.
Тестирование. Integrations
Нажмите «Интеграция» (Integrations) в правом меню. Откроется страница агента со всеми вариантами ее интеграции с другими службами (например, приложениями чата, твиттером и т. д.).
У вас есть два простых и быстрых способа проверить свое творение. Одним из них является переход по ссылке, которую вы видите в разделе «Страница агента» (Agent Page). Но не забудьте включить «Опубликовать» (Publish), прежде чем нажимать ссылку своего нового бота.
Другой способ — нажать на поле «Actions on Google» в разделе «Интеграция в один клик» (One-click integration). Это позволит вам проверить свою работу, как-будто она будет работать в Google Home.
Когда вы нажмете «Действия в Google» (Actions on Google), вы увидите это диалоговое окно:
Заполните имя вызова и нажмите кнопку «Предварительный просмотр» (Preview).
Вы получите экран, который позволит вам поговорить с симулятором. Смотрите изображение ниже.
Крутой аспект веб-симулятора заключается в том, что он даст вам все ответы на английском языке в виде текста / звуков и справа — полный объект JSON.
Лучшие практики
- Существует несколько версий относительно того, как приложение Assistant может быть названо и вызываться на самом устройстве.
- Поддерживаются только приложения-помощники с четко определенным вызовом. То есть предложение-вызов должно быть четким и коротким.
- Руководство объясняет все правила, связанные с этим.
Будьте сильными и создавайте собственные классные экшены!
Первоначально опубликовано на Ido Green