Подключаем нейросеть Google Dialogflow к вашему боту

Рассказываем, как подключить Google Dialogflow к Телеграм-боту. Есть вариант подключения без использования кода!

8К открытий10К показов
Подключаем нейросеть Google Dialogflow к вашему боту

Привет! Меня зовут Илья Осипов, я методист курса программирования на Python «Девман» и больше пяти лет пишу код на этом языке. Сегодня расскажу, как новичку сделать полезного чат-бота.

ChatGPT, купленная Microsoft, постепенно захватывает мир. Но у Google уже лет пять как есть своя нейросеть, которой можно пользоваться бесплатно и так же бесплатно интегрировать в свои продукты. Она поглупее, попроще, но с задачей «понять смысл вопроса и ответить заготовленной фразой» вполне справляется.

Кто-то скажет, что это минус в сравнении с ChatGPT. Но, на мой взгляд, они не конкуренты, а решают разные задачи. ChatGPT в ситуации неуверенности, «придумывает» ответ, даже если он будет неправильным. Она хорошо умеет реагировать на широкий спектр вопросов, выполнять творческие задачи. Но, например, в центре техподдержки это и не нужно. 98% пользователей обращаются с типовыми вопросами: «Как сделать X?», «Где найти Y?». В такой ситуации не нужно творчество, да и генерировать уникальный ответ каждый раз тоже ни к чему. Наоборот, будет странно, если в ответ на вопрос «Как мне вернуть деньги за эту услугу?» клиент получит рассуждения «А нужны ли вам эти деньги?» или ещё какой-нибудь казус, который может выдать ChatGPT.

DialogFlow куда лучше справляется с такого типа задачами. Она всё ещё выполнит полезную работу: прочитает текст и поймёт «смысл» вопроса клиента. Но реагировать будет заранее выверенными ответами, без сюрпризов.

Ниже я расскажу, как зарегистрироваться в DialogFlow и собрать на ней небольшой центр техподдержки. Сначала будет пример, как сделать это вообще без кодинга, а далее поговорим о том, как внедрить технологию в свой код.

Дисклеймер: Да, многих бесят такие боты. Но вы не представляете, сколько денег они экономят на типовых вопросах. Бывает, боты не понимают сложный вопрос и отвечают невпопад. На такой случай обычно всегда можно позвать человека. Но на каждый такой «сложный» вопрос приходится сотня типовых, с которыми бот легко справляется самостоятельно.

Шаг 1: Создайте проект в DialogFlow

Начните с создания профиля на DialogFlow. Зайдите на сайт DialogFlow и создайте проект:

Подключаем нейросеть Google Dialogflow к вашему боту 1

И после этого заполните небольшую форму:

Подключаем нейросеть Google Dialogflow к вашему боту 2

Шаг 2: Поздоровайтесь со своим творением

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

С ним уже можно пообщаться, жмите в поле справа-сверху и попробуйте с ним поздороваться. Он понимает множество способов это сделать:

Подключаем нейросеть Google Dialogflow к вашему боту 3

Вот я попробовал с ним поздороваться, и он меня понял:

Подключаем нейросеть Google Dialogflow к вашему боту 4

Как он это понял? За это отвечают намерения (Intents). Каждое намерение — это одна тема разговора, которую понимает бот. Как только вы создали бота, у вас появились два намерения:

Подключаем нейросеть Google Dialogflow к вашему боту 5

На них можно кликнуть и посмотреть, что внутри. Например, я кликнул на «Welcome Intent» и вижу набор приветствий, на которых тренировалась нейросеть:

Подключаем нейросеть Google Dialogflow к вашему боту 6

Шаг 3: Научите бота новым словам

Поздороваться в ответ — это, конечно, важная функция, но за такое вам не заплатят. Давайте научим бота обрабатывать какой-нибудь запрос пользователя, например «Забыл пароль».

Создайте новое намерение по кнопке Create Intent и нажмите внутри Add training phrases:

Подключаем нейросеть Google Dialogflow к вашему боту 7

Теперь нужно объяснить боту, что за намерение он должен обрабатывать. Нужны примеры. Заполните несколько примеров, как пользователь может обратиться в техподдержку. Вот список фраз, который придумал я:

Подключаем нейросеть Google Dialogflow к вашему боту 8

Далее пролистайте вниз и найдите Add Response:

Подключаем нейросеть Google Dialogflow к вашему боту 9

Добавьте текст, которым бот должен отвечать в ответ на тренировочные фразы:

Подключаем нейросеть Google Dialogflow к вашему боту 10

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

Подключаем нейросеть Google Dialogflow к вашему боту 11

Обратите внимание, я написал боту фразу, которой не было среди тренировочных. Даже похожих толком не было. Он понял смысл фразы и научился.

Шаг 4: Подключаем к Telegram

Дальше будет два набора инструкций: для программистов и для людей, которые кодить не умеют.

В любом случае вам надо создать бота в Telegram: это делается прямо в Telegram, через Крёстного отца всех ботов: @BotFather.

Подключаем нейросеть Google Dialogflow к вашему боту 12

Если вы зерокодер

То теперь просто возвращаетесь на сайт DialogFlow, жмёте Integrations, находите Telegram и вставляете туда токен. Готово, можно общаться с новым другом:

Подключаем нейросеть Google Dialogflow к вашему боту 13
Подключаем нейросеть Google Dialogflow к вашему боту 14

Если вы программист

То поздравляю, ваш бот сможет куда больше! Скачайте консольную утилиту gcloud, залогиньтесь в ней через консоль и передайте в неё project_id вашего проекта в DialogFlow. Его можно посмотреть здесь:

Подключаем нейросеть Google Dialogflow к вашему боту 15

После включите API для вашего проекта, скачайте гугловскую библиотеку для вашего языка программирования и можете начинать пользоваться API!

Я программирую на Python, поэтому скачал google-cloud-dialogflow. Теперь пора написать немного кода: нужна авторизация в Google и получение ответа от DialogFlow. По ссылкам вы найдёте готовые примеры кода от Google.

Примеры в документации довольно монструозные, т.к. писались сразу под все языки подряд. Я почистил пример для Python, можете посмотреть его по ссылке на мой gist. Заодно примеры уже собраны в один кусочек кода, вместе. Не забудьте подставить в код свой PROJECT_ID на 36-ой строке, иначе ничего не получится.

В общем-то готово. Код умеет получать ключи от Google, передавать ввод пользователя в DialogFlow и получать ответ. Теперь можете интегрировать этот код буквально куда угодно. Если хотите сделать шаг дальше — можно засунуть этот код в чат-бота.

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

			def echo_dialogflow(update, context):
    message_to_dialogflow = update.message.text
    session_id = update.effective_chat.id
    serialized_answer = detect_intent_text(project_id, session_id, message_to_dialogflow)
    update.message.reply_text(serialized_answer['answer'])

if __name__ == '__main__':
    project_id = 'ВАШ_PROJECT_ID'
    token = create_api_key(project_id)
    print("Successfully created an API key")

    updater = Updater("ВАШ_TELGRAM_TOKEN")
    dispatcher = updater.dispatcher

    dispatcher.add_handler(CommandHandler("start", start))
    dispatcher.add_handler(MessageHandler(Filters.text undefined ~Filters.command, echo_dialogflow))

    updater.start_polling()
    updater.idle()
		

А вот что получится в итоге:

Теперь вы можете дообучить бота отвечать на нужные вам вопросы через браузерный интерфейс или по API.

Следите за новыми постами
Следите за новыми постами по любимым темам
8К открытий10К показов