Чат-боты, и как нам с этим поможет Microsoft
Выбор Microsoft в качестве основной сравнительной платформы для исследования не случаен. Компания проводит большую работу в области популяризации и развития интеллектуальных ботов. Одним из основных шагов, а данном направлении можно считать представленный ею на выставке Build 2016 бесплатный фреймворк для создания собственных ботов Microsoft Bot Framework, не привязанный к конкретной платформе и с открытым исходным кодом.
Введение
Обобщенно, чат-бот представляет собой программу, которая может имитировать ведение осмысленного диалога с пользователем на понятном ему языке с использованием текста или речи. Целью такого диалога, как правило, является выполнение ботом команд и запросов пользователя. Не являясь по сути чем-то кардинально новым, чат-боты, тем не менее, позиционируются на ранке как некое ноу-хау. Не последнюю роль в этом играет определенная шумиха, создаваемая вокруг таких ботов, как умных и, зачастую, незаменимых помощников для пользователя.
Чат-боты не дают вам скучать во время общения с другими пользователями мессенджера, вовремя развлекая свежим анекдотом или игрой; присылают свежий прогноз погоды; помогают с заказом пиццы; дают рекомендации о здоровом питании в ответ на сообщение о вашем весе и артериальном давлении; умело ведут с вами диалог на сайте юридических услуг, имитируя реального собеседника; приятным голосом спрашивают о вашем настроении и, на основе анализа ответа, могут подобрать музыкальную композицию в смартфоне; уверенно справляются с ролью специалиста службы поддержки какого-либо сервиса посредством электронной почты. Это лишь малая часть примеров с реальным использованием интеллектуальных ботов. Существует также отдельная группа корпоративных ботов, решающая не менее важные корпоративные задачи.
Как и любая новая технология, чат-бот является логическим развитием более привычных методов коммуникации и доведения информации до конечного пользователя: сайты, приложения, push-уведомления и т.п. При этом данная технология привлекательна, в первую очередь, ориентированностью бота на конечного пользователя, интегрированностью в конечную платформу, легкостью в использовании, интеллектуальностью, дружелюбием.
Крупные IT-игроки (в первую очередь, на рынке онлайн-коммуникаций) давно оценили потенциал и возможные выгоды от использования чат-ботов в своих решениях. Боты в том или ином виде активно используются во всех популярных мессенджерах, интернет-платформах и мобильных устройствах.
Не осталась в стороне и Microsoft, проведя работы сразу по нескольким направлениям: помощник для мобильных устройств Cortana; не совсем удачный, но, несомненно, интересный эксперимент с девушкой-ботом Тэй в Twitter; более удачный эксперимент в Китае с девушкой-ботом Xiaoice (Сяоис); боты для Skype; наконец, фреймворк Microsoft Bot Framework для создания и интеграции собственных ботов под различные платформы.
Немного истории
Первой чат-программой принято считать ELIZA, разработанную в 1964 году профессором Массачусетского института технологий Джозефом Вайзенбаумом. Программа пыталась имитировать общение пользователя с психотерапевтом и часто обескураживала своих пациентов поразительной правдоподобностью работы и фразами типа 'Хотите поговорить об этом?'.
После этого делалось еще множество попыток создания подобных виртуальных собеседников, но все они были достаточно просты и человек легко распознавал, что имеет дело с машиной.
Ввод в употребление термина 'чат-бот' приписывают разработчику Майклу Молдингу, который в 1994 году разработал программу для общения Julia и назвал ее именно чат-ботом. Программа была незамысловата, но, тем не менее, позволяла поддерживать более-менее осмысленный диалог и поддерживала функции самообучения.
В конце 1990-х начале 2000-x простые чат-боты активно применялись, например, в IRC и IM-программах, для внесения разнообразия в беседы пользователей и модерирования чатов. И, конечно, энтузиасты и исследователи ИИ со всего мира не оставляли попыток создания действительно 'умной' программы для ведения полноценного диалога с пользователем.
Все это, а также естественное развитие технологий, привело к значительному прогрессу в области создания интеллектуальных чат-ботов. К настоящему времени уже создана чат-программа, сумевшая успешно пройти тест Тьюринга. 8 июня 2014 года на организованном британским университетом Рединга мероприятии, программа, разработанная в Санкт-Петербурге, успешно сымитировала общение с настоящим человеком, сумев ввести в заблуждение часть экзаменаторов.
А базирующаяся на базе суперкомпьютера IBM Watson программа DeepQA может обрабатывать поступающие команды на естественном языке. Используемая для этого технология Nuance Communications используется и Apple в работе ассистентки Siri на устройствах этой компании.
Современные чат-боты достигли недостижимых для программ-пионеров типа ELIZA высот. Они используют передовые разработки в области анализа естественного языка и речи, обладают продвинутыми алгоритмами ИИ и способны к самообучению.
Области применения
Чат-ботов сейчас можно встретить практически на любой платформе, будь то мессенджер, веб-портал или смартфон. При этом все они используются в рамках определенных сценариев и под конкретные нужды пользователя.
Принято проводить следующее деление по основным сценариям использования чат-ботов:
- Техническая поддержка;
- Поиск по заданным параметрам;
- Потребление контента и развлечения;
- Покупки.
Техническая поддержка. Многие сервисные компании уже давно и успешно используют голосовых чат-ботов, а также текстовых ботов посредством электронной почты для организации техподдержки. При этом, по заявлениям некоторых таких компаний, им удается экономить до 40% средств, затрачиваемых ранее на техподдержку своих клиентов силами только персонала. Основным преимуществом чат-ботов в данном случае является возможность работы без перерывов и ночью, а также с большим количеством клиентов одновременно. Минусы обычно заключаются в недостаточной интеллектуальности таких ботов. В сложных случаях для решения проблемы клиента вынужден подключаться оператор.
Поиск по заданным параметрам. Применение чат-ботов для поиска в интернете, на мой взгляд, все еще недостаточно удобно по сравнению с классическими приемами работы. Конечно, если вы используете бота, встроенного в ваш смартфон или мессенджер, вам не придется переходить в другое приложение для начала поиска. Но вам все же придется каким-то образом сформулировать свой вопрос, а затем, возможно, ответить на некоторое число дополнительных вопросов от бота для достижения результата. При этом любая поисковая система, скорее всего, сразу же выдала бы вам значимый результат. Данному вопросу посвящена статья Ариэля Вербера, в которой он сравнивает удобство использования поиска с использованием бота и поисковой системы Google.
Потребление контента и развлечения. Эта область уже лучше освоена ботами, но здесь, как и в случае с поиском, возможны описанные ранее проблемы. Тем не менее, ситуацию значительно улучшает использование ботов, загружающих контент по подписке. В роли такого контента обычно выступают новости и статьи. При этом бот осуществляет не только доставку требуемого контента, но и фильтрует его по требуемой тематике, релевантности и т.п. Также бот может производить анализ истории загрузок пользователя и рекомендовать ему контент. Многие крупные информационные порталы и агрегаторы новостей активно используют собственных ботов для упрощения доступа к своим материалам. К данной области можно отнести также всевозможных ботов-помощников, игровых и развлекательных чат-ботов. Не секрет, что одна из самых популярных целей, для которых создаются боты в мессенджере Telegram — знакомства.
Покупки. Пожалуй, наиболее интересная область применения чат-ботов, позволяющая связать воедино виртуального-помощника и объекты реального мира, что вкупе с нацеленностью бота на конкретного пользователя и имитацией реального общения, определенным образом сближает их. Но, к сожалению, данный сценарий использования сейчас наименее проработан. Виной тому и частая невозможность прямой оплаты товара непосредственно через интерфейс бота, и принципиальная неприспособленность данного интерфейса для подобных операций. Для выбора конкретного товара чат-бот еще может быть полезен. Но работа с большим ассортиментом и сложные варианты торговли ему не по силам. В данном случае работа виртуального бота-торговца сводится к функциям поисковика.
Развитие чат-ботов неуклонно продолжается. Возникают как новые сферы их применения, так и улучшаются старые сценарии. Например, популярный среди североамериканских тинэйджеров мессенджер Kik, позволяет добавить бота к себе в чат путем сканирования смартфоном QR-кода. Так вы можете пообщаться, например, с виртуальным официантом в кафе и сделать заказ еще до того, как увидите настоящего. А в Китае уже успешно реализовали функцию платежей в мессенджере WeChat: в настоящее время в приложении активно развивается интернет-торговля, в том числе и посредством чат-ботов.
Рынок чат-ботов
Сегодня лидерство по использованию чат-ботов уверенно удерживают мессенджеры. И это неудивительно, ведь приложения для мгновенного обмена сообщениями и контентом между пользователями — самое подходящее место для чат-ботов. Именно активное развитие мессенджеров дало ощутимый толчок к практически повсеместному использованию чат-ботов. Компания Activate приводит статистику, из которой следует, что в мире сейчас используется как минимум один мессенджер на 2.5 миллиарда человек. А лидерами по популярности среди мессенджеров являются Facebook Messenger и WhatsApp. По прогнозам экспертов, в ближайшие 2–3 года пользователями мессенджеров, которые потеснят в популярности социальные сети, станут уже более половины жителей Земли.
Дополнительным фактором популяризации использования чат-ботов в мессенджерах является поддержка крупного бизнеса. Большинство компаний постепенно осознают, насколько выгоднее может быть создание и интеграция специализированых ботов для персонализованного продвижения своих товаров и услуг в мессенджерах, по сравнению с разработкой сложных интернет-порталов и приложений. К тому же, по наблюдениям аналитиков, в мире происходит неуклонное снижение интереса пользователей к новым приложениям. Большинство привыкло пользоваться уже проверенным набором мессенджеров, социальных сетей и программ, установленных на их устройствах.
Созданием чат-ботов сейчас занимаются как обычные пользователи для собственного развлечения, так и промышленные гиганты, для привлечения новой аудитории и эффективного продвижения услуг. Данное направление уже довольно популяризовано. В интернете вы сможете найти исчерпывающие руководства по созданию и продвижению своих чат-ботов любой направленности и сложности. Пример хорошей статьи на эту тему.
Одним из пионеров движения по внедрению чат-ботов в мессенджеры стал Telegram. В июне 2015 года компания Павла Дурова одной из первых запустила платформу Bot API, а также магазин для загрузки ботов. Сейчас в мессенджере Telegram насчитывается около 100 тыс. самых разнообразных ботов. Уже доступна улучшенная версия API для самостоятельного создания ботов Telegram Bot API 2.0. Для создания ботов может быть использован практически любой язык программирования: PHP, Python, Java, С#, Ruby. При этом вы можете создать своего собственного бота для Telegram вообще не обладая навыками программирования. Достаточно воспользоваться служебным аккаунтом @BotFather для регистрации нового бота и получения уникального id, затем посредством аккаунта @Paquebot вы сможете привязать своего бота к @Paquebot и начать рассылать сообщения всем подписчикам вашего нового бота.
Не отстают и другие мессенджеры. Facebook также анонсировала платформу для создания ботов в своем мессенджере в марте 2015 года. Возможности по созданию ботов стали частью представленного сервиса Messenger Platform, который позволяет интегрировать чат от Facebook в другие приложения. 'API для отправки и получения сообщений более чем достаточно. Но если вы хотите создать более сложного бота, то используйте наш Bot Engine', — отметил вице-президент Facebook Дэвид Маркус. Как отмечается, Bot Engine позволит 'научить' ботов вести себя различным образом в зависимости от ситуации. В отличие от конкурентов, Facebook уже разрешает отправлять пользователям не обычный текст, а интерактивные 'карточки' с изображениями, ссылками, кнопками и другими элементами, с которыми можно взаимодействовать. Переписываясь с роботом, пользователь может мгновенно забронировать столик в ресторане или в любой момент купить понравившийся продукт, перелистывая каталог товаров.
Разработка собственных сервисов для создания чат-ботов, внедрение ботов в мессенджеры и другие платформы уже давно стали не просто хорошим тоном, а жизненной необходимостью. Множество сервисов по всему миру активно продвигают идею использования ботов. Поисковики: американский Google и российский Яндекс; мессенджеры: китайский WeChat, японский Line, южнокорейский KakaoTalk, канадский Kik и т.д.
Производители смартфонов тоже не сидели сложа руки. Голосовые помощники Siri от Apple и Cortana от Microsoft активно используют голосовой интерфейс для выполнения запросов пользователей. Голосовой ассистент также есть у американской Amazon.
По мнению экспертов, в ближайшем будущем нас ожидает еще большая интеграция чат-ботов в существующие платформы, а так же усиление монетизации этого направления.
Вклад Microsoft
В марте 2016 года специалисты Microsoft разместили в Twitter чат-бота с именем Тэй (@TayandYOu). Также Тэй можно было добавить в список контактов в мессенджере Kik или социальной сети GroupMe. Изначально разработчики общались с программой сами, обучая ее на больших массивах анонимной информации из социальных сетей. В обучении также принимала участие и небольшая группа людей. По задумке авторов, Тэй, имитировавшая поведение милой и доброй девушки-подростка, должна была продолжить самообучение после выпуска в свет, обучаясь у пользователей. Так и случилось, вот только менее чем за сутки после начала общения с пользователями, Тэй превратилась в нацистку, антисемитку и человеконенавистницу. Программа успешно обучилась всему, чему ее учили. К сожалению, авторы не смогли заложить в свою программу возможность отличать хорошее от плохого. Некоторое время Microsoft пыталась контролировать поведение Тэй, редактируя некоторые особо оскорбительные её высказывания. Но очень скоро эксперимент был признан завершенным и Тэй была отключена. Тем не менее, в ходе данного мероприятия Microsoft обеспечила себе неплохую рекламу, а так же значительно подогрела интерес к теме использования ИИ и чат-ботов.
Еще один подобный эксперимент с участием Microsoft оказался более удачным. В китайском аналоге Twitter (Weibo) был запущен лингвистический бот с именем Xiaoice (Сяоис). Бот имитирует поведение 17-летней девушки-подростка, может поддерживать осмысленный диалог, выражает сочувствие и часто ведет себя очень непредсказуемо, как обычный человек. По всей видимости, при работе над Сяоис авторы учли предыдущий негативный опыт с Тэй. Миллионы китайских подростков часами общаются с Сяоис, называя её 'чуткой и заботливой девушкой'.
30 марта на выставке Build 2016 Microsoft представила свою платформу Microsoft Bot Framework для создания текстовых, аудио и видеоботов для Skype, Slack, Facebook Messenger, Kik, электронной почты Office 365 и других популярных сервисов. Платформа состоит из трех основных частей:
- Bot Builder SDK: набор инструментов с открытым исходным кодом (для разработки доступны Node.js, .NET или REST) для создания и тестирования чат-ботов;
- Bot Framework Developer Portal: сервис для регистрации, подключения к популярным каналам, настройки и тестирования, публикации своего бота;
- Bot Directory: каталог ботов, созданных с помощью Bot Framework и зарегистрированных в Developer Portal, предназначенный для загрузки и проверки ботов, обмена опытом.
К основным преимуществам платформы Bot Framework можно отнести отсутствие привязки к конкретной платформе, наличие открытого исходного кода SDK, развитые средства отладки и тестирования ботов, встроенные средства связи и управления веб-приложениями, поддержка автоматического перевода более чем на 30 языков, наличие комьюнити. При этом платформа Microsoft Bot Framework продолжает активно развиваться.
Также в ходе выставки Build 2016 было объявлено о выпуске новой версии Skype с поддержкой ботов для Windows, Android, iPhone и iPad, а также открытии SDK и API для Skype Bot Platform. Для того, чтобы добавить бота к себе в список контактов Skype, Slack или Telegram, можно воспользоваться каталогом ботов. В новой версии Skype для iOS и Android поиск ботов реализован непосредственно в приложении.
Microsoft заявляет, что уже в недалеком будущем с чат-ботом можно будет пообщаться на естественном языке посредством аудио или видеозвонка (Skype Video Bots). При этом чат-бот будет снабжен продвинутым ИИ и представлять собой некую 3D-модель. В Microsoft уверены, что использование ботов для автоматизации привычных действий пользователя и использование голосового управления изменят привычные способы общения, игр, совершения покупок и т.п.
Ложка дегтя
Но действительно ли чат-боты несут в себе настолько огромный потенциал, что уже в скором времени смогут вытеснить с рынка привычные приложения, поисковики и людей-консультантов? Не станут ли они со временем раздражающим или даже опасным фактором. По данному вопросу существуют самые разные мнения.
Одно из таких мнений: чат боты не более, чем просто новый механизм взаимодействия с пользователем. Это логическое развитие цепочки: сайты — приложения — чат-боты. Причем для этого взаимодействия, как и раньше, совсем необязателен продвинутый ИИ. У бота просто должна быть хорошо продумана система команд. При этом полезность ботов не подвергается сомнению.
Другая точка зрения заключается в том, что боты — это, по сути, лишний способ получения информации. Всего существующего на данный момент уже вполне достаточно. И для того, чтобы загрузить новый номер любимого журнала или новое приложение из App Store, вам совсем необязательно запускать мессенджер, выискивать нужного чат-бота, беседовать с ним, отвечая попутно на 2–3 наводящих вопроса, а только затем получать требуемое. Существующие приложения никуда не делись, они по прежнему под рукой и они удобны. А полезны могут быть лишь чат-боты, которые активно участвуют непосредственно в процессе переписки: переводчики, статисты, аналитики и т.п.
Даже сейчас еще невозможно создание чат-бота, который смог бы эффективно продвигать товары. Не предлагать человеку то, что он уже выбрал, а именно убедить человека в необходимости совершения покупки. Конечно, производимые эксперименты по созданию умных чат-программ впечатляют. Но им еще есть куда развиваться. Интересен может быть пример сравнения современного чат-бота с банкоматом. Да, банкомат гораздо быстрее и с меньшими ошибками выполнит рутинные действия, провзаимодействует с пользователем. Но банкомат никогда не сможет убедить пользователя взять кредит.
Однозначно можно сказать о том, что вопрос незаменимости, удобства и, в особенности, интеллектуальности чат-ботов, сильно перегрет и поддерживается в таком состоянии в основном производителями мессенджеров, которые являются основным местом обитания ботов, а так же владельцами крупных платформ. И зачастую, только владельцы крупных платформ могут позволить себе создание действительно интеллектуальных чат-ботов, сочетающих в себе продвинутый ИИ, а также широкие функциональные возможности.
Сейчас для создания бота вы можете воспользоваться самыми разнообразными сервисами. Вы можете создать бота вообще не написав ни одной строчки исходного кода, воспользовавшись специальным сервисом, предоставляемым на платформе мессенджера. Можете использовать сторонний сервис, наподобие Chatfuel. Доступны бесплатные инструменты разработки, такие как Microsoft Bot Framework. Наконец, вы можете приобрести инструменты для создания бота через сервис Gupshup. Но будет ли ваш бот достаточно интеллектуален, чтобы полноценно конкурировать с привычными для пользователя приложениями? Впишется ли ваш чат-бот в свою среду обитания настолько, чтобы стать незаменимым? Или пополнит многочисленную когорту неплохих, но, честно говоря, достаточно однообразных виртуальных помощников?
Вероятнее всего, индустрию чат-ботов со временем ждет то же, что было с мобильными и интернет-приложениями. Выживут наиболее востребованные, 'умные', удобные, максимально вписывающиеся в свою специфическую среду обитания чат-боты.
Заключение
Изначальная задумка состояла в том, что данная статья в конце расскажет о поиске ошибок в исходном коде Microsoft Bot Builder (доступен на GitHub) при помощи статического анализатора PVS-Studio. Однако оказалось, что платформа Bot Builder содержит всего 50 тыс. строк кода на языке C#, доступном для проверки (оставшийся исходный код разработан с использованием Node.js и REST). К тому же, код оказался очень качественным, что неудивительно для Microsoft. В ходе проверки решения Bot Builder, в нем почти не было найдено ошибок, за исключением двух не самых критичных, но, тем не менее, требующих к себе внимания подозрительных конструкций. Всего этого оказалось недостаточно для написания полноценной статьи о проверке проекта, как мы это делаем обычно. Так бывает. Тем не менее, платформа Bot Builder активно развивается, и в будущем я повторю свой эксперимент в надежде найти более интересные ошибки в коде этой платформы и рассказать о них читателям. Сейчас же, в виде примера, я просто приведу описание замеченных недоработок. Обе ошибки связаны с потенциальной возможностью доступа по нулевой ссылке.
Предупреждение анализатора PVS-Studio: V3019 Possibly an incorrect variable is compared to null after type conversion using 'as' keyword. Check variables 'step', 'prop'. FieldReflector.cs 231
Анализатор обнаружил подозрительную конструкцию, связанную с использованием оператора приведения as:
protected Type StepType(object step)
{
var field = step as FieldInfo;
var prop = step as PropertyInfo;
return (step == null ? null :
(field == null ? prop.PropertyType : // <=
field.FieldType));
}
Приведенный фрагмент кода будет работать безошибочно до того момента, пока переменная step имеет тип FieldInfo или PropertyInfo. В противном случае возможен доступ по нулевой ссылке, так как отсутствует дополнительная проверка на null для переменной prop.
Предупреждение анализатора PVS-Studio: V3105 The 'parts' variable was used after it was assigned through null-conditional operator. NullReferenceException is possible. JwtTokenExtractor.cs 60
В следующем фрагменте кода автор предполагает, что переменная authorizationHeader может иметь значение null. В этом случае переменная parts также будет инициализирована значением null. Однако, в дальнейшем переменная parts используется без соответствующей проверки, что может привести к выбросу исключения NullReferenceException:
public async Task
GetIdentityAsync(string authorizationHeader)
{
....
string[] parts = authorizationHeader?.Split(' ');
if (parts.Length == 2) // <=
return await GetIdentityAsync(parts[0], parts[1]).
ConfigureAwait(false);
....
}
Правильный вариант данной конструкции имеет вид:
public async Task
GetIdentityAsync(string authorizationHeader)
{
....
string[] parts = authorizationHeader?.Split(' ');
if (parts != null && parts.Length == 2)
return await GetIdentityAsync(parts[0], parts[1]).
ConfigureAwait(false);
....
}
В заключение хочется отметить, что тема создания и продвижения чат-ботов довольно интересна. Данное направление будет развиваться, и в будущем нас ждут новые интересные эксперименты, связанные с чат-ботами, а так же использованием ИИ.
Создавайте собственных чат-ботов и проверяйте исходный код на ошибки при помощи статического анализатора PVS-Studio.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Sergey Khrenov. Chatbots, and how will Microsoft help us with this?.