Найти в Дзене
Душкин объяснит

Телешкола. Как взять и быстро сделать чат-бота

Приветствую, коллеги. Сегодня я продолжу публикацию заметок о том, как становилась и развивалась Телешкола. И сегодня я хотел бы дать вам нечто совсем практичное, очень насущное и несущее конкретную ценность. Это будет долгий лонгрид и одновременно лабораторная работа. А поговорим мы о том, как прямо сейчас сесть и сделать своего чат-бота. Кто учился у меня в Телешколе, тот знает, что ассистентом преподавателя там является чат-бот Натали. Она отвечает на большинство вопросов по курсу, по искусственному интеллекту, а также может поддержать общую беседу и даже рассказать анекдот. Она постоянно дорабатывается, но её основа была сделана примерно год назад по той технологии, которая будет описана в этой статье. Итак, начнём. Я хочу рассказать вам о том, как создавать чат-ботов общего плана при помощи DialogFlow. Далее здесь будет куча слайдов и краткие комментарии к ним. Для того чтобы начать, у вас должна быть учётная запись в Google. Это единственное предварительное требование. Ну а саму
Оглавление

Приветствую, коллеги. Сегодня я продолжу публикацию заметок о том, как становилась и развивалась Телешкола. И сегодня я хотел бы дать вам нечто совсем практичное, очень насущное и несущее конкретную ценность. Это будет долгий лонгрид и одновременно лабораторная работа. А поговорим мы о том, как прямо сейчас сесть и сделать своего чат-бота.

Кто учился у меня в Телешколе, тот знает, что ассистентом преподавателя там является чат-бот Натали. Она отвечает на большинство вопросов по курсу, по искусственному интеллекту, а также может поддержать общую беседу и даже рассказать анекдот. Она постоянно дорабатывается, но её основа была сделана примерно год назад по той технологии, которая будет описана в этой статье.

Итак, начнём. Я хочу рассказать вам о том, как создавать чат-ботов общего плана при помощи DialogFlow. Далее здесь будет куча слайдов и краткие комментарии к ним. Для того чтобы начать, у вас должна быть учётная запись в Google. Это единственное предварительное требование.

-2

Ну а саму презентацию прямо сейчас вы можете попросить у Натали в Телеграме. Она пришлёт ссылку на скачивание PDF-файла, который будет всегда с вами. Ну и, кстати, можете заодно пообщаться с ней на другие темы. Проверьте, как она работает. Ведь она пытается понять смысл фразы, а не просто реагировать на какие-то ключевые слова.

-3

Цель моей презентации и моей сегодняшней статьи — дать вам быструю инструкцию о том, как взять и сделать чат-бота, подобного Натали. Есть много разных инструментов для создания чат-ботов, у каждого из них есть своя область применения. У DialogFlow область простая — разговорные чат-боты общего плана. Они не используют кнопки или команды (впрочем, это возможно), а распознают смысл и реагируют соответственно.

-4

В статье будет рассмотрено четыре темы:

  • Создание агента в DialogFlow,
  • Интеграция созданного агента с Телеграмом,
  • Обучение и тренировка агента,
  • Краткое описание расширенных функций.

Чат-бот называется в DialogFlow агентом потому, что это как бы внутренняя начинка для диалогового интерфейса, которым является чат-бот. Один и тот же агент из DialogFlow может быть выведен в различные мессенджеры и даже интегрирован в виде приложения с Google Assistant. Другими словами, если потребуется, я при помощи пары кликов смогу сделать так, чтобы Натали работала, например, в ФБ-мессенджере параллельно её работе в Телеграм. Но я не буду этого делать :).

Создание агента

Итак, начнём. Создадим агента в DialogFlow.

-5

Первым делом необходимо зайти на DialogFlow и нажать на ссылку «GO TO CONSOLE». После этого появится возможность использовать свою учётную запись Google для авторизации. Выглядит это так:

-6

Кажется странным, что нет возможности создать учётную запись непосредственно на сервисе. Но тут всё просто — это сервис Google, под капотом там используется TensorFlow, библиотека для работы с нейросетями от Google, а приложение крутится в облаке Google. Так что всё резонно. Идём дальше...

-7

В этой статье мы рассмотрим только четыре раздела из основного меню системы разработки агентов. Это:

  • Настройки — выглядит как название текущего выбранного агента и пиктограмма шестерёнки,
  • Намерения — так в системе называются правила реагирования агента на фразы пользователя,
  • Интеграция — в этом разделе можно подключить агента к выбранным мессенджерам,
  • Тренировка — основной раздел для развития агента по результатам его взаимодействия с пользователями.
-8

Давайте создадим нового агента. Нажимайте на стрелочку вниз и выбирайте пункт «Create new agent».

-9

На появившейся странице необходимо:

1. Ввести название нового агента — лучше использовать только латинские буквы и цифры.

2. Выбрать русский язык, как основной язык его работы — впрочем пока это ни на что не влияет, кроме возможности использовать встроенную базу знаний.

3. Установить временную зону, в которой работает агент — не очень понятно зачем, ведь он будет работать без сна и отдыха 24х7х365, но ладно.

4. Остальное оставить как есть — все настройки DialogFlow сделает самостоятельно, в том числе и создаст проект в Google.

Интеграция в Телеграм

Теперь нам надо поработать с Телеграмом. Там нужно создать чат-бота.

-10

Сделайте следующие шаги:

1. Найдите бота BotFather и активируйте его при помощи команды /start.

2. Используйте в нём команду /newbot.

3. Введите имя для своего бота. Это имя будет отображаться в Телеграме и к агенту в DialogFlow не имеет никакого отношения.

4. Введите идентификатор нового бота. При помощи этого идентификатора можно будет давать ссылку на бота в Телеграме. Ну вот как я это делаю с Натали: @ai101CourseBot. Идентификатор бота должен оканчиваться на три буквы bot.

-11

Сохраните токен нового бота, который дал BotFather. Этот токен будет использоваться для интеграции с DialogFlow.

-12

В Телеграме в боте BotFather надо настроить нового бота. При помощи команды /mybots надо вывести список ваших ботов и выбрать нового созданного. Далее надо нажать на кнопку «Edit Bot», что позволит отредактировать свойства бота. Надо ввести описание (Description) — оно будет выводиться в диалог с пользователем при старте бота, информацию о боте (About) — она выводится в карточке бота, а также установить аватар, послав картинку.

-13

Далее по кнопке «Bot Settings» надо сделать кое-какие изменения в настройках бота. Это важно, так как это позволит включать бота в чаты так, чтобы он видел все сообщения пользователей. Ведь у нас разговорный бот, а не командный. Поэтому включим Inline Mode и выключим режим приватности. Всё остальное можно оставить без изменений. Собственно, всё, бот в Телеграме готов.

-14

Теперь возвращаемся назад в DialogFlow и, собственно, интегрируем нового бота с уже имеющимся у нас агентом.

-15

Что надо сделать? А вот что:

1. Снова выберите нового агента в DialogFlow.

2. Заходите в раздел Integrations, где мы, наконец-то, свяжем агента и бота.

3. Находим в обширном списке Телеграм и выбираем его, нажав на пиктограмму и включив ползунок.

4. В соответствующее поле необходимо вставить тот самый токен бота, который дал BotFather.

5. И, наконец, нажать на кнопку «Start». После этого бот в Телеграме начнёт работать.

Вот так это выглядит:

-16

Обучение и тренировка

Итак, начните общаться со своим чат-ботом в Телеграме. Поначалу он будет немного неадекватный. Скорее всего, если вы всё оставили по умолчанию, он на каждую фразу будет писать, что не понял или не смог разобраться. Если вы по любопытству слазили в раздел «Small Talk» и настроили там некоторые ответы, то чат-бот будет использовать их для ответа на типовые вопросы.

-17

Для обучения и тренировки нашего агента нам потребуется использовать два раздела — Intents (намерения, правила) и Training (тренировка).

-18

В разделе Training собраны все диалоги с чат-ботом. Фактически, это лог общения с ним. Это таблица, в которой собрана краткая информация о записях в логе. В колонке «Conversation» используется первая фраза из диалога. Если там использовано слово TELEGRAM_WELCOME, то это сигнализирует о том, что кто-то активизировал чат-бота и общается с ним в первый раз. В колонке «Reuests» показано количество фраз, которые написал пользователь. В колонке «No match» показано число фраз, на которые агент не смог отреагировать, то есть не нашёл правило. Дата — понятно, и в последней колонке ставится зелёная галочка, если соответствующий диалог проведён через процедуру тренировки.

-19

Если открыть диалог, кликнув по соответствующей строке в списке, то на экране появится окно со списком фраз пользователя в этом диалоге. В полях ввода указаны сами фразы, а под ними синими ссылками приведены те правила агента, которые были активированы в ответ. Если было активировано правильное правило, то достаточно просто нажать на кнопку с зелёной галочкой, и соответствующая фраза запишется в правило.

Если же было активировано некорректное правило, или вообще был использован ответ по умолчанию, когда агент не может выбрать правило вообще, то, нажав на синюю надпись, можно либо выбрать правило, либо сразу создать новое. Для этого используется выпадающее меню, в котором можно осуществить контекстный поиск для выбора имеющегося правила или нажать «Create new» и ввести название нового правила. После этого создастся пустое правило без выходных фраз, но с использованной фразой пользователя и введённым названием.

Использовать кнопки с красным перечёркиванием и для удаления фразы не рекомендую, иначе агент так и будет вести себя неадекватно. На каждую фразу пользователя необходимо выбирать правило или создавать новое.

Когда разметка закончена, необходимо нажать на кнопку «Approve», и агент начнёт тренировку. Его нейронная сеть начнёт тренироваться на всём корпусе правил и текстов.

-20

Все создаваемые так или иначе правила попадают в раздел Intents. Здесь собраны правила, которые созданы при тренировке. В списке показаны правила с указанием их приоритета.

Если открыть какое-нибудь правило, то взору будут представлены многочисленные разделы. В точности вот такие:

-21
-22

Для простого агента мы будем использовать только три раздела — название, тренировочные фразы и реакции. Остальное вы сможете научиться использовать самостоятельно, когда привыкните к инструментарию, разберётесь и поймёте, нужно в вашем чат-боте это или нет.

При помощи названия правила мы к нему обращаемся. Если поменять название, то все ссылки на правило сохранятся — в разделе Training все упоминания правила также будут изменены. Это очень приятно.

Вот так выглядит раздел с тренировочными фразами:

-23

В список «Training phrases» попадают все фразы пользователя из раздела Training. Также сюда вручную можно добавить новые фразы. Если написать фразу и нажать Enter, она попадёт в список. Раньше сюда можно было ввести много экземпляров одной и той же фразы, но после моего обращения в службу технической поддержки, здесь собираются только уникальные входные фразы. Кстати, служба технической поддержки сервиса работает очень приятно, правда только на английском языке.

-24

Идём дальше. В разделе «Text response» собраны варианты реагирования чат-бота на фразы из предыдущего раздела. Можно написать произвольное количество разных реакций, и агент будет выбирать случайный вариант. К сожалению, шаблонов генерации ответа пока нет, но такая задача у разработчиков DialogFlow уже зарегистрирована.

Также можно использовать конкретизированные возможности используемых мессенджеров. Для Телеграма можно дать возможность агенту отправлять картинки, выводить кнопки и что-то ещё. Изучите этот вопрос сами, но помните — там есть слайдер, который позволяет одновременно использовать и конкретную реакцию для мессенджера, и общую одновременно.

В самом низу можно пометить правило, как конец разговора. Эта опция нужна для приложений Google Assistant, который как бы «кладёт трубку». Для обычных чат-ботов эту опцию всегда надо оставлять выключенной.

Расширенные функции

И несколько слайдов с расширенными функциями, которые сегодня есть в DialogFlow. Просто ознакомьтесь с ними, а изучить вы их сможете самостоятельно, либо ждите, когда я напишу продолжение этой инструкции. Впрочем, в самом DialogFlow очень хорошая справка. Пользуйтесь.

-25
-26
-27

На этом всё. Я поздравляю читателей, кто дошёл до этих строк и создал своих чат-ботов. Публикуйте в комментариях их идентификаторы, чтобы мы вместе с ними поиграли.

Если вам или вашему бизнесу нужны чат-боты для повышения интеллектуальности процессов управления и увеличения гибкости компании и коллектива — обращайтесь, я всегда на связи и готов проконсультировать, помочь реализовать и всё такое. Моя почта: roman.dushkin@gmail.com, я всегда отвечаю в Телеграме: @rdushkin.

-28