Уже в 1966 году была создана программа, которой почти удалось пройти тест Тьюринга [1] и убедить некоторых пользователей в том, что они общаются с человеком, а не с компьютером. Для подобных программ с самого начала использовались термины «бот» и «чат-бот». Сегодня так, как правило, обозначают диалоговый пользовательский интерфейс, скрипт с «человеческими» чертами или агентскую программу, автоматизирующую повторяющиеся задачи. Обычно боты не предназначены для создания у пользователей ложного ощущения, что они общаются с реальным человеком, хотя программам-роботам часто стараются придать дружелюбный «характер» и «обаяние».
Боты обычно выполняются на тех же платформах, на которых пользователи совместно работают или играют. Нередко программы-роботы взаимодействуют со вспомогательными сервисами, выполняя роль проводника между пользователями и какими-либо инструментами — они могут делиться информацией, получать и анализировать данные, реагировать на события и действия в мессенджерах и социальных СМИ, связывать пользователей друг с другом или какими-либо системами, предоставлять отклики или рекомендации по индивидуальным и групповым заданиям.
Рассмотрим существующие типы и платформы ботов, а также способы их создания и использования.
Боты и разработка ПО
Сегодня боты становятся фактическим стандартом интерфейса для взаимодействия с программными сервисами. Это происходит отчасти вследствие широкого распространения платформ обмена сообщениями (например, Facebook Messenger для пользователей социальной сети и Slack для разработчиков), а отчасти благодаря прогрессу в средствах понимания естественного языка, поддерживаемых многими ботами. Еще одна движущая сила — массовое использование больших данных и алгоритмов машинного обучения: боты удобны как пользовательский интерфейс для взаимодействия с системами, выдающими ответы по результатам анализа гигантских объемов сведений.
В крупных софтверных компаниях признают удобство ботов для интеграции сервисов, каналов связи и объединения пользователей. В Facebook, например, хотят постепенно заменить ботами на платформе обмена сообщениями Messenger [2] все приложения, а в Microsoft заявляют, что операционная система будущего — это «диалог как платформа».
О росте популярности программ-роботов можно судить по развитию сервисов наподобие Alexa, Siri, IBM Watson и Google Now. Существует также множество ботов на платформах, используемых разработчиками ПО для связи с коллегами и сервисами, таких как Slack, Microsoft Teams и HipChat.
Многие программисты переходят от интерфейса командной строки к использованию ботов в системах обмена сообщениями. Именно для решения задач разработчиков нередко создаются сложные, оригинальные боты, по примеру которых затем пишутся программы-роботы для других областей применения.
Сегодня активно создаются боты для массового пользователя, много времени уделяющего приложениям обмена сообщениями. Такие боты нередко становятся альтернативой традиционным мобильным приложениям. Разработчикам ботов нужно тщательно выбирать не только методы их создания и хостинг, но и то, когда роботов предпочтительнее отключать.
«Ботология»: анализ программного ландшафта ботов
Хотя боты относительно недавно получили широкое применение, поражает разнообразие задач и ролей, которые им доверяют. Тем не менее попробуем классифицировать программы-роботы.
Например, можно характеризовать ботов по модели взаимодействия. Некоторые поддерживают узкоспециальные языки, воспринимающие только инструкции, введенные посредством интерфейса командной строки. Другие могут понимать текст или речь на естественном языке и оперировать графическим пользовательским интерфейсом для ускорения «общения». Взаимодействие может инициировать пользователь с помощью команд вроде «Hey, Siri», либо бот может активироваться в зависимости от контекста системы или окружения.
Можно также характеризовать ботов по уровню их «интеллекта»:
- некоторые боты наделены возможностью распознавать контекст и могут в зависимости от него менять способ взаимодействия с пользователями;
- имеются боты, следующие несложным правилам логики, а есть снабженные развитым искусственным интеллектом, который управляет их поведением;
- существуют полностью автономные боты, а есть действующие в зависимости от информации, введенной человеком, либо использующие смешанный принцип.
Кроме того, боты можно характеризовать согласно их назначению:
- боты-универсалы вроде Siri и Cortana решают широкий круг простых задач, а когда требуются более глубокие знания, переадресуют пользователей на соответствующие внешние ресурсы;
- транзакционные боты действуют от имени пользователей, автоматически выполняя операции с внешними системами (например, делая покупку, когда цена снизится до заданного уровня);
- информационные боты передают сведения для пользователей (информацию о котировках, сводки погоды и т. д.);
- рабочие боты улучшают производительность труда пользователя или группы, автоматизируя рутинные задачи (например, обновление календарей или отключение уведомлений);
- боты для взаимодействия помогают пользователям общаться, координировать действия и сотрудничать (например, соединяя нужных людей в нужное время).
Разработка и хостинг ботов
Простые боты можно создавать с нуля и размещать на собственных ресурсах, но когда нужно упростить разработку и дистрибуцию, используются сторонние платформы. Количество инструментов для разработки ботов быстро растет, но есть различие между платформами создания программ-роботов и платформами дистрибуции, на которых они выполняются.
Microsoft, Facebook и другие производители предоставляют комплексные средства разработки и дистрибуции программ-роботов. Другие компании предлагают специализированные ресурсы для конкретных задач, связанных с созданием и распространением. В таблице перечислены популярные платформы ботов, сервисы разработки и дистрибуции, а также сопутствующие технологии.
Платформы разработки
Платформы разработки ботов предоставляют различные программные средства, фреймворки, инструментарии, интерфейсы программирования и дополнительные возможности (сервисы обработки естественного языка, поиска и анализа изображений и т. п.). Они могут быть ориентированы на конкретную платформу дистрибуции или рассчитаны на создание ботов, которых можно развертывать на многих платформах, в частности Microsoft Bot Framework, Botkit и Pandorabots.
Предоставляемые сервисы варьируются от документации и шаблонов кода до интерфейсов создания ботов без программирования (вроде Chatfuel). Вокруг многих популярных платформ разработки сформировались активные сообщества разработчиков, участники которых могут общаться в соответствующих онлайн-группах, обмениваясь опытом и ссылками на тематические публикации, получая консультации и ответы на вопросы, участвуя в обсуждениях. Некоторые из таких сообществ, например группа Botmaker в Slack и форум Chatbot Magazine, стали средоточием дискуссий по широкому кругу тем, имеющих отношение к программам-роботам.
Платформы дистрибуции
Такие платформы определяют способ доступа к ботам — многие из них основаны на системах обмена сообщениями и социальных сетях (Facebook Messenger, Skype, WeChat), а другие применяются преимущественно разработчиками ПО (Slack, Microsoft Teams, HipChat). Платформы дистрибуции поддерживают взаимодействия типа человек-бот, бот-бот и система-бот.
Правильный выбор платформы дистрибуции важен для разработчика с нескольких точек зрения. Некоторые платформы предоставляют выход на сформировавшуюся пользовательскую аудиторию. Запуск бота на уже существующей платформе позволяет избежать игнорирования со стороны пользователей — барьера, на который обычно наталкиваются многие новые приложения. Разработчикам нужно учитывать не только размер аудитории пользователей платформы, но и демографические характеристики и цену доступа. Такие платформы определяют стандарты пользовательского взаимодействия с ботами, имея встроенную поддержку команд на естественном языке, средств распознавания речи и элементов графического пользовательского интерфейса. От способа взаимодействия с ботом сильно зависят впечатления пользователя и типы задач, которые может решать робот.
Многие платформы дистрибуции предлагают механизмы, помогающие пользователям обнаруживать и пробовать новых ботов. Подобно супермаркету приложений Apple, некоторые платформы имеют виртуальные «супермаркеты ботов». Сторонние сайты вроде BotList и ChatBottle тоже предлагают онлайн-каталоги программ-роботов для многих популярных платформ дистрибуции, облегчая разработчикам маркетинг своих ботов. Развитые платформы дистрибуции имеют готовые средства монетизации, позволяющие ботам безопасно принимать платежи от пользователей, что особенно полезно для транзакционных программ.
Принципы создания и использования ботов
Боты становятся повсеместными — мы взаимодействуем с ними в автомобиле, дома, на работе и не только. Кроме того, они играют сложную и все более заметную роль в проектах разработки ПО. Накопленный на сегодня опыт применения ботов позволяет оценить как их реальные практические преимущества, так и возможные минусы. Перечислим принципы, на которые стоит ориентироваться при создании и использовании ботов.
Дополнение, а не замена взаимодействию
Боты часто используются в рабочих группах для автоматизации решения задач, обычно требующих участия человека. Но полный отказ от взаимодействия может ограничить творческие возможности и продуктивность людей. Поэтому ботов предпочтительно использовать для облегчения связи и координации выполнения работ. Например, боты могут информировать о ходе выполнения задания, оповещать о целях группы, связывать экспертов с новичками и служить делу укрепления доверия и командного духа. При этом некачественная реализация или чрезмерное использование ботов могут привести к информационной перегрузке или излишнему количеству прерываний.
Неожиданностей быть не должно
В отличие от роботов, рассчитанных на прохождение теста Тьюринга, боты должны ясно давать понять пользователю, что он имеет дело с программой, а не человеком. Аналогично, если бот передает управление человеку (например, когда робот не понял команду или не может дать вразумительный ответ), пользователь должен быть об этом оповещен, причем понятным и удобным для него способом. Так сохранится доверие пользователя к системам, обслуживаемым ботами. Кроме того, назначение и круг возможностей бота должны быть очевидными и соответствовать ожиданиям пользователя.
Взаимодействие с ботом должно быть оптимизированным
В идеале взаимодействие пользователя с ботом должно быть комфортным и происходить без запинок. Достигнуть этого можно путем тщательного планирования схемы беседы, особенно для диалоговых ботов. В частности, бот мог бы повторять вводимые команды, чтобы пользователь знал, что его «услышали» и правильно поняли. Боты также должны быть способны определять, когда диалог зашел в тупик, и предоставлять подсказки относительно возможного продолжения взаимодействия.
У ботов могут быть элементы графического интерфейса, позволяющие ускорить взаимодействие. Предусмотрев глобальную проверку ввода ключевых слов, относящихся к навигации («помощь», «назад», «отмена», «начать заново», «выход» и т. п.), можно избежать создания слишком «бестолкового» бота. Инструменты вроде BotMock помогут в прототипировании взаимодействия пользователя с ботом. Кроме того, на многих платформах доступны готовые протоколы общения, которых должны придерживаться боты; например, в Facebook есть набор несложных советов по организации диалогов.
Характер важнее, чем внешность
Поскольку боты сегодня преимущественно текстовые, то их соответствующие свойства (от особенностей использования языка до имени самого робота) оказывают влияние на восприятие человеком их «характера», роли и возможностей. Казалось бы, пользователи должны осознавать, что общаются всего лишь с программой, однако проводимые сегодня исследования показывают, что характер бота напрямую влияет на то, как пользователь с ним взаимодействует. Даже если бот способен эффективно решать свои задачи, он будет непопулярным, если пользователи найдут его скучным. Язык бота должен быть живым, понятным, дружелюбным и с юмором. Боты должны быть «готовыми» к тому, что пользователи будут проверять их возможности и соответствующим образом реагировать.
Однако слишком выраженный характер тоже может быть минусом. Как подчеркивают в Slack, для достижения хороших результатов в этом отношении достаточно малого — качественные боты могут украсить фирменный стиль компании и стать воплощением ее основополагающих принципов (например, дружелюбия).
Бот не может причинить вред
Согласно трем законам робототехники, сформулированным Айзеком Азимовым, роботы не могут причинить вред человеку, обязаны повиноваться приказам и должны заботиться о своей безопасности. Те же правила применимы и к программам-роботам, но, возможно, с учетом уровня сложности и стремительного роста их применения, трех основных законов будет недостаточно. Тривиальные ошибки могут иметь разрушительные последствия, к тому же вероятны трудности с защитой приватности пользователя. Уже в ближайшем будущем можно рассчитывать на появление кодекса этики взаимодействий между человеком и ботом. В частности, над подобным проектом работают в организации Partnership on AI.
Разработчикам между тем следует подумать о возможных способах злоупотребления их ботами, преднамеренного и нет. Уже сегодня существуют многочисленные вредоносные боты, поэтому налаживать доверие с пользователем становится все сложнее. Многие платформы создания и дистрибуции ботов предлагают базовые принципы и оптимальные методы проектирования ботов (в том числе платформы Microsoft, Slack и Facebook). Тем не менее разработчикам, желающим использовать или создавать ботов, нужно и самим проявлять должную осмотрительность.
***
Численность разработчиков ПО, использующих и создающих ботов, будет стремительно расти — эти программисты пишут сценарий завтрашнего дня, находясь в авангарде применения программ-роботов и подавая пример разработчикам из других отраслей.
Литература
- A.M. Turing. Computing Machinery and Intelligence // Mind. — 1959. Vol. 59, N. 236. — P. 433-460. URL: www.jstor.org/stable/2251299 (дата обращения: 10.03.2018).
- M. Murgia. Can Facebook Messenger Kill Off Apps? The Telegraph, 15 Nov. 2015. URL: www.telegraph.co.uk/technology/facebook/11996896/Can-Facebook-Messenger-kill-off-apps.html (дата обращения: 10.03.2018).
Карлин Лебеф (clebeuf@uvic.ca) — студент, Маргарет-Энн Стори (mstorey@uvic.ca) — профессор, Алексей Загальский (alexeyza@uvic.ca) — аспирант Викторианского университета (Канада).
Carlene Lebeuf, Margaret-Anne Storey, Alexey Zagalsky, Software Bots, IEEE Software. January/February 2018, IEEE Computer Society. All rights reserved. Reprinted with permission.