Создание чат бота telegram dialogflow
Хотя Dialogflow широко считается интуитивно понятной и простой платформой, некоторые его функции могут быть немного неясными, и я думаю, что любой новичок мог бы выиграть от наличия мини-гида. Этот пост в блоге предназначен для того, чтобы охватить множество основных концепций и словаря, связанных с Dialogflow, но, поскольку существует множество совпадений между многими из этих платформ NLP, многие из обсуждаемых здесь концепций могут также применяться в других местах.
Как и в любом другом проекте, всегда хорошо иметь мысленную диаграмму, прежде чем начинать создавать чат-бота. Это поможет определить, сколько намерений, последующих намерений и контекстов вам потребуется. Но подождите . в чем намерение?
Намерения в основном являются сердцем и душой Dialogflow. Они предназначены для того, чтобы зафиксировать намерение пользователя и вызвать ответ из чата. Другими словами, намерение фиксирует намерение пользователя, обрабатывает его и сопоставляет с конкретным ответом. Например, если пользователь говорит «кофейни рядом со мной», гипотетическое намерение под названием «Кофейни» будет вызвано и ответит на запрос пользователя.
В конечном итоге ваш чат-робот будет иметь несколько намерений, которые будут обрабатывать все сценарии разговора между пользователем и чат-ботом.
Тренировочные фразы
Учебные фразы - это фразы, которые пользователи говорят, чтобы вызвать определенное намерение. Используя один и тот же пример кофейни сверху, пользователь может попросить кофе несколькими способами.
- Кофейни рядом со мной
- Я очень хочу кофе прямо сейчас
- Где ближайший Старбакс или Пит?
- Есть ли рядом кафе?
Ясно, что было бы невозможно составить исчерпывающий список всех возможных способов сказать «я хочу кофе». Однако прелесть обучающих фраз в том, что вам не нужно предоставлять исчерпывающий список. Приличное количество похожих фраз, которые передают одно и то женамерениедостаточно для механизма понимания естественного языка, чтобы сопоставить любой ввод с определенным намерением
В то время как намерения позволяют чат-боту понимать намерения пользователя, сущности используются для извлечения фрагментов информации из входных данных на естественном языке. От даты и времени до цены объектов любые данные, которые вы хотите извлечь из ввода пользователя, будут иметь соответствующую сущность.
Dialogflow имеет список предопределенных объектов, называемых системными объектами; они включают базовые значения, такие как дата, время, местоположение, единицы и т. д. Возвращаясь к примеру с кафе, предположим, мы говорим, что хотим получить кофе в 4 часа дня.
Я использовал сущность sys.time и извлек время из обучающей фразы. Теперь чат-бот будет искать эту сущность и пытаться извлечь ее из пользовательского ввода.
Когда я тестировал чат-бота, он смог определить и извлечь значение времени 10 утра. Посмотрите на параметр времени внизу изображения.
Как видите, я извлек время из ввода пользователя и включил его в ответ в качестве подтверждения.
Контексты представляют текущее состояние запроса пользователя; думайте о них как о виртуальных контрольных точках для определения того, где пользователь находится в диалоговой структуре. Кроме того, контексты также гарантируют, что диалог протекает последовательно (вы не можете, так сказать, перейти от контрольной точки A к контрольной точке D).
Существует два вида контекстов:
Выходные контексты
Выходные контексты создаются всякий раз, когда пользователь находится в определенном намерении. В более техническом смысле рассматривайте выходной контекст как логический атрибут любого конкретного намерения. Всякий раз, когда у пользователя есть какое-либо конкретное намерение, выходной контекст возвращает true и остается активным, пока пользователь не вызовет другое намерение; тогда контекст вывода другого намерения становится активным.
Последующие намерения являются ключевой частью разговорного потока - они понадобятся вам больше, чем вы думаете! Почти у каждого намерения есть последующие намерения; будь то простые ответы «да» или «нет» или более конкретные запросы, такие как предпочтения даты или времени.
Если у вас есть четкое понимание того, как работают контексты ввода и вывода, тогда последующие намерения должны быть быстрыми.
Я надеюсь, что это было полезно; рассмотренные выше концепции должны дать вам достаточно базовых знаний для создания примитивного, хотя и функционального чат-бота в Dialogflow.
Оставайтесь с нами для технической поддержки таких вещей, как интеграция, выполнение и аналитика!
Для решения этой задачи вам понадобится только аккаунт Google и 15–30 минут своего времени, ещё сам дизайн диалога. Нужно понимать, о чём будет говорить бот.
Для тестового примера я буду описывать создание бота, который отвечает на типовые вопросы. Конечно, бота можно интегрировать, связать с другими сервисами, внедрить в него распознавание, но формат этой статьи даст вам решить задачу первого запуска и покажет, насколько это просто.
Для начала заходим на сайт.
И нажимаем на кнопку Sign in для авторизации. Если у вас не авторизован аккаунт, то Google попросит это сделать. И двигаемся дальше, параллельно разрешая приложению Dialogflow использовать наш Google-аккаунт. Мы остаёмся внутри инфраструктуры Google, поэтому беспокоиться о безопасности в этом вопросе — лишнее. В итоге после успешной авторизации нажимаем Go to console.
Система попросит нас авторизоваться ещё раз и согласовать необходимые разрешения.
В итоге мы попадаем в раздел, где нужно подтвердить соглашение, делать это нужно только при запуске первого бота, в дальнейшем процесс будет значительно короче.
Подтверждение вашего согласия на использование сервисаВ итоге мы добираемся до экрана, где уже можем создать своего первого бота!
Нажимаем Create agent.
Придумываем ему название. И выбираем русский язык, если бот будет говорить на русском. Dialogflow постоянно обучается и распознаёт текст с учётом особенностей, поэтому правильное указание языка повысит точность распознавания.
Но если вы забудете это сделать, бот всё равно будет работать, только стандартные ответы будут на английском, а не на русском, и вам придётся их редактировать. Поэтому лучше выбрать сразу нужный язык.
Заполняем поля «Имя» (Agent name) и Default Language — и нажимаем Create. Бот создан!
Мы видим экран, на котором уже создано 2 intent: Default Fallback и Default Welcome.
В этот момент наш бот уже умеет отвечать на русском на «Привет» и другие стандартные приветствия и говорить, что он нас не понимает, если ни один intent не подошёл (в нашем случае пока мы либо отвечаем на «привет», либо отвечаем, что не понимаем собеседника).
Для простоты тестирования бота будем использовать веб-версию. Для этого выбираем раздел Integrations и там выбираем первый блок.
В моём случае ссылка по умолчанию оказалась такая.
Теперь давайте отредактируем текущие intent под наши нужды. В целом мы можем просто воспринимать эти сущности как вопросы-ответы. Да, при усложнении можно между ними настраивать последовательности и взаимосвязи, распознавания и интеграции со внешними сервисами, но цель этой статьи — создать простого бота формата «вопрос-ответ».
Начнём редактирование с intent, который выдаёт информацию, если бот не понимает собеседника, — Default Fallback Intent. Для этого в левом меню нужно вернуться на пункт Intents и нажать на Default Fallback Intent.
Я для тестовой модели убрал стандартные строки и добавил одну свою тактичную: «Я вас не понимаю, перефразируйте, пожалуйста».
Всё это сразу можно проверить в тестовой веб-версии, только не забывайте нажимать после изменения на кнопку Save.
Перейдём к редактированию intent Welcome. С ответами здесь логика такая же, поэтому этого вопроса здесь касаться не будем: мы описываем все варианты в Response, которые должен отправлять наш бот.
Но кроме Response у нас появляется блок Training phrases, который показывает, на какие слова должен реагировать этот intent. Я оставил в тестовом примере вопросы и ответы без изменения в Default Welcome Intent.
И последний шаг в создании бота, который можно повторять до тех пор, пока не будет создано нужно количество intents с вопросами и ответами. Создаём новый intent. Для этого в разделе intents нажимаем Create intent.
Заполняем поля «Название» и Training phrases (Add training phrases).
А затем ответы — responses (Add responses).
Нажимаем Save и можем проверять работу в веб-версии. Там всё сразу же заработало.
Мы можем создать любое количество intent для решения нашей задачи.
Dialogflow даёт множество возможных интеграций. Запустить его в Telegram предельно просто, использовать его с Facebook чуть сложнее, потому что нужно будет пройти модерацию самой соцсети, и это занимает некоторое время.
Если это будет необходимо — напишите в комментариях, и я сделаю отдельную статью про то, как интегрироваться с сервисами, но в целом это не представляет сложностей, а на время тестирования можно использовать веб-версию, которая запускается в один клик.
Чат-боты — это несложно и часто бесплатно. Находите применения для них, тестируйте и внедряйте в свои процессы.
DialogFlow позволяет создавать чат-ботов сразу для нескольких мессенджеров и платформ. Поддерживаются Facebook Messenger, Telegram, Viber, Skype, Google Assistance и множество других. Также вы можете создать чат-бота с веб-интерфейсом и легко интегрировать на сайт.
Проще всего создать бота для Telegram, по этому давайте и рассмотрим этот вариант на практике и разберемся как все работает.
В нашем примере пока будет только один агент и один бот.
Итак, создаем нового агента. Для этого, в верхнем правом углу нажимаем на Create new agent. В появившемся окне даем агенту имя (чисто техническое, пользователь его не увидит). Далее, выбираем язык, с которым будет работать агент и часовой пояс.
Все остальные настройки можно оставить по-умолчанию. На данном этапе они вам не нужны.
Нажимаем “Create” и агент готов.
Запускаем его, нажав на кнопку “Старт”. Вводим команду /newbot. У нас запросят имя будущего бота. Это имя будут видеть пользователи, по этому придумайте что-то более-менее осмысленное. Можно писать даже на русском. Например, “Иван Иванович”. Имя не будет уникальным.
Теперь нас попросят придумать уникальный идентификатор для бота. Короткое имя (строго латиницей), которое заканчивается приставкой “_bot” или “bot”. В завершении, BotFather сгенерирует токен, т.е. уникальный ключ из случайных символов, который нам понадобится при интеграции бота с агентом. Скопируйте и сохраните где-то токен.
На этом настройка чат-бота закончена.
Возвращаемся в DialogFlow и приступаем к интеграции агента с ботом. В главном меню (слева) найдите раздел Integrations, найдите Telegram и активируйте кнопку-тумблер.
В появившемся окне в поле Telegram token вставьте токен, который сгенерировал BotFather, и нажмите на “Start”.
Все, ваш агент интегрирован с чат-ботом. Попробуйте найти вашего чат-бота в Telegram, используя строку поиска и попробовать написать ему что-то. Он пока не очень умный и сможет отреагировать только на слово “Привет” и несколько других вариантов приветствия. Экспериментируйте.
Чтобы не пропустить обновления, подписывайтесь на канал в Telegram, там я публикую все самое интересное, связанное с чат-ботами и Dialogflow.
Желаю удачи и жду ваших комментариев!
UPDATE: добавил видео-версию туториала. Смотрите, подписывайтесь на канал, буду снимать много полезного.
Приветствую, коллеги. Сегодня я продолжу публикацию заметок о том, как становилась и развивалась Телешкола . И сегодня я хотел бы дать вам нечто совсем практичное, очень насущное и несущее конкретную ценность. Это будет долгий лонгрид и одновременно лабораторная работа. А поговорим мы о том, как прямо сейчас сесть и сделать своего чат-бота.
Кто учился у меня в Телешколе, тот знает, что ассистентом преподавателя там является чат-бот Натали . Она отвечает на большинство вопросов по курсу, по искусственному интеллекту, а также может поддержать общую беседу и даже рассказать анекдот. Она постоянно дорабатывается, но её основа была сделана примерно год назад по той технологии, которая будет описана в этой статье.
Итак, начнём. Я хочу рассказать вам о том, как создавать чат-ботов общего плана при помощи DialogFlow . Далее здесь будет куча слайдов и краткие комментарии к ним. Для того чтобы начать, у вас должна быть учётная запись в Google. Это единственное предварительное требование.
Ну а саму презентацию прямо сейчас вы можете попросить у Натали в Телеграме. Она пришлёт ссылку на скачивание PDF-файла, который будет всегда с вами. Ну и, кстати, можете заодно пообщаться с ней на другие темы. Проверьте, как она работает. Ведь она пытается понять смысл фразы, а не просто реагировать на какие-то ключевые слова.
Цель моей презентации и моей сегодняшней статьи — дать вам быструю инструкцию о том, как взять и сделать чат-бота, подобного Натали . Есть много разных инструментов для создания чат-ботов, у каждого из них есть своя область применения. У DialogFlow область простая — разговорные чат-боты общего плана. Они не используют кнопки или команды (впрочем, это возможно), а распознают смысл и реагируют соответственно.
В статье будет рассмотрено четыре темы:
- Создание агента в DialogFlow,
- Интеграция созданного агента с Телеграмом,
- Обучение и тренировка агента,
- Краткое описание расширенных функций.
Чат-бот называется в DialogFlow агентом потому, что это как бы внутренняя начинка для диалогового интерфейса, которым является чат-бот. Один и тот же агент из DialogFlow может быть выведен в различные мессенджеры и даже интегрирован в виде приложения с Google Assistant. Другими словами, если потребуется, я при помощи пары кликов смогу сделать так, чтобы Натали работала, например, в ФБ-мессенджере параллельно её работе в Телеграм. Но я не буду этого делать :).
Создание агента
Итак, начнём. Создадим агента в DialogFlow.
Первым делом необходимо зайти на DialogFlow и нажать на ссылку «GO TO CONSOLE». После этого появится возможность использовать свою учётную запись Google для авторизации. Выглядит это так:
Кажется странным, что нет возможности создать учётную запись непосредственно на сервисе. Но тут всё просто — это сервис Google, под капотом там используется TensorFlow, библиотека для работы с нейросетями от Google, а приложение крутится в облаке Google. Так что всё резонно. Идём дальше.
В этой статье мы рассмотрим только четыре раздела из основного меню системы разработки агентов. Это:
- Настройки — выглядит как название текущего выбранного агента и пиктограмма шестерёнки,
- Намерения — так в системе называются правила реагирования агента на фразы пользователя,
- Интеграция — в этом разделе можно подключить агента к выбранным мессенджерам,
- Тренировка — основной раздел для развития агента по результатам его взаимодействия с пользователями.
Давайте создадим нового агента. Нажимайте на стрелочку вниз и выбирайте пункт «Create new agent».
На появившейся странице необходимо:
1. Ввести название нового агента — лучше использовать только латинские буквы и цифры.
2. Выбрать русский язык, как основной язык его работы — впрочем пока это ни на что не влияет, кроме возможности использовать встроенную базу знаний.
3. Установить временную зону, в которой работает агент — не очень понятно зачем, ведь он будет работать без сна и отдыха 24х7х365, но ладно.
4. Остальное оставить как есть — все настройки DialogFlow сделает самостоятельно, в том числе и создаст проект в Google.
Интеграция в Телеграм
Теперь нам надо поработать с Телеграмом. Там нужно создать чат-бота.
Сделайте следующие шаги:
1. Найдите бота BotFather и активируйте его при помощи команды /start.
2. Используйте в нём команду /newbot.
3. Введите имя для своего бота. Это имя будет отображаться в Телеграме и к агенту в DialogFlow не имеет никакого отношения.
4. Введите идентификатор нового бота. При помощи этого идентификатора можно будет давать ссылку на бота в Телеграме. Ну вот как я это делаю с Натали: @ai101CourseBot . Идентификатор бота должен оканчиваться на три буквы bot.
Сохраните токен нового бота, который дал BotFather. Этот токен будет использоваться для интеграции с DialogFlow.
В Телеграме в боте BotFather надо настроить нового бота. При помощи команды /mybots надо вывести список ваших ботов и выбрать нового созданного. Далее надо нажать на кнопку «Edit Bot», что позволит отредактировать свойства бота. Надо ввести описание (Description) — оно будет выводиться в диалог с пользователем при старте бота, информацию о боте (About) — она выводится в карточке бота, а также установить аватар, послав картинку.
Теперь возвращаемся назад в DialogFlow и, собственно, интегрируем нового бота с уже имеющимся у нас агентом.
Что надо сделать? А вот что:
1. Снова выберите нового агента в DialogFlow.
2. Заходите в раздел Integrations , где мы, наконец-то, свяжем агента и бота.
3. Находим в обширном списке Телеграм и выбираем его, нажав на пиктограмму и включив ползунок.
4. В соответствующее поле необходимо вставить тот самый токен бота, который дал BotFather.
5. И, наконец, нажать на кнопку «Start». После этого бот в Телеграме начнёт работать.
Вот так это выглядит:
Обучение и тренировка
Итак, начните общаться со своим чат-ботом в Телеграме. Поначалу он будет немного неадекватный. Скорее всего, если вы всё оставили по умолчанию, он на каждую фразу будет писать, что не понял или не смог разобраться. Если вы по любопытству слазили в раздел «Small Talk» и настроили там некоторые ответы, то чат-бот будет использовать их для ответа на типовые вопросы.
Для обучения и тренировки нашего агента нам потребуется использовать два раздела — Intents (намерения, правила) и Training (тренировка).
В разделе Training собраны все диалоги с чат-ботом. Фактически, это лог общения с ним. Это таблица, в которой собрана краткая информация о записях в логе. В колонке «Conversation» используется первая фраза из диалога. Если там использовано слово TELEGRAM_WELCOME, то это сигнализирует о том, что кто-то активизировал чат-бота и общается с ним в первый раз. В колонке «Reuests» показано количество фраз, которые написал пользователь. В колонке «No match» показано число фраз, на которые агент не смог отреагировать, то есть не нашёл правило. Дата — понятно, и в последней колонке ставится зелёная галочка, если соответствующий диалог проведён через процедуру тренировки.
Если открыть диалог, кликнув по соответствующей строке в списке, то на экране появится окно со списком фраз пользователя в этом диалоге. В полях ввода указаны сами фразы, а под ними синими ссылками приведены те правила агента, которые были активированы в ответ. Если было активировано правильное правило, то достаточно просто нажать на кнопку с зелёной галочкой, и соответствующая фраза запишется в правило.
Если же было активировано некорректное правило, или вообще был использован ответ по умолчанию, когда агент не может выбрать правило вообще, то, нажав на синюю надпись, можно либо выбрать правило, либо сразу создать новое. Для этого используется выпадающее меню, в котором можно осуществить контекстный поиск для выбора имеющегося правила или нажать «Create new» и ввести название нового правила. После этого создастся пустое правило без выходных фраз, но с использованной фразой пользователя и введённым названием.
Использовать кнопки с красным перечёркиванием и для удаления фразы не рекомендую, иначе агент так и будет вести себя неадекватно. На каждую фразу пользователя необходимо выбирать правило или создавать новое.
Когда разметка закончена, необходимо нажать на кнопку «Approve», и агент начнёт тренировку. Его нейронная сеть начнёт тренироваться на всём корпусе правил и текстов.
Все создаваемые так или иначе правила попадают в раздел Intents . Здесь собраны правила, которые созданы при тренировке. В списке показаны правила с указанием их приоритета.
Если открыть какое-нибудь правило, то взору будут представлены многочисленные разделы. В точности вот такие:
Читайте также: