Чат-боти, і як нам з цим допоможе Microsoft

Ця оглядова стаття присвячена вивченню стрімко набирає останнім часом популярність напряму в IT-індустрії — чат-ботам, а також ролі Microsoft в процесі їх розвитку. Будуть розглянуті: історія виникнення, особливості ботів, основні і несподівані області їх застосування, перспективи та обмеження технології.

Вибір Microsoft в якості основної порівняльної платформи для дослідження не випадковий. Компанія проводить велику роботу в галузі популяризації та розвитку інтелектуальних роботів. Одним з основних кроків а даному напрямку можна вважати представлений нею на виставці Build 2016 безкоштовний фреймворк для створення власних ботів Microsoft Bot Framework, не прив'язаний до конкретної платформі і з відкритим вихідним кодом.

Введення
Узагальнено, чат-бот являє собою програму, яка може імітувати ведення осмисленого діалогу з користувачем на зрозумілій йому мові з використанням тексту або мови. Метою такого діалогу, як правило, є виконання ботом команд і запитів користувача. Не будучи по суті, чимось кардинально новим, чат-боти, тим не менш, позиціонуються на ранці як якесь ноу-хау. Не останню роль у цьому відіграє певна галас, створювана навколо таких ботів, як розумних і, найчастіше, незамінних помічників для користувача.

Чат-боти не дають вам нудьгувати під час спілкування з іншими користувачами месенджера, вчасно розважаючи свіжим анекдотом або грою; надсилають свіжий прогноз погоди; допомагають з замовленням піци; дають рекомендації про здорове харчування у відповідь на повідомлення про вашому вазі і артеріальному тиску; вміло ведуть з вами діалог на сайті юридичних послуг, імітуючи реального співрозмовника; приємним голосом запитують про вашому настрої і, на основі аналізу відповіді, можуть підібрати музичну композицію в смартфоні; впевнено справляються з роллю фахівця служби підтримки якого-небудь сервісу за допомогою електронної пошти. Це лише мала частина прикладів з реальним використанням інтелектуальних роботів. Існує також окрема група корпоративних ботів, вирішальна не менш важливі корпоративні завдання.


Як і будь-яка нова технологія, чат-бот є логічним розвитком більш звичних методів комунікації та доведення інформації до кінцевого користувача: сайти, програми, push-повідомлення і т. п. При цьому дана технологія приваблива, в першу чергу, орієнтованістю бота на кінцевого користувача, інтегрованістю в кінцеву платформу, легкістю у використанні, інтелектуальністю, дружелюбністю.

Великі IT-гравці (в першу чергу, на ринку онлайн-комунікацій) давно оцінили потенціал і можливі вигоди від використання чат-ботів у своїх рішеннях. Боти в тому чи іншому вигляді активно використовуються у всіх популярних месенджерах, інтернет-платформах і мобільних пристроях.

Не залишилася осторонь і Microsoft, провівши роботи відразу за декількома напрямками: помічник для мобільних пристроїв Cortana; не зовсім вдалий, але, безсумнівно, цікавий експеримент з дівчиною-ботом Тей в Twitter; більш вдалий експеримент в Китаї з дівчиною-ботом Xiaoice (Сяоис); боти для Skype; нарешті, фреймворк Microsoft Bot Framework для створення та інтеграції власних ботів під різні платформи.

Трохи історії
Першою чат-програмою прийнято вважати ELIZA, розроблену в 1964 році професором Массачусетського інституту технологій Джозефом Вайзенбаумом. Програма намагалася імітувати спілкування користувача з психотерапевтом і часто обескураживала своїх пацієнтів дивовижною правдоподібністю роботи і фразами типу 'Хочете поговорити про це?'.

Після цього робилося безліч спроб створення подібних віртуальних співрозмовників, але всі вони були досить прості і людина легко розпізнавав, що має справу з машиною.

Введення у вживання терміна 'чат-бот' приписують розробнику Майклу Молдингу, який в 1994 році розробив програму для спілкування Julia і назвав її саме чат-ботом. Програма була нехитра, але, тим не менш, дозволяла підтримувати більш-менш осмислений діалог і підтримувала функції самонавчання.

В кінці 1990-х початку 2000-х прості чат-боти активно застосовувалися, наприклад, в 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 навідних питання, а тільки потім отримувати потрібне. Існуючі програми нікуди не поділися, вони і досі під рукою і вони зручні. А корисними можуть бути лише чат-боти, які активно беруть участь безпосередньо в процесі листування: перекладачі, статисти, аналітики тощо

Навіть зараз ще неможливо створення чат-бота, який зміг би ефективно просувати товари. Не пропонувати людині те, що він вже вибрав, а саме переконати людину в необхідності здійснення покупки. Звичайно, вироблені експерименти по створенню розумних чат-програм вражають. Але їм ще є куди розвиватися. Цікавим може бути приклад порівняння сучасного чат-бота з банкоматом. Так, банкомат набагато швидше і з меншими помилками виконає рутинні дії, провзаімодействует з користувачем. Але банкомат ніколи не зможе переконати користувача взяти кредит.

Однозначно можна сказати про те, що питання незамінності, зручності і, в особливості, інтелектуальності чат-ботів, сильно перегрітий і підтримується в такому стані в основному виробниками месенджерів, які є основним місцем проживання ботів, а так само власниками великих платформ. І найчастіше, тільки власники великих платформ можуть дозволити собі створення дійсно інтелектуальних чат-ботів, поєднують в собі просунутий AI, а також широкі функціональні можливості.

Зараз для створення бота ви можете скористатися самими різноманітними сервісами. Ви можете створити бота взагалі не написавши жодного рядка коду, скориставшись спеціальним сервісом, наданих на платформі месенджера. Можете використовувати сторонній сервіс, зразок 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<ClaimsIdentity>
GetIdentityAsync(string authorizationHeader)
{
....
string[] parts = authorizationHeader?.Split(' ');
if (parts.Length == 2) // <=
return await GetIdentityAsync(parts[0], parts[1]).
ConfigureAwait(false);
....
}

Правильний варіант даної конструкції має вигляд:
public async Task<ClaimsIdentity>
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?.

Прочитали статтю і є питання?Часто до наших статей задають одні і ті ж питання. Відповіді на них ми зібрали тут: Відповіді на питання читачів статей про PVS-Studio, версія 2015. Будь ласка, ознайомтеся зі списком.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.