[Open source, Python, Natural Language Processing, Голосовые интерфейсы] Новые возможности для Python-разработчиков: SmartApp Framework в open source
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Платформа SmartMarket позволяет разработчику с любым уровнем подготовки создавать мультимодальные приложения для виртуальных ассистентов Салют, даже без программирования. Конечно, если хочется сделать что-то красивое и сложное, без кода не обойтись. Чтобы облегчить жизнь разработчикам, мы делимся с ними нашими наработками в open source. На митапе разработчиков SmartMarket, прошедшем в декабре, мы рассказали о новом фреймворке.
Ниже вы найдете текстовую версию доклада и его видеозапись.
Извините, данный ресурс не поддреживается. :(
Друзья, привет! Меня зовут Кристина, я backend-разработчик SberDevices и тимлид сервиса управления диалогом, который используется для работы виртуальных ассистентов Салют. Расскажу вам сегодня о новом инструменте SmartMarket – SmartApp Framework, который мы выложили в open source.
Итак, давайте посмотрим, что же это такое. Во-первых, это Python-фреймворк, который создан для того, чтобы вы могли разрабатывать backend для смартапов с поддержкой виртуальных ассистентов Салют. Мы активно используем этот фреймворк внутри Сбера, большое число наших собственных смартапов построено на нем. Это такие диалоговые приложения, как погода, текущее время, многие банковские навыки, это и диалоговая часть Canvas App, про который очень хорошо и подробно рассказал мой коллега Антон. Наш самый любимый и вкусный пример Canvas App – это заказ попкорна, а также это app каталога.
C помощью фреймворка можно разрабатывать диалоговую часть Native App, как яркий пример – это app видео. (О разных типах смартапов можно узнать здесь. – Примеч. ред.)
Диалоговая механика
Давайте рассмотрим, что нам предоставляет фреймворк, на чем он основан. Одна из его основных особенностей в том, что диалоговая механика построена на механизме слотфиллинга. Что это такое? Приведу пример. Допустим, мы с вами хотим создать диалоговый навык P2P-перевода. Диалоговую часть можно схематично описать некоей формой, поля которой – это те сущности, которые мы хотим узнать у пользователя. В частности, для случая P2P-перевода мы хотим у пользователя узнать его имя, сумму, которую он хочет перевести, и согласие на подтверждение операции.
Одно из основных свойств поля – филлер. Филлер – это сущность, извлекающая из запроса пользователя информацию, которую мы хотим узнать. Помимо этого у поля есть свойство — question, которое позволяет задать вопрос пользователю.
Здесь есть несколько важных, на мой взгляд, моментов. Во-первых, диалог может строиться в произвольном порядке. Например, по шагам, когда пользователь сначала называет получателя, затем сумму. Также можно сказать в одном предложении: «Переведи 100 рублей папе». Или просто: «Переведи 100 рублей», и ассистент уточнит: «Кому?». Таким образом, нет необходимости переспрашивать у пользователя информацию и учитывать всю вариативность в описании диалога.
Извлеченные из диалога сущности можно переиспользовать, например, в других сценариях смартапа или далее по сценарию, это возможно «из коробки».
Сам диалоговый сценарий мы можем описывать несколькими путями. Первый и самый простой – декларативно с помощью нашего внутреннего языка DSL, который выглядит, как JSON. Здесь я привела пример того, как декларативно описать поле, которое извлекает имя пользователя и задает ему вопрос.
Но стоит помнить, что это все-таки фреймворк, то есть не только DSL, но и много кода. Мы старались проектировать фреймворк так, чтобы разработчик практически любую его часть мог легко переопределить. Сразу после входа в ваше приложение доступен его config, в котором все базовые классы можно легко переопределить, поддержав интерфейс. Мы этому посвятили целый раздел нашей документации для разработчика.
Предобработка текста
На практике механизм слот филлинга плохо работает без хорошей предобработки текста. Каждый запрос от пользователя перед тем, как попадает в ваш смартап, проходит этап предобработки, что позволяет внутри фреймворка извлекать такие именованные сущности, как: временной интервал, организация, локация, ФИО, валюта, сумма и многие другие.
На слайде приведен небольшой пример того, как выглядит результат предобработки текста, который приходит в смартап.
Работать с сырым JSON неудобно, поэтому для разработчиков внутри SmartApp Framework реализовано представление результатов предобработки в виде объектов классов, позволяющих удобно обращаться к сущностям предобработки. Благодаря этому филлер, который извлекает из предобработанного текста фамилию, имя, отчество пользователя, можно описать одной строкой на DSL или парой строк кода.
Запуск и тестирование смартапа
Допустим, вы – разработчик, не зарегистрированный в SmartMarket, вам не хочется подключаться к нашему виртуальному ассистенту, но, тем не менее, написать и запустить свой смартап вы можете. Внутри SmartApp Framework реализовано локальное тестирование. При этом вы будете видеть подробный лог того, что у вас происходит. Но есть одна особенность: смартап должен принимать на вход предобработанный текст. В фреймворке есть модуль предобработки текста. Это не полноценная платформенная предобработка, в ней присутствуюет морфология, леммы, но отсутствуют извлекаемые сущности. Тем не менее этого достаточно для запуска прототипа.
Если вы зарегистрированы в SmartApp Studio, вы умеете регистрировать свой вебхук и хотите попробовать запустить фреймворк, вам нужно сделать три простых шага:
- первый – это поставить сам фреймворк из GitHub;
- второй шаг – создать смартап командой create_app. Вместе с проектом развернётся пример диалогового сценария для того, чтобы вам было проще начать разработку;
- третий – командой run_app вы запускаете смартап и уже можете тестировать. «Из коробки» вам будет доступен тестовый сценарий, который «знакомится с пользователем» и показывает базовые умения ассистента.
На этом у меня все. Будем рады вашим отзывам, пулреквестам и даже issues. SmartApp Framework доступен по ссылке.
***
Приглашаем 11 февраля на Второй онлайн-митап разработчиков SmartMarket.
В этот раз поговорим об устройстве хорошего мультимодального приложения для виртуальных ассистентов Салют, возможностях ASR и TTS, а также о монетизации смартапов на платформе SmartMarket.
Узнать подробнее, что вас ждет на митапе, и зарегистрироваться на него можноздесь.
===========
Источник:
habr.com
===========
Похожие новости:
- [Алгоритмы, Машинное обучение, Исследования и прогнозы в IT, Искусственный интеллект] Исследователи изучают, как GPT-3 разбирает входящую почту
- [Поисковые технологии, Open source, Sphinx] Manticore Search — форк Sphinx: отчёт за 3 года
- [Python, Big Data, GitHub] Я спарсил больше 1000 топовых Github-профилей по машинному обучению и вот что я узнал (перевод)
- [Open source, Программирование, Java, Kotlin] Jmix / CUBA Platform: итоги 2020 и планы на 2021 год
- [Open source, Разработка мобильных приложений, GitHub, Софт] На GitHub предлагают запустить каталог мобильных приложений
- [Информационная безопасность, Open source, Распределённые системы, Социальные сети и сообщества, Криптовалюты] aSocial — полностью распределенная социальная сеть
- [Open source, *nix] FOSS News №55 – дайджест материалов о свободном и открытом ПО за 1-7 февраля 2021 года
- [Python, SQL] Создаем схему базы данных на SQLAlchemy
- [Firefox, Разработка веб-сайтов, Open source, Google Chrome, Браузеры] Невменяемый, необъятный масштаб браузеров (перевод)
- [Информационная безопасность, Open source, Google API, Софт] Google запустила программу поиска уязвимостей в открытых проектах
Теги для поиска: #_open_source, #_python, #_natural_language_processing, #_golosovye_interfejsy (Голосовые интерфейсы), #_open_source, #_python, #_framework, #_virtualnye_assistenty (виртуальные ассистенты), #_nlp, #_prilozhenija_dlja_zarabotka (приложения для заработка), #_smartmarket, #_blog_kompanii_sberdevices (
Блог компании SberDevices
), #_open_source, #_python, #_natural_language_processing, #_golosovye_interfejsy (
Голосовые интерфейсы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:31
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Платформа SmartMarket позволяет разработчику с любым уровнем подготовки создавать мультимодальные приложения для виртуальных ассистентов Салют, даже без программирования. Конечно, если хочется сделать что-то красивое и сложное, без кода не обойтись. Чтобы облегчить жизнь разработчикам, мы делимся с ними нашими наработками в open source. На митапе разработчиков SmartMarket, прошедшем в декабре, мы рассказали о новом фреймворке. Ниже вы найдете текстовую версию доклада и его видеозапись. Извините, данный ресурс не поддреживается. :( Друзья, привет! Меня зовут Кристина, я backend-разработчик SberDevices и тимлид сервиса управления диалогом, который используется для работы виртуальных ассистентов Салют. Расскажу вам сегодня о новом инструменте SmartMarket – SmartApp Framework, который мы выложили в open source. Итак, давайте посмотрим, что же это такое. Во-первых, это Python-фреймворк, который создан для того, чтобы вы могли разрабатывать backend для смартапов с поддержкой виртуальных ассистентов Салют. Мы активно используем этот фреймворк внутри Сбера, большое число наших собственных смартапов построено на нем. Это такие диалоговые приложения, как погода, текущее время, многие банковские навыки, это и диалоговая часть Canvas App, про который очень хорошо и подробно рассказал мой коллега Антон. Наш самый любимый и вкусный пример Canvas App – это заказ попкорна, а также это app каталога. C помощью фреймворка можно разрабатывать диалоговую часть Native App, как яркий пример – это app видео. (О разных типах смартапов можно узнать здесь. – Примеч. ред.) Диалоговая механика Давайте рассмотрим, что нам предоставляет фреймворк, на чем он основан. Одна из его основных особенностей в том, что диалоговая механика построена на механизме слотфиллинга. Что это такое? Приведу пример. Допустим, мы с вами хотим создать диалоговый навык P2P-перевода. Диалоговую часть можно схематично описать некоей формой, поля которой – это те сущности, которые мы хотим узнать у пользователя. В частности, для случая P2P-перевода мы хотим у пользователя узнать его имя, сумму, которую он хочет перевести, и согласие на подтверждение операции. Одно из основных свойств поля – филлер. Филлер – это сущность, извлекающая из запроса пользователя информацию, которую мы хотим узнать. Помимо этого у поля есть свойство — question, которое позволяет задать вопрос пользователю. Здесь есть несколько важных, на мой взгляд, моментов. Во-первых, диалог может строиться в произвольном порядке. Например, по шагам, когда пользователь сначала называет получателя, затем сумму. Также можно сказать в одном предложении: «Переведи 100 рублей папе». Или просто: «Переведи 100 рублей», и ассистент уточнит: «Кому?». Таким образом, нет необходимости переспрашивать у пользователя информацию и учитывать всю вариативность в описании диалога. Извлеченные из диалога сущности можно переиспользовать, например, в других сценариях смартапа или далее по сценарию, это возможно «из коробки». Сам диалоговый сценарий мы можем описывать несколькими путями. Первый и самый простой – декларативно с помощью нашего внутреннего языка DSL, который выглядит, как JSON. Здесь я привела пример того, как декларативно описать поле, которое извлекает имя пользователя и задает ему вопрос. Но стоит помнить, что это все-таки фреймворк, то есть не только DSL, но и много кода. Мы старались проектировать фреймворк так, чтобы разработчик практически любую его часть мог легко переопределить. Сразу после входа в ваше приложение доступен его config, в котором все базовые классы можно легко переопределить, поддержав интерфейс. Мы этому посвятили целый раздел нашей документации для разработчика. Предобработка текста На практике механизм слот филлинга плохо работает без хорошей предобработки текста. Каждый запрос от пользователя перед тем, как попадает в ваш смартап, проходит этап предобработки, что позволяет внутри фреймворка извлекать такие именованные сущности, как: временной интервал, организация, локация, ФИО, валюта, сумма и многие другие. На слайде приведен небольшой пример того, как выглядит результат предобработки текста, который приходит в смартап. Работать с сырым JSON неудобно, поэтому для разработчиков внутри SmartApp Framework реализовано представление результатов предобработки в виде объектов классов, позволяющих удобно обращаться к сущностям предобработки. Благодаря этому филлер, который извлекает из предобработанного текста фамилию, имя, отчество пользователя, можно описать одной строкой на DSL или парой строк кода. Запуск и тестирование смартапа Допустим, вы – разработчик, не зарегистрированный в SmartMarket, вам не хочется подключаться к нашему виртуальному ассистенту, но, тем не менее, написать и запустить свой смартап вы можете. Внутри SmartApp Framework реализовано локальное тестирование. При этом вы будете видеть подробный лог того, что у вас происходит. Но есть одна особенность: смартап должен принимать на вход предобработанный текст. В фреймворке есть модуль предобработки текста. Это не полноценная платформенная предобработка, в ней присутствуюет морфология, леммы, но отсутствуют извлекаемые сущности. Тем не менее этого достаточно для запуска прототипа. Если вы зарегистрированы в SmartApp Studio, вы умеете регистрировать свой вебхук и хотите попробовать запустить фреймворк, вам нужно сделать три простых шага:
На этом у меня все. Будем рады вашим отзывам, пулреквестам и даже issues. SmartApp Framework доступен по ссылке. *** Приглашаем 11 февраля на Второй онлайн-митап разработчиков SmartMarket. В этот раз поговорим об устройстве хорошего мультимодального приложения для виртуальных ассистентов Салют, возможностях ASR и TTS, а также о монетизации смартапов на платформе SmartMarket. Узнать подробнее, что вас ждет на митапе, и зарегистрироваться на него можноздесь. =========== Источник: habr.com =========== Похожие новости:
Блог компании SberDevices ), #_open_source, #_python, #_natural_language_processing, #_golosovye_interfejsy ( Голосовые интерфейсы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:31
Часовой пояс: UTC + 5