Как написать умного чат бота

Время на прочтение
6 мин

Количество просмотров 301K

image

Сегодня мне в голову пришла мысль: «А почему бы не написать Telegram чат-бота с ИИ, которого потом можно будет обучать?»

Сейчас сделать это совсем легко, поэтому, недолго думая, я принялся к написанию кода.
Языком я выбрал Python, т.к. на нём легче всего работать с подобного рода приложениями.

Итак, для создания Telegram чат-бота с ИИ нам потребуется:

1. API Telegram. В качестве обёртки я взял проверенную библиотеку python-telegram-bot

2. API ИИ. Выбрал я продукт от Google, а именно Dialogflow. Он предоставляет довольно-таки неплохое бесплатное API. Обёртка Dialogflow для Python

Шаг 1. Создаём бота в Telegram

Придумываем имя нашему боту и пишем @botfather. После создания бота нам придёт API токен, который желательно бы где-то сохранить, т.к. в дальнейшем он нам понадобится.

image

Шаг 2. Пишем основу бота

Создаём папку Bot, в которой потом создаём файл bot.py. Здесь будет код нашего бота.
Открываем консоль и переходим в директорию с файлом, устанавливаем python-telegram-bot.

pip install python-telegram-bot --upgrade

После установки мы уже можем написать «основу», которая пока что будет просто отвечать однотипными сообщениями. Импортируем необходимые модули и прописываем наш токен API:

Код настроек и импорта

# Настройки
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
updater = Updater(token='ВАШ API КЛЮЧ') # Токен API к Telegram
dispatcher = updater.dispatcher

Далее напишем 2 обработчика команд. Это callback-функции, которые будут вызываться тогда, когда будет получено обновление. Напишем две таких функции для команды /start и для обычного любого текстового сообщения. В качестве аргументов туда передаются два параметра: bot и update. Bot содержит необходимые методы для взаимодействия с API, а update содержит данные о пришедшем сообщении.

Код callback’ов

# Обработка команд
def startCommand(bot, update):
    bot.send_message(chat_id=update.message.chat_id, text='Привет, давай пообщаемся?')
def textMessage(bot, update):
    response = 'Получил Ваше сообщение: ' + update.message.text
    bot.send_message(chat_id=update.message.chat_id, text=response)

Теперь осталось лишь присвоить уведомлениям эти обработчики и начать поиск обновлений.
Делается это очень просто:

Код хендлеров

# Хендлеры
start_command_handler = CommandHandler('start', startCommand)
text_message_handler = MessageHandler(Filters.text, textMessage)
# Добавляем хендлеры в диспетчер
dispatcher.add_handler(start_command_handler)
dispatcher.add_handler(text_message_handler)
# Начинаем поиск обновлений
updater.start_polling(clean=True)
# Останавливаем бота, если были нажаты Ctrl + C
updater.idle()

Итого, полная основа скрипта выглядит вот так:

Код полной основы бота

# Настройки
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
updater = Updater(token='ВАШ API ТОКЕН') # Токен API к Telegram
dispatcher = updater.dispatcher
# Обработка команд
def startCommand(bot, update):
    bot.send_message(chat_id=update.message.chat_id, text='Привет, давай пообщаемся?')
def textMessage(bot, update):
    response = 'Получил Ваше сообщение: ' + update.message.text
    bot.send_message(chat_id=update.message.chat_id, text=response)
# Хендлеры
start_command_handler = CommandHandler('start', startCommand)
text_message_handler = MessageHandler(Filters.text, textMessage)
# Добавляем хендлеры в диспетчер
dispatcher.add_handler(start_command_handler)
dispatcher.add_handler(text_message_handler)
# Начинаем поиск обновлений
updater.start_polling(clean=True)
# Останавливаем бота, если были нажаты Ctrl + C
updater.idle()

Теперь мы можем проверить работоспособность нашего нового бота. Вставляем на 2 строке наш API токен, сохраняем изменения, переносимся в консоль и запускаем бота:

python bot.py

После запуска пишем ему. Если всё настроено правильно, то Вы увидите вот это:

image

Основа бота написана, приступаем к следующему шагу!
P.s. не забывайте выключить бота, для этого вернитесь в консоль и нажмите Ctrl + C, подождите пару секунд и бот успешно завершит работу.

Шаг 3. Настройка ИИ

В первую очередь, идём и регистрируемся на Dialogflow (просто входим с помощью своего Google аккаунта). Сразу после авторизации мы попадаем в панель управления.

image

Жмём на кнопку Create agent и заполняем поля по усмотрению (это никакой роли не сыграет, это нужно лишь для следующего действия).

image

Жмём на Create и видим следующую картину:

image

Расскажу, почему созданный нами ранее «Агент» никакой роли не играет. Во вкладке Intents есть «команды», по которым работает бот. Сейчас он умеет лишь отвечать на фразы типа «Привет», и если не понимает, то отвечает «Я вас не понял». Не сильно впечатляет.
После создания нашего пустого агента, у нас появилась куча других вкладок. Нам нужно нажать на Prebuilt Agents (это уже специально обученные агенты, которые имеют множество команд) и из всего представленного списка выбрать Small Talk.

image

Наводим на него и жмём Import. Далее ничего не меняя, жмём Ok. Агент импортировался и теперь мы можем его настроить. Для этого в левом верхнем углу жмём на шестерёнку возле Small-Talk и попадаем на страницу настроек. Теперь мы можем изменить имя агента, как захотим (я оставляю как было). Меняем часовой пояс и во вкладке Languages проверяем, чтобы был установлен русский язык (если не установлен, то ставим).

image
image

Возвращаемся на вкладку General, спускаемся немного вниз и копируем Client access token

image

Теперь наш ИИ полностью настроен, можно возвращаться к боту.

Шаг 4. Собираем всё вместе

ИИ готов, основа бота готова, что дальше? Дальше нам нужно скачать обёртку API от Dialogflow для питона.

pip install apiai

Установили? Возвращаемся к нашему боту. Добавляем в нашу секцию «Настройки» импорт модулей apiai и json (нужно, чтобы в будущем разбирать json ответы от dialogflow). Теперь это выглядит вот так:

Код обновлённых настроек

# Настройки
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import apiai, json
updater = Updater(token='ВАШ API КЛЮЧ') # Токен API к Telegram
dispatcher = updater.dispatcher

Переходим к функции textMessage (которая отвечает за получение любого текстового сообщения) и посылаем полученные сообщения на сервера Dialogflow:

Код отправления сообщений на Dialogflow

def textMessage(bot, update):
    request = apiai.ApiAI('ВАШ API ТОКЕН').text_request() # Токен API к Dialogflow
    request.lang = 'ru' # На каком языке будет послан запрос
    request.session_id = 'BatlabAIBot' # ID Сессии диалога (нужно, чтобы потом учить бота)
    request.query = update.message.text # Посылаем запрос к ИИ с сообщением от юзера

Этот код будет посылать запрос к Dialogflow, но нам нужно также извлечь ответ. Дописываем парочку строк, итого textMessage выглядит вот так:

Полный код функции textMessage

def textMessage(bot, update):
    request = apiai.ApiAI('ВАШ API ТОКЕН').text_request() # Токен API к Dialogflow
    request.lang = 'ru' # На каком языке будет послан запрос
    request.session_id = 'BatlabAIBot' # ID Сессии диалога (нужно, чтобы потом учить бота)
    request.query = update.message.text # Посылаем запрос к ИИ с сообщением от юзера
    responseJson = json.loads(request.getresponse().read().decode('utf-8'))
    response = responseJson['result']['fulfillment']['speech'] # Разбираем JSON и вытаскиваем ответ
    # Если есть ответ от бота - присылаем юзеру, если нет - бот его не понял
    if response:
        bot.send_message(chat_id=update.message.chat_id, text=response)
    else:
        bot.send_message(chat_id=update.message.chat_id, text='Я Вас не совсем понял!')

Немного пояснений. С помощью

request.getresponse().read()

получается ответ от сервера, закодированный в байтах. Чтобы декодировать его, просто применяем метод

decode('utf-8')

и после этого «заворачиваем» всё в

json.loads()

чтобы распарсить json ответ.

Если ответа нет (точнее, json приходит всегда, но не всегда есть сам массив с ответом ИИ), то это означает, что Small-Talk не понял пользователя (обучением можно будет заняться позже). Поэтому если «ответа» нет, то пишем пользователю «Я Вас не совсем понял!».
Итого, полный код бота с ИИ будет выглядеть вот так:

Полный код бота с ИИ

# Настройки
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import apiai, json
updater = Updater(token='ВАШ API ТОКЕН') # Токен API к Telegram
dispatcher = updater.dispatcher
# Обработка команд
def startCommand(bot, update):
    bot.send_message(chat_id=update.message.chat_id, text='Привет, давай пообщаемся?')
def textMessage(bot, update):
    request = apiai.ApiAI('ВАШ API ТОКЕН').text_request() # Токен API к Dialogflow
    request.lang = 'ru' # На каком языке будет послан запрос
    request.session_id = 'BatlabAIBot' # ID Сессии диалога (нужно, чтобы потом учить бота)
    request.query = update.message.text # Посылаем запрос к ИИ с сообщением от юзера
    responseJson = json.loads(request.getresponse().read().decode('utf-8'))
    response = responseJson['result']['fulfillment']['speech'] # Разбираем JSON и вытаскиваем ответ
    # Если есть ответ от бота - присылаем юзеру, если нет - бот его не понял
    if response:
        bot.send_message(chat_id=update.message.chat_id, text=response)
    else:
        bot.send_message(chat_id=update.message.chat_id, text='Я Вас не совсем понял!')
# Хендлеры
start_command_handler = CommandHandler('start', startCommand)
text_message_handler = MessageHandler(Filters.text, textMessage)
# Добавляем хендлеры в диспетчер
dispatcher.add_handler(start_command_handler)
dispatcher.add_handler(text_message_handler)
# Начинаем поиск обновлений
updater.start_polling(clean=True)
# Останавливаем бота, если были нажаты Ctrl + C
updater.idle()

Сохраняем изменения, запускаем бота и идём проверять:

image

Вот и всё! Бот в 30 строк с ИИ написан!

Шаг 5. Заключительная часть

Думаю, Вы убедились, что написать бота с ИИ – дело 10 минут. Осталось лишь теперь его учить и учить. Делать это, кстати, можно во вкладке Training. Там можно посмотреть все сообщения, которые писались и что на них ответил бот (или не ответил). Там же его можно и обучать, говоря боту где он ответил правильно, а где нет.

image

Надеюсь, статья была Вам полезна, удачи в обучении!

Заметили популярность чат-ботов ВКонтакте, Telegram, Facebook? В корпоративных сервисах вроде Slack они также способны приносить пользу.

Что это, и почему пора задуматься о создании чат-ботов?

Чат-бот позволяет пользователям общаться с машиной на человеческом языке, устанавливать задачи, контролировать рабочее время.

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

А вот пример работы чат-бота сети кофеен Starbucks:

Разработка чат-ботов

Можно заказать кофе, а потом уточнить детали с помощью критериев, которые нередко встречаются в заказе.

Чаще всего чат-ботов используют в Facebook, Slack, Telegram.

Устройство нашего чат-бота

От необходимых функций чат-бота зависит путь его разработки. В этой статье мы научимся создавать простейших чат-ботов. Вот как они будут устроены:

Используем API Slack для отправки сообщений в DialogFlow (DF). NLP-движок будет принимать информацию о намерении совершить действие и распознавать смысл сообщения в целом, а затем формировать релевантный ответ для пользователя. Интерфейс Slack и DialogFlow вместе формируют чат-бота. Будем считать, что интерфейс Slack − это лицо, а DF − мозг.

Чат-бот, работающий по алгоритму

Вообще, мы выбрали Slack потому, что он наиболее популярен в корпоративном плане. Есть необходимые API, синхронизация со сторонними сервисами, регулярные обновления. Вот что нужно сделать заранее:

  • Создать Workspace в Slack для тестирования
  • Создать приложение внутри Slack

Создаём рабочую среду

Рабочая среда (пространство) − это то, что объединяет и организует участников команды в Slack. Чтобы новый участник присоединился к такой группе, ему нужно перейти по ссылке, которая обычно выглядит так:

https://workspace-name.slack.com

После создания собственной рабочей среды Slack отправит вам 6-значный код на почту, попросит настроить профиль и группу.

Пока не стоит особо задумываться о названии − мы для примера установили название «something». После выбора URL-адреса Slack предлагает разослать приглашения участникам. Пока стоит пропустить этот шаг. Далее можно пользоваться настроенной средой.

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

После этого нужно перейти в раздел настройки чат-ботов:

Нажимаем «Добавить пользователя». После того, как мы создали бота для приложения, требуется добавить его в рабочее пространство. Вернитесь к панели приложений и найдите кнопку «Установить приложение в рабочее пространство».

Затем Slack запросит несколько разрешений. Одобряйте всё.

Создаём бота с использованием Python

Ещё до подключения сторонних сервисов к Slack-боту, нужно убедиться, что Slack имеет право авторизации для доступа к боту. Для этого Slack предоставляет «токен аутентификации», который используется при попытке установить соединение с ним. Вернитесь к «панели приложений» и выберите опцию «OAuth & Permissions»:

Это настройки прав. Выберите «Bot User OAuth Access Token» и сохраните его.

Теперь, когда у вас все настроено, давайте напишем Python-код. Чтобы упростить подключение к API Slack, мы написали простенькую программу.

Важное примечание! На примере разработка с Python 2.7.

  1. Установите библиотеку slackclient:
    $pip install slackclient
  2. Скопируйте следующие данные:
    $git clone https://github.com/mohdsanadzakirizvi/Slack-AI-ChatBot.git
  3. Настройте токен аутентификации «Bot User OAuth Access Token» и имя вашего бота:
    $export SLACK_TOKEN=your_bot_user_oauth_token_here	 	 
    $export BOTNAME=your_botname_here
  4. Перейдите в каталог Slack-AI-ChatBot:
    $ cd Slack-AI-ChatBot
  5. Запустите бота:
    $ python mainbot.py

    Мы должны получить:

    Бот работает. Обратите внимание, что он будет отвечать только при упоминании @chatbotname:

    Это те параметры ответов, которые задали мы для примера, их можно менять. Если открыть файл mainbot.py, вы увидите следующую функцию:

    def handle_command(slack_api, command, channel):	 	 
     EXAMPLE_COMMAND = 'do'	 	 
     if command.lower().startswith(EXAMPLE_COMMAND) or command.lower().startswith('what'):	 	 
     slack_api.rtm_send_message(channel, 'Yes, code me further to do that!')	 	 
     elif command.lower().startswith('hi') or command.lower().startswith('hey') or command.lower().startswith('hello') or command.lower().startswith('who are you'):	 	 
     slack_api.rtm_send_message(channel, 'Hey, I'm your slack bot, how may I help you?')	 	 
     else:	 	 
     print 'Invalid Command: Not Understood'	 	 
     slack_api.rtm_send_message(channel, 'Invalid Command: Not Understood')

    Здесь всё и происходит. Попробуйте добавить свои собственные правила, чтобы разобраться в этом.

    Теперь, когда мы научились создавать элементарных ботов, давайте усложним задачу и применим машинное обучение вместе с NLP.

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

    Google Dialogflow (api.ai) для NLP и машинного обучения

    Dialogflow мы обошли стороной. Сейчас разберёмся подробнее.

    Настройка DialogFlow

    После регистрации вы получите доступ к консоли:

    Агенты

    DialogFlow работает, создавая агентов − модули NLU (Natural Language Understanding). Они преобразуют естественные пользовательские запросы в управляемые данные.

    Это преобразование происходит, когда введённое пользователем сообщение соответствует команде, которую ожидает программа.

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

    Начнем с создания собственного агента. Для примера возьмем чат-бота пиццерии.

    В левом верхнем углу окна вы увидите вариант «Создать агента». Нажмите на нее и выберите имя для своего агента. Допустим − «pizzaBot».

    Теперь, когда у нас есть агент, мы должны определить объекты для распознавания и возможные намерения.

    Намерения и сущности

    Сущность

    Сущности − это группа объектов, которые необходимо распознать агенту. Например, если мы создаем pizzaBot, то некоторыми объектами для работы выступят тесто, сыр или томатная паста.

    Для создания сущности нажмите кнопку «Объекты» слева и выберите «Создать сущность».

    А потом настройте каждый объект:

    Когда они будут готовы, нужно заняться определением намерений.

    Намерения

    Простыми словами, намерение − это сопоставление между тем, что говорит пользователь, и какие операции может выполнить бот.

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

    Наберите «pizza please!» в демо-поле справа и посмотрите, как отреагирует агент.

    Поскольку мы еще не обучили нашего агента, он ответил одним из многих ответов, что сохранил для неопределённых ситуаций. Давайте создадим намерение приготовить пиццу и назовём ее «makePizza». Нажмите «Создать намерение», выберите название и сохраните его. Вы увидите что-то вроде этого:

    Способ работы DialogFlow заключается в том, что вы можете использовать некоторые примеры пользовательских запросов и обучить систему реагировать на них по-разному в зависимости от контекста. Давайте добавим некоторые базовые фразы для нашего агента:

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

    Что означают эти имена столбцов?

    • Required − определяет, является ли этот параметр обязательным для действия.
    • Entity  − здесь мы сопоставляем параметры с сущностями.
    • Value − если мы хотим повторно использовать этот параметр в ответе, можно просто использовать имя его значения.
    • Is List  − может ли значение параметра быть списком (например, в заказе может быть более одной начинки).
    • Prompts − клише.

    Пример: нажмите «Определить подсказки» и напишите «Какие начинки добавить?»

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

    Обратите внимание, насколько естественен разговор. Как только вы активируете намерение, агент пытается извлечь параметры, которые вы отметили как важные для пользователя. Вам нужно всего лишь дать несколько примеров для тренировки, а движок NLP от DialogFlow позаботится обо всем остальном.

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

    Когда пицца будет готова, пользователь получит подобное сообщение:

    Что сделала машина? Когда мы использовали $ cheese и $ toppings в поле ответа, они автоматически заменялись значениями параметров, извлеченными из беседы пользователя. Удобно, не так ли?

    Обучение агента

    Теперь, когда вся работа агента настроена, пора его обучить. Нажмите на значок настроек рядом с именем агента.

    В окне настроек выберите «ML Settings».

    Вот несколько важных замечаний:

    Существует два режима обучения модели: гибридный режим, только ML.

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

    ML Classification Threshold − минимальный показатель доверия, который должна иметь модель. Только тогда он может принять решение по намерению.

    Нажмите кнопку «Train», после окончания обучения сохраните результаты. Перейдем к следующему шагу − интеграции со Slack-приложением.

    Связываем DialogFlow и Slack

    DialogFlow (DF) − отличный сервис, поддерживающий интеграцию с большинством популярных приложений. Для подключения Slack даже не нужно писать код.

    Настройка данных

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

    Прокрутите вниз, вы увидите поля для ввода учетных данных вашего Slack приложения:

    Вернитесь в консоль Slack или перейдите по ссылке. Прокрутите страницу до конца, там будут те самые учётные данные приложения.

    Скопируйте их в соответствующие поля на странице DialogFlow.

    Чтобы скопировать «Client Secret», вы должны сначала нажать кнопку «Show» рядом с ним. После сохранения учётных данных, нажмите «Start» в правом нижнем углу Slack в диалоговом окне.

    Продолжаем настройку Slack

    Теперь, когда мы настроили Slack и Dialogflow, нужно включить OAuth (помогает при аутентификации), URL-адреса запросов (предоставленные Dialogflow) и подписки на события (какие события мы хотим связать с ботом?).

    Добавьте URL OAuth

    1. Скопируйте URL-адрес OAuth со страницы настройки Slack в DialogFlow.
    2. Перейдите в консоль Slack Developer Console и нажмите «OAuth & Permissions» в левом меню.
    3. Нажмите кнопку «Add a new Redirect URL» и вставьте URL-адрес OAuth.
    4. Нажмите «Add».

    Добавьте URL-адрес запроса

    1. Скопируйте URL-адрес запроса событий на странице настроек Slack Dialogflow.
    2. Перейдите в консоль Slack Developer Console и нажмите «Подписка на события» в меню слева.
    3. Включите события, вставьте URL-адрес подписки на события в поле URL-адреса запроса.

    Через несколько секунд вы увидите результат «Verified» над полем запроса URL.

    Включите подписку на события

    Подписка на события − самая важная вещь для чат-ботов. От этого зависит, какие события наш бот будет слушать и запускать.

    1. Нажмите «Event Subscriptions» в меню слева.
    2. Включите опцию.
    3. В разделе «Subscribe to Bot Events» нажмите кнопку «Add Bot User Event».

    Вы увидите текстовое поле и список событий. А вот те события, которые мы рекомендуем добавить:

    После добавления событий сохраните изменения с помощью кнопки в нижней части экрана.

    Добавьте Slack-бота в команду

    1. В консоли Slack Developer Console выберите «Manage Distribution» в меню слева.
    2. Добавьте его в Slack в разделе «Share Your App with Your Team».

    На следующей странице добавьте агента, используя кнопку авторизации.

    Теперь можно вернуться в рабочее пространство.

    Общение с чат-ботом

    Перейдите в свое рабочее пространство, к личному диалогу с ботом или упомяните его имя − @botname.

    Заметили кое-что?

    Кроме ответа на обычные вопросы о пицце, бот также хорошо отвечает на общие сообщения типа «привет» и «спасибо». Это возможно благодаря функции DialogFlow, называемой «SmallTalk».

    Настройка Small Talk

    Если вы нажмете кнопку «Small Talk» на левой панели в диалоговом окне, то увидите множество опций:

    Добавим реакции на общие вопросы, вроде «как дела», «кто ты». Дальнейшая настройка не требует объяснений. Бот работает!

    Понравилась статья о разработке чат-ботов для Slack? Вот ещё материалы по теме:

    • NLP – это весело! Обработка естественного языка на Python
    • Чат-боты: введение от разработчика
    • Создаем бота в Facebook на Python менее чем за 60 минут

    Источник: Создание умных чат-ботов для Slack on Medium

Уровень: начинающий

Материал рассчитан на тех, кто в жизни не написал ни строчки кода. Если вы уже в курсе основ программирования, прочитайте лучше о чистых функциях.

Многие слышали про чат-ботов и роботов для общения: им пишешь, они отвечают, получается диалог с машиной. Чат-бот может рассказать анекдот, поискать за вас в интернете, забронировать столик в ресторане и что угодно ещё, чему его обучат создатели.

Иногда такое общение выглядит как общение с человеком. Может даже показаться, что там работает искусственный интеллект — и иногда так действительно бывает. Но часто всё проще: это алгоритм, который умеет распознавать некоторые ваши слова и давать ответы по заранее заготовленным шаблонам. Чем алгоритм более разветвлённый, тем естественнее и полезнее бот.

Давайте сделаем собственного чат-бота с очень простым алгоритмом. Позже вы сможете усложнить его, как захотите. Но сначала — самая база для тех, кто никогда не писал код.

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

Мы будем решать задачу на языке JavaScript — это язык программирования, который встроен в ваш браузер и на котором написать код можно прямо сейчас, ничего не устанавливая.

Чтобы сделать что-то на JavaScript, нужно открыть консоль. Почти во всех современных браузерах это делается сочетанием клавиш Shift + Ctrl + J или Cmd + Alt + J. Справа или снизу появится дополнительное окно, в котором уже будет что-то происходить:

Чат-бот будет создан через консоль

Если у вас не открылась консоль, зайдите в верхнее меню и поищите слово «Консоль». Обычно этот пункт прячется в разделе «Инструменты разработчика».

Когда вы открываете консоль, она сразу готова выполнять ваши команды. Если в неё вставить программу, написанную на JavaScript, и нажать Enter, ваш браузер её реализует. Если в коде есть ошибки, консоль сама подсветит их. Можно отправлять в неё программу кусками или даже построчно: браузер будет помнить всё, что происходило в вашей программе, пока вы не перезагрузите страницу.

Первая строка

В консоли можно не только писать код, но и выводить туда результаты. Давайте для начала сделаем самую простую программу, которая отобразит в консоли слово «Привет!». Для этого используем команду console.log('Привет!');

Вставим её в консоль и нажмём Enter:

Чат-бот: пишем первую строку кода

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

Если написать несколько команд, получим сообщение из нескольких строк:

console.log('Привет!');
console.log('Я — ваш компьютер.');

Вот мы и начали создавать своего чат-бота, который нас уже поприветствовал в консоли. Теперь сделаем так, чтобы мы тоже могли ему что-нибудь ответить. Для этого нам понадобятся переменные.

Переменные

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

Чтобы дать понять компьютеру, что у нас сейчас будет переменная, нужно сказать ему слово var, после которого вписать название переменной — так нам проще к ней обращаться. Например, следующая строка создаст переменную name и положит в неё слово «Код»:

var name = 'Код';

Название тут может быть практически любым, главное, чтобы оно начиналось с буквы. По-русски переменные называть нельзя, только буквами латинского алфавита. Можно было бы использовать вариант imya или zovut, но программисты считают, что чем проще название переменной, тем лучше.

Теперь посмотрим содержимое элемента. Следующая команда выведет то, что сейчас записано в переменной name:

console.log(name);

Можно посмотреть, какое сегодня число. Это внутренняя системная переменная. Строго говоря, это не совсем переменная, но для начала давайте считать так:

console.log(Date());

Но это мы всё смотрим во внутренности компьютера. А нам нужно спросить что-то у пользователя. Чтобы мы могли ввести новые данные в нашу программу, используем команду prompt()

var name = prompt('Как вас зовут?');

Вставьте в консоль команду var name = prompt('Как вас зовут?'); и посмотрите, что произойдёт. Компьютер выведет окно и будет ждать, пока вы внесёте туда своё имя. Интерфейс выглядит красиво: давайте в диалоге общаться с компьютером не через консоль, а через такие появляющиеся окошки. Для этого напишем новые команды:

alert('Привет! Я — ваш компьютер.');
var name = prompt('Как вас зовут?');

Пусть компьютер проявит вежливость и скажет, что ему приятно с нами познакомиться. Чтобы он смог обратиться к нам по имени, используем переменную name — в ней как раз хранится то, что мы ответили компьютеру:

alert('Привет, ' + name + ', приятно познакомиться!');

Чтобы вывести осмысленную фразу, мы взяли начало ‘Привет, ‘, затем с помощью плюсика соединили со значением переменной name, которая хранит наше имя, а потом ещё одним плюсиком добавили к фразе концовку. Чтобы компьютер знал, что мы хотим вывести на экран текст, а не числа, используются кавычки. Компьютер воспринимает как текст то, что внутри кавычек. И выводит точно в том виде, в котором написано.

Расчёт дня рождения

Давайте соединим все наши команды в одну программу и допишем несколько новых фраз:

alert('Привет! Я — ваш компьютер.');
var name = prompt('Как вас зовут?');
alert('Отлично, ' + name + ', приятно познакомиться!');
var hobby = prompt('Скажите, ' + name + ', а какое у вас хобби?');
alert('Действительно, ' + hobby + ' — интересное занятие! А я больше всего люблю вычисления и алгоритмы.');
var d = prompt(name + ', у меня для вас сюрприз! Напишите свой день рождения в формате месяц-день (например, 05-23)');
//Началась магия, где мы берём текущую дату и сравниваем с тем, что вы ввели.
//Кстати, это — комментарий, он не влияет на ход программы. 🙂
var current_date = new Date();
var my_date = new Date((d + '-' + (current_date.getFullYear() + 1)));
var dayZ = Math.abs(((Date.parse(my_date) - Date.parse(current_date)) / (1000 * 3600 * 24)) % 365);
var result = dayZ.toFixed(0);
//Магия закончилась, в переменной result у нас теперь хранится количество дней.
alert('Знаете, сколько дней осталось до вашего дня рождения? ' + result + '!');
alert('Спасибо за общение, ' + name + ', ещё увидимся!');

Обратите внимание: у нас появился новый вопрос и новая переменная hobby, в которой хранится информация об увлечении. А ещё — комментарии, которых можно добавлять сколько угодно. JavaScript не обращает внимания на то, что написано после двух косых черт:

//это комментарий

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

Что ещё посмотреть

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

performance.now() — эта команда возвращает время в миллисекундах с момента открытия текущей страницы. Можно поделить на 1 000, и вы узнаете, сколько секунд вы сидите на какой-то странице. Если поделить на 60 000 — сколько минут.

setTimeout() — позволяет выполнить любой код через определённое время. Например, вы можете задать вопрос и предоставить ровно минуту на размышление, после чего появится окно для ответа.

setInterval() —  то же самое, что и предыдущее, но выполнение кода повторяется с равномерным интервалом, например раз в 5 минут. Если вы хотите научить чат-бота, чтобы он раз в час напоминал попить воды, эта команда — то, что нужно.

Как пользоваться этими штуками, мы расскажем в одной из будущих статей, но вы всегда можете самостоятельно поискать в интернете, как они работают. Пользуясь этими тремя возможностями JavaScript, получится создать неплохого бота, который будет следить за вашей продуктивностью и интервалами работы. Подписывайтесь на «Код», чтобы не пропустить новые разборы.

#Руководства

  • 14 сен 2022

  • 0

Разбираемся, как написать чат-бота с помощью библиотеки aiogram. Весь код — внутри статьи.

Иллюстрация: Polina Vari для Skillbox Media

Антон Яценко

Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.

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

В этой статье мы научимся с нуля создавать чат-ботов с помощью Python: выберем лучшую библиотеку и напишем на ней эхо-бота, который отвечает на сообщения пользователя точно такими же сообщениями. Это первая часть урока по чат-ботам в Telegram — во второй части мы добавим новые фичи.

Для создания Telegram-ботов на Python существует несколько десятков библиотек. Они различаются популярностью, размером комьюнити и функциональностью. Рассмотрим самые популярные.

aiogram

Современная библиотека, набирающая популярность. Работает с асинхронным подходом к выполнению кода. Это позволяет не останавливать работу бота в ожидании ответа пользователя. У aiogram подробная документация и большое русскоязычное комьюнити. В этой и последующих статьях цикла мы будем работать как раз с этой библиотекой.

python-telegram-bot

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

TeleBot

Библиотека для создания простых ботов, позволяющая работать с асинхронным и синхронным подходом на выбор. Подходит для небольших проектов. Подробнее можно узнать в документации.

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

Для этого нам необходимо:

  • установить Python и настроить виртуальное окружение;
  • зарегистрировать бота в специальном Telegram-канале @BotFather;
  • установить библиотеку aiogram;
  • написать код эхо-бота, связав его по API с Telegram.

На macOS или Linux. Python установлен в эти операционные системы изначально. Чтобы проверить его наличие, откройте терминал и введите команду:

python --version

Если Python установлен, то терминал покажет его версию:

Скриншот: aiogram / Skillbox Media

На Windows требуется установка Python. Сделать это проще всего по нашей инструкции.

После установки и проверки Python требуется установить виртуальное окружение с помощью virtualenv. Это специальный инструмент, который позволяет изолировать друг от друга проекты в разработке, независимо устанавливая для них библиотеки и пакеты. Удобно, когда вы работаете над разными приложениями одновременно.

virtualenv устанавливается через терминал:

sudo pip3 install virtualenv

После этого необходимо создать директорию для проекта, внутри которой будет работать виртуальное окружение:

mkdir telegram_bot
cd telegram_bot

Команда mkdir создаст папку telegram_bot, а команда cd переведёт нас в неё. Теперь в этой директории будут храниться файлы проекта, связанные с нашим ботом.

Развернём виртуальное окружение внутри папки telegram_bot:

virtualenv venv -p python3

Теперь его активируем. Если этого не сделать, то оно не будет работать.

source venv/bin/activate

Виртуальное окружение запущено, и мы готовы перейти к следующему шагу.


Для создания бота необходимо воспользоваться Telegram и ботом @BotFather. Откройте мессенджер и введите название бота в поисковой строке:

Скриншот: aiogram / Skillbox Media

Открываем его, жмём кнопку «Запустить» и вводим команду /newbot:

Скриншот: aiogram / Skillbox Media

Теперь напишем название и юзернейм для нашего бота. Назовём его echo_skillbox_bot (теперь это имя занято, так что вам надо будет придумать своё). В ответ придёт наш токен, который мы будем использовать для подключения к API Telegram.

Скриншот: aiogram / Skillbox Media

Этот токен мы сохраняем — он потребуется нам в будущем.


Для установки aiogram воспользуемся менеджером пакетов pip. Вводим в терминал:

pip install aiogram

Важно! Библиотека устанавливается в созданное ранее виртуальное окружение, связанное с папкой telegram_bot. Если вы решите создать нового бота в другой директории на компьютере, то установку будет необходимо провести заново, иначе aiogram не будет работать.


Писать код на Python лучше всего в IDE, а не в окне терминала. В проекте ниже мы будем использовать бесплатный редактор Visual Studio Code, но вы можете воспользоваться любым удобным для вас инструментом.

Откроем IDE и создадим файл main.py. Для этого проекта нам потребуется только он. Импортируем из aiogram нужные классы и модуль:

from aiogram import Bot, Dispatcher, executor, types

Разберёмся, что каждый из них делает. Начнём с классов:

  • Bot определяет, на какие команды от пользователя и каким способом отвечать;
  • Dispatcher позволяет отслеживать обновления;
  • Executor запускает бота и выполняет функции, которые следует выполнить.

Модуль types позволит нам использовать базовые классы для аннотирования, то есть восприятия сообщений. Например, мы будем использовать types.Message, позволяющий работать с приёмом текстовых сообщений пользователя. Подробно об этом можно прочесть в документации.

Импортируем наш токен, который поможет коммуницировать с API Telegram:

API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ' #В одинарных кавычках размещаем токен, полученный от @BotFather.

Теперь необходимо инициализировать объекты bot и Dispatcher, передав первому наш токен. Если их не инициализировать, то код не будет работать.

bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

Настроим приветственное окно для нового пользователя, которое будет появляться при нажатии команды /start. Для этого создаём message_handler и прописываем функцию ответа:

@dp.message_handler(commands=['start']) #Явно указываем в декораторе, на какую команду реагируем. 
async def send_welcome(message: types.Message):
   await message.reply("Привет!nЯ Эхо-бот от Skillbox!nОтправь мне любое сообщение, а я тебе обязательно отвечу.") #Так как код работает асинхронно, то обязательно пишем await.

Теперь при нажатии на кнопку Начать или при вводе команды /start пользователь будет получать от бота приветственное сообщение.

Разберёмся в коде:

  • message_handler — это декоратор, который реагирует на входящие сообщения и содержит в себе функцию ответа. Декоратор — это «обёртка» вокруг функций, позволяющая влиять на их работу без изменения кода самих функций. В нашем случае мы управляем функцией, считая команды пользователя;
  • commands=[‘start’] — это команда, которая связана с декоратором и запускает вложенную в него функцию;
  • async def send_welcome — создаёт асинхронную функцию, которая принимает в себя сообщение пользователя message, определяемое через тип Message. Саму функцию можно назвать любым образом. Мы выбрали send_welcome, чтобы название было понятным и осмысленным;
  • await message.reply — определяет ответ пользователя, используя await из-за асинхронности работы библиотеки.

Теперь создадим событие, которое будет обрабатывать введённое пользователем сообщение:

@dp.message_handler() #Создаём новое событие, которое запускается в ответ на любой текст, введённый пользователем.
async def echo(message: types.Message): #Создаём функцию с простой задачей — отправить обратно тот же текст, что ввёл пользователь.
   await message.answer(message.text)

Так как бот должен реагировать на любое текстовое сообщение от пользователя, то скобки в @dp.message_handler мы оставляем пустыми. Параметр message не отличается от использованного в предыдущих шагах.

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

Остаётся последний этап — настроить получение сообщений от сервера в Telegram. Если этого не сделать, то мы не получим ответы бота. Реализовать получение новых сообщений можно с помощью поллинга. Он работает очень просто — метод start_polling опрашивает сервер, проверяя на нём обновления. Если они есть, то они приходят в Telegram. Для включения поллинга необходимо добавить две строчки:

if __name__ == '__main__':
   executor.start_polling(dp, skip_updates=True)

Всё, теперь код нашего бота полностью готов:

from aiogram import Bot, Dispatcher, executor, types
 
API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ'
 
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
 
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
   await message.reply("Привет!nЯ Эхо-бот от Skillbox!nОтправь мне любое сообщение, а я тебе обязательно отвечу.")
 
@dp.message_handler()
async def echo(message: types.Message):
   await message.answer(message.text)
 
if __name__ == '__main__':
   executor.start_polling(dp, skip_updates=True)

Сохраняем его в нашей папке telegram_bot под именем main.py.


Для запуска бота нам необходим терминал. Открываем его и переходим в нашу папку telegram_bot. После этого вводим команду:

python3 main.py

В ответ терминал пришлёт сообщение, что обновления успешно пропущены:

Скриншот: aiogram / Skillbox Media

Находим нашего бота в Telegram по имени @echo_skillbox_bot и запускаем его, нажав на кнопку Начать. В ответ на это или на команду /start нам придёт приветственное сообщение:

Скриншот: aiogram / Skillbox Media

Попробуем написать что-то:

Скриншот: aiogram / Skillbox Media

Как мы видим — всё работает. Бот возвращает нам наши сообщения.

Расширять функциональность бота, указывая для разных команд пользователя разные ответы. Например, добавить раздел помощи, который будет появляться по команде /help. Или настроить запуск кода на виртуальном сервере, чтобы бот работал независимо от вашего компьютера.

В следующей части статьи мы добавим к нашему боту кнопки и новые возможности.

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

Участвовать

Научитесь: Профессия Python-разработчик
Узнать больше

Вы можете самостоятельно создать бота в Telegram без программирования. Повторите действия по инструкции и бесплатно запустите своего первого чат-бота уже через 15 минут.

Создадим бота, который будет приветствовать, задавать вопрос с вариантами ответов и реагировать на нажатие на кнопок.

Шаг 1. Создайте аккаунт разработчика

1. Зарегистрируйтесь на botmother.com с помощью электронной почты (на нее придет письмо с подтверждением) или войдите через Google.

2. Нажмите кнопку «Создать нового бота» (справа внизу).

3. Выберите «Пустой бот».

Перед вами откроется конструктор— это место, где можно разрабатывать бота и добавлять функции.

Слева находится меню с разделами конструктора. Справа — вкладка с компонентами и экранами. По центру — рабочая зона для разработки. В левом нижнем углу — виджет обратной связи. Если возникнут трудности, пишите в поддержку.

Логика бота создается с помощью экранов— это сообщения бота (шаги, этапы), внутри которых могут быть различные функции. Автоматически создается «Стартовый экран» — первое сообщение от бота.

На каждый экран можно добавлять компоненты— это функции и действия бота (например, отправление текста, картинок, кнопок и т.д.).

Все компоненты расположены на вкладке справа.

Шаг 2. Создайте приветствие

1. На вкладке «Компоненты» нажмите на компонент «Сообщение» и перетяните его на экран.

2. Напишите любой текст. Например, «Привет! Это мой первый бот».

3. Нажмите зеленую кнопку «Сохранить» (справа внизу).

Шаг 3. Подключите бота к мессенджеру

В Telegram чат-боты создаются с помощью специального бота @BotFather. Через него можно управлять данными бота, добавить описание, аватар и т.д.

Создадим бота и придумаем ему название:

2. Напишите ему /newbot.

3. Придумайте и напишите название бота. Оно будет отображаться в контактах и чатах. Например, «Hello, bot».

4. Придумайте и напишите юзернейм. Он используется для упоминания бота и в ссылках. Юзернейм должен быть на латинице и обязательно заканчиваться на «bot». Например, «botmother_hello_bot».

Теперь нужно подключить бота в Telegram к вашему аккаунту разработчика:

2. Скопируйте токен бота.

3. Вернитесь в конструктор, найдите и откройте в меню слева раздел «Настройки».

4. Переключателем включите платформу Telegram.

5. Нажмите кнопку «Изменить».

6. Вставьте ранее скопированный токен бота.

7. Сохраните изменения.

Теперь бот подключен к конструктору, а значит, он может отвечать всем пользователям. Протестируем?

1. Найдите в поиске Telegram своего бота по юзернейму.

2. Нажмите «Начать» (или «Start»). Бот должен отправить приветственное сообщение.

Отлично! Ваш бот умеет отправлять сообщение.

Шаг 4. Добавьте дополнительные функции

Усложним бота. Пусть он задает вопрос с вариантами ответов и присылает разные сообщения в зависимости от выбора пользователя.

Например:

Текст: Как дела?

Первая кнопка: Хорошо

Вторая кнопка: Плохо

Для этого добавим еще два экрана, кнопки и изображение:

1. Откройте конструктор.

2. Добавьте два новых экрана. Для этого нажмите кнопку «Добавить экран» дважды.

3. Сохраните изменения.

Можно изменить названия добавленных экранов двойным кликом:

1. Два раза кликните на названия экранов.

2. Отредактируй тексты. Например, «Экран Хорошо» и «Экран Плохо».

Добавим кнопки, на которые пользователи смогут нажимать:

1. Переместите компонент «Кнопки» на «Стартовый экран».

2. Напишите текст. Например, «Как дела?».

3. Добавьте две кнопки.

4. Напишите тексты на кнопках. Например, «Экран Хорошо» и «Экран Плохо».

Каждая кнопка должна вести на определенный экран, который указывается в настройках кнопки:

1. Нажмите на первую кнопку.

2. В поле «Переход на экран» выберите экран «Экран Хорошо».

3. Нажмите на вторую кнопку.

4. Выберите другой экран — «Экран Плохо».

5. Сохраните изменения.

Итак, на «Стартовом экране» пользователь нажимает на кнопки и попадает на разные экраны. Нужно заполнить их контентом:

1. Переместите компонент «Изображение» на экран «Экран Хорошо».

2. Загрузите любую картинку или вставьте ссылку на изображение.

3. Сохраните изменения.

Теперь заполним следующий экран:

1. Переместите компонент «Сообщение» на экран «Экран Плохо».

2. Напишите текст. Например, «Не унывай, все будет хорошо!». Можно добавить эмодзи.

3. Сохраните изменения.

Все готово!

Шаг 5. Протестируйте бота

У нас получился такой сценарий: бот приветствует пользователя и задает вопрос с вариантами ответов; пользователь нажимает кнопку, и бот присылает определенное сообщение. Давайте протестируем!

1. Откройте своего бота.

2. Напишите команду /start.

3. Понажимайте на кнопки.

Поздравляем!

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

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

Чат-бот — это виртуальный собеседник, способный отвечать по заданному шаблону. Проще говоря — это программа для коммуникации с пользователем/клиентом/лидом. Многие ошибочно считают, что разработка чат-бота своими руками — это слишком сложно, долго и вообще для этого нужно быть чуть ли не Илоном Маском.

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

(Спойлер — на создание бота по инструкции ниже у вас уйдет 5-10 минут).

Зачем нужны чат-боты в арбитраже трафика?

Основные цели создания чат-ботов следующие:

  • Вовлечение аудитории.
  • Прогрев потенциальных лидов.
  • Автоматизация движения по воронке.
  • Сбор данных для аналитики.

Как работают чат-боты?

Абсолютно любой чат-бот состоит из трех элементов:

  • Хостинг-сервера — компьютера или другого «железа», на котором он запущен.
  • Логики — программных алгоритмов, обеспечивающих его работу.
  • Базы данных — места, где хранятся шаблоны ответов, а также полученная от пользователей информация для последующего анализа.

Кроме того, если мы говорим об использовании бота в мессенджерах или социальных сетях, то есть еще один элемент — API. Если в двух словах, API — это «прокладка» между алгоритмами бота и алгоритмами той платформы, внутри которой он используется.

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

Сервер

Серверы можно классифицировать по многим критериям. Но в нашем случае достаточно знать, что серверы могут быть платными и бесплатными. Кроме того, они могут быть физическими и виртуальными (выделенные конкретно под вас ресурсы реального физического сервера).

Так как мы с вами только учимся создавать чат-ботов и не хотим тратиться на эксперименты — выбираем бесплатный. Физический сервер или выделенный — значения не имеет. Лишь бы мощности сервера хватило под ваши потребности.

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

Логика бота

Здесь мы уже немного углубимся в программирование, точнее в алгоритмизацию. Не переживайте — не очень глубоко. Суть в следующем — абсолютно любая программа, и боты в том числе, имеет свою логику работы. Эта логика называется алгоритмом.

Для большинства арбитражных задач достаточно понимать, что есть три типа алгоритмов:

  • Последовательные — когда после первого действия идет второе, затем третье и т. д.

  • Разветвляющиеся — когда в зависимости от заданных условий выбирается то или иное действие.

  • Цикличные — когда то или иное действие выполняется многократно, до тех пор, пока не будет выполнено условие выхода из цикла.

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

Пример возможной логики чат-бота

База данных

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

Кроме того, использование баз-данных — оптимальнее, чем прописывание всей информации непосредственно в коде, с точки зрения информационной безопасности. Впрочем, пока что полноценная база данных вам вряд ли понадобится. Просто на будущее имейте ввиду, что чем быстрее она работает — тем лучше.

В разделе ниже рассмотрены базовые моменты, с которыми вам придется столкнуться при создании ботов. Советуем изучить их, для лучшего понимания темы. Но если хотите перейти сразу к делу — пролистайте до разделов Создаем простого чат-бота для Telegram или Создаем бота-говорилку для Telegram.

Как создать бота с нуля пошагово

1. Знакомство с API. Следует понимать, платформы, для которых создаются боты, могут быть разными. Соответственно, и API-интерфейс у них разный. Более того, хоть у большинства мессенджеров или социальных сетей и есть API — его может не быть. Особенно, если платформа молодая. В этом случае без толкового программиста уже не обойтись.

Пример интерфейса API в Telegram

От API также зависит и то, какой язык программирования удобнее всего использовать. А следовательно, и какой хостинг выбрать. Например, в API Telegram есть множество готовых инструментов для Python — значит, нам вполне подойдет сервер, поддерживающий Python. А вот в API VK официальные инструменты есть лишь под Java и PHP, поэтому придется либо создавать их на Python с нуля, либо использовать чужие (а это риски с точки зрения безопасности).

Пример интерфейса API в VK

2. Создание логики. Нужно максимально подробно сформулировать задачу, которую будет делать бот. При этом четкая формулировка задач вовсе не означает, что возможности бота будут ограничены ею — это же наш бот, и мы всегда сможем «улучшить» его. А вот если бы он был сторонним — то нам бы пришлось либо довольствоваться тем, что есть, либо снова платить разработчикам.

В качестве примера поставим следующую задачу:

  • Бот создается под слив на дейтинг из телеги.

  • Бот должен приветствовать написавшего ему пользователя и предлагать продолжить общение в «другом месте».

  • После реализации этой задачи, мы ее усложним — научим имитировать общение по словарю из текстового файла (в данном случае он и будет базой данных) и сохранять вопросы, которые интересуют пользователей.

Пример формулировки задачи в виде блок-схемы

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

Итак, задача сформулирована — идем дальше.

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

4. Создание и запуск бота. Собственно, это мы сейчас будем делать ниже.

5. Улучшение бота — это мы тоже сделаем дальше.

Создаем простого чат-бота для Telegram

2. Открываем консоль Bash и ждем завершения инициализации.

3. Устанавливаем модуль для работы с API Telegram с помощью Python — pyTelegramBotAPI. (Здесь предполагается, что мы уже ознакомились с API Telegram и нашли его там в разделе Python). Для этого вводим:

pip3.9 install —user pyTelegramBotAPI

*Обратите внимание, 3.9 — это актуальная на момент написания статьи версия Python, поддерживаемая и сервером, и Телегой. Попробуйте ради интереса написать 1.2 вместо 3.9 — ничего не получится. Суть в том, что если версия языка программирования не поддерживается и платформой, и сервером — ничего не выйдет.

Официальный модуль для работы с API Telegram с помощью Python установлен на ваш сервер. Вы можете использовать любой — но официальные, обычно, безопаснее.

4. Получаем токен для работы бота. В Телеге это делается с помощью официального бота @BotFather — просто пишете ему и следуете инструкции. От вас требует лишь придумать боту имя — оно не должно нарушать правила Телеги, и в конце имени должно быть _bot.

*в других платформах получение токена для работы с API будет отличаться. Но сам этап «получение токена» всегда будет одинаковым.

Как только вы укажете подходящее имя — @BotFather пришлет вам сообщение с токеном.

5. Переключаем консоль в режим интерпретатора Python (несмотря на название, сервис pythonanywhere поддерживает не только Python). Для этого вводим:

python3.9

*В вашем случае версия также может отличаться.

6. Загружаем модуль telebot, входящий в состав ранее установленного модуля pyTelegramBotAPI. Затем авторизируемся с помощью токена и подключаем логику бота. Для этого вводим:

import telebot

bot = telebot.TeleBot(‘ВАШ ТОКЕН’)

@bot.message_handler(func=lambda m: True)

def echo_all(message):

bot.reply to(message, ‘go to google.com’)

bot.polling()

*ВАШ токен — это набор символов из ответа @BotFather

7. Проверяем результат. Наш бот получает сообщение пользователя и в ответ шлет ему ссылку на google.com.

Получилось? Поздравляем! Но такой бот слишком палевный и много трафика не даст. Давайте сделаем что-то более практичное.

Создаем бота-говорилку со словарем для Telegram

Для начала удаляем весь «мусор», оставшийся после наших тестов. Для этого:

1. Удаляем использованную консоль.

2. Удаляем ненужные файлы.

Затем переходим к созданию нового бота — говорилки со словарем вопросов/ответов:

1. Открываем консоль Bash.

2. Устанавливаем модуль для работы с API Telegram с помощью Python — pyTelegramBotAPI. Для этого вводим:

pip3.9 install —user pyTelegramBotAPI

3. Устанавливаем модуль для подбора ответов по словарю — Fuzzy Wuzzy. Для этого вводим:

pip3.9 install fuzzywuzzy

4. Устанавливаем модуль метрики Левенштейна, необходимый для корректной работы модуля Fuzzy Wuzzy. Для этого вводим:

pip3.9 install python-Levenshtein

5. Создаем скрипт с логикой бота. Для этого открываем блокнот, копируем в него содержимое:

import telebot

import os

from fuzzywuzzy import fuzz

bot = telebot.TeleBot(‘ВАШ ТОКЕН’)

mas=[]

if os.path.exists(‘slovar.txt’):

f=open(‘slovar.txt’, ‘r’, encoding=’UTF-8′)

for x in f:

if(len(x.strip()) > 2):

mas.append(x.strip().lower())

f.close()

def answer(text):

try:

text=text.lower().strip()

if os.path.exists(‘slovar.txt’):

a = 0

n = 0

nn = 0

for q in mas:

if(‘u: ‘ in q):

aa=(fuzz.token_sort_ratio(q.replace(‘u: ‘,»), text))

if(aa > a and aa!= a):

a = aa

nn = n

n = n + 1

s = mas[nn + 1]

return s

else:

return ‘Ошибка’

except:

return ‘Ошибка’

@bot.message_handler(commands=[«start»])

def start(m, res=False):

bot.send_message(m.chat.id, ‘Я на связи. Напиши мне Привет )’)

@bot.message_handler(content_types=[«text»])

def handle_text(message):

f=open(‘log.txt’, ‘a’, encoding=’UTF-8′)

s=answer(message.text)

f.write(‘u: ‘ + message.text + ‘n’ + s +’n’)

f.close()

bot.send_message(message.chat.id, s)

bot.polling(none_stop=True, interval=0)

Находим «bot = telebot.TeleBot(‘ВАШ ТОКЕН’)» — вставляем токен из ответа @BotFather (см. предыдущий раздел).

Сохраняем файл как «bot.py».

6. Создаем словарь (примитивная база данных). Для этого открываем блокнот, создаем в нем следующую структуру:

u: Вопрос пользователя

Ответ бота

Например:

u: как зовут

Маша меня зовут!

u: сколько тебе лет

Мне уже 18, честно-честно!

u: где живешь

Я из интернета:)

u: Парень есть?

Неа=Р Мне тут неудобно общаться. Заходи на google.com

Можете дополнить его по своему усмотрению, но придерживайтесь структуры, иначе бот будет работать некорректно. Сохраняем его как «slovar.txt»

7. Создаем файл-логов (примитивная база данных). Для этого открываем блокнот и сохраняем пустой файл как log.txt. Лог-файл нам понадобится для того, чтобы мы могли видеть, какие вопросы задают пользователи, и «обучать» бота в дальнейшем.

8. Загружаем все три файла на сервер.

9. Запускаем бота.

10. Проверяем результат. Наш бот имитирует общение по словарю. Кроме того, он записывает в log.txt все сообщения от пользователей и свои ответы на них. Благодаря этому словарь можно довести до ума, чтобы бот выглядел реалистичнее.

Поздравляем, теперь у вас есть собственный чат-бот, который можно будет еще и обучать. Как говорится — вы великолепны!

Где брать код/модули/скрипты для ботов?

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

В случае с чат-ботами, лучше всего начать с GitHub:

Кроме того, на GitHub можно найти исходный код практически для любой задачи. Причем не только на Python, но и на любом другом более-менее распространенном языке программирования.

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

Возможные риски

Теперь, когда знаем, как создать собственного бота и где брать для него новые фишки в случае необходимости, давайте вкратце пройдемся по возможным рискам такого подхода. Уделите внимание — это важно!

Наиболее значимые риски:

  • Хакеры. Использование чужих модулей — то же самое, что использование чужой программы. Буквально. Если вы не понимаете, что в ней, злоумышленники смогут это использовать в своих целях. Учтите это и старайтесь не просто «соединять модули», а понимать, что именно вы делаете.

  • Юридические тонкости. Чат-боты — легальны. Но если вы будете использовать их для продвижения чернухи или нелегальных тем — вас привлекут к ответственности. Сослаться на то, что «это же бот, а не я» — не получится. Это же относится ко взломам, куки-стафингу и аналогичным темам.

  • Нагрузка на железо. Постарайтесь узнать, какой именно язык программирования и какая серверная архитектура оптимальны для решения ваших задач. Да, все может работать и без глубокого понимания таких тонкостей, но тогда вам придется переплачивать за более мощное железо. И переплата будет прямо пропорциональна популярности вашего бота.

ПОДВОДЯ ИТОГИ

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

В этом руководстве мы рассмотрим создание чат-бота на Python с помощью библиотеки Chatterbot.

Вы устали ждать в длинных очередях, пока ваш звонок переадресуют менеджеру по работе с клиентами? Чтение раздела часто задаваемых вопросов вызывает у вас тошноту? Тогда вы на правильном пути.

Можете ли вы вспомнить, когда в последний раз вам доставили не тот товар и вы общались со службой поддержки клиентов через чат? Существует высокая вероятность того, что с вами общался не человек, а бот. Так что же такое боты? Как их создавать? Какой исходный код для этого требуется? Именно эти вопросы мы и разберем сегодня!

При создании современных ботов используется искусственный интеллект, опирающийся на машинное обучение и обработку естественного языка (NLP – Natural Language Processing). ИИ обеспечивает максимально гладкое взаимодействие между людьми и компьютерами.

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

Упрощенно можно сказать, что чат-боты — это эволюция систем вопросов и ответов, использующих обработку естественного языка. Согласно некоторым источникам, к 2024 году размер мирового рынка общения вырастет до 15,7 млрд долларов. При этом годовой темп роста составит 30,2%.

Например, во время пандемии коронавируса мы стали свидетелями тысяч мистификаций о том, что можно использовать для лечения COVID или что может быть полезно для повышения иммунитета, или о том, был ли вирус разработан в лаборатории. Чтобы положить конец таким мистификациям, Facebook запустил чат-бота, который работает как факт-чекер.

Что такое чат-бот?

Термин «чаттербот» появился в 1994 году, когда Майкл Молдин создал своего первого чат-бота по имени Джулия.

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

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

Чат-боты помогают любому бизнесу/организации в достижении следующих целей:

  • Повышение эффективности работы
  • Автоматизация выполнения запросов клиентов
  • Обработка базовых запросов, которая освобождает сотрудников для работы над сложными и более ценными запросами
  • Поддержка многоязычности
  • Экономия времени и усилий за счет автоматизированной поддержки клиентов
  • Повышение скорости отклика, а также вовлеченности клиентов
  • Персонализация общения

Как работает чат-бот?

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

Чат-бот отвечает пользователю согласно заложенной в него программе. Боты бывают разных видов, в зависимости от принципа работы. Основных вида три:

  • Чат-бот на основе правил. Это базовый чат-бот. Пользователь взаимодействует с ботом, используя предопределенные параметры. Чтобы получить ответ от бота, пользователю необходимо выбрать нужный параметр. Такие боты получают запрос пользователя, анализируют его, а затем предлагают результаты в виде кнопок. Обычно эти боты используются для замены разделов FAQ. Но если речь идет о сложных запросах, это не лучшее решение.
  • Независимые чат-боты с ключевыми словами. Это боты, использующие машинное обучение. В отличие от чат-ботов на основе правил, они анализируют то, что хочет пользователь, и реагируют соответствующим образом. Эти боты используют настраиваемые ключевые слова и машинное обучение, чтобы определить, как эффективнее и результативнее реагировать на запросы пользователей.
  • NLP (или контекстные) чат-боты. На данный момент они самые продвинутые. Эти чат-боты представляют собой комбинацию лучших чат-ботов на основе правил и ключевых слов. Они используют обработку естественного языка, чтобы понять контекст запросов и намерения пользователей и действовать соответственно. Такие чат-боты могут легко обрабатывать несколько запросов от одного и того же пользователя.

[machinelearning_ad_block]

Сравнение платформ для создания чат-ботов

Дальше мы обсудим список основных платформ для создания чат-ботов с искусственным интеллектом.

Azure Bot Service предлагает создать чат-бота с нуля, т. е. вы можете создавать, подключать, тестировать и развертывать. Это позволяет разработчикам использовать SDK и инструменты с открытым исходным кодом. Кроме того, Azure позволяет разработчикам создавать продвинутых ботов для обработки сложных запросов.

Botsify. Уникальность этого инструмента в том, что он позволяет пользователям без технического бэкграунда создавать чат-ботов с интуитивно понятным интерфейсом. Боты представлены здесь в виде историй, т. е. вы можете создать несколько историй или несколько чат-ботов и развернуть их в соответствии с имеющимися требованиями. Кроме того, есть ещё одна замечательная функция — возможность сохранять ответы пользователей в форму, которую можно легко экспортировать в CSV.

Amazon Lex позволяет разработчикам создавать диалоговые интерфейсы с использованием текста и голоса. Он предлагает расширенные функции глубокого обучения и обработки естественного языка для понимания контекста текста. Amazon lex также предоставляет простую в использовании консоль для создания чат-бота за считанные минуты.

Mobile Monkey. Данный сервис предлагает разработчикам создавать чат-ботов специально для маркетинговых целей. Это позволяет разрабатывать рекламные боты Facebook, SMS-боты и собственные веб-чат-боты на одной платформе. Здесь также предлагаются готовые шаблоны чат-ботов для любого бизнеса, которые можно напрямую встроить в сайт.

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

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

А теперь давайте разберем создание нашего собственного чат-бота на Python с использованием библиотеки chatterbot.

Chatterbot

Как следует из названия, chatterbot — это библиотека Python, специально разработанная для создания чат-ботов. Этот алгоритм использует набор инструментов машинного обучения для создания различных ответов пользователям в соответствии с их запросами.

Chatterbot значительно упрощает разработку чат-ботов. Всё начинается с создания необученного бота, у которого нет предыдущего опыта или знаний о том, как общаться. Затем библиотека сохраняет запросы, сделанные пользователями, а также отправленные им ответы. По мере увеличения «базы знаний» точность ответов чат-бота растет.

Chatterbot обучен искать ближайший аналогичный ответ, находя ближайший запрос, аналогичный новому запросу. Затем он выбирает из уже существующих ответов. Уникальность такого чат-бота заключается в том, что он позволяет разработчикам легко создавать свои собственные наборы данных и структуры.

От редакции Pythonist. О создании чат-бота при помощи библиотеки TensorFlow можно почитать в цикле статей «Чат-бот на Python (Deep Learning + TensorFlow)».

Создание чат-бота с помощью Chatterbot

Итак, начнем с установки библиотеки chatterbot. Для создания чат-бота также необходимо установить chatterbot_corpus. Он содержит корпус данных, включенных в модуль чат-ботов. Каждый корпус представляет собой не что иное, как прототип различных входных операторов и их ответов. Эти корпуса используются ботами для самообучения. Рекомендуемый способ установки chatterbot и chatterbot_corpus — использование pip.

Команды установки для терминала:

pip install chatterbot
pip install chatterbot_corpus

Команды установки Jupyter Notebook:

!pip install chatterbot
!pip install chatterbot_corpus

Давайте сначала импортируем класс Chatbot из модуля chatterbot.

from chatterbot import ChatBot

Создание экземпляра чат-бота

Теперь пришло время самой интересной части, а именно присвоения имени вашему чат-боту путем создания объекта Chatbot. Вы можете выбрать любое имя.

# Create object of ChatBot class
bot = ChatBot('Buddy')
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /root/nltk_data...
[nltk_data]   Unzipping taggers/averaged_perceptron_tagger.zip.
[nltk_data] Downloading package stopwords to /root/nltk_data...
[nltk_data]   Unzipping corpora/stopwords.zip.
[nltk_data] Downloading package wordnet to /root/nltk_data...
[nltk_data]   Unzipping corpora/wordnet.zip.

Эта единственная строка кода генерирует нашего собственного нового бота по имени Buddy. Однако нам нужно указать еще несколько параметров перед запуском нашей первой программы.

Вы можете расположить адаптер хранилища с объектом чат-бота. Адаптеры хранилища позволяют подключаться к определенному устройству хранения или сети.

Для использования адаптера хранилища нам нужно указать его. Мы разместим адаптер хранилища, назначив его пути импорт хранилища, которое хотим использовать.

Здесь мы используем адаптер хранилища SQL. Он позволяет чат-боту подключаться к базам данных в SQL. Используя параметр базы данных, мы создадим новую базу данных SQLite.

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

# Create object of ChatBot class with Storage Adapter
bot = ChatBot(
    'Buddy',
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    database_uri='sqlite:///database.sqlite3'
)

Вы также можете расположить логический адаптер с объектом чат-бота. Как следует из названия, логический адаптер регулирует логику чат-бота, т. е. выбирает ответы на любой предоставленный ему ввод. Этот параметр содержит список логических операторов.

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

Здесь мы использовали два логических адаптера: BestMatch и TimeLogicAdapter.

# Create object of ChatBot class with Logic Adapter
bot = ChatBot(
    'Buddy',  
    logic_adapters=[
        'chatterbot.logic.BestMatch',
        'chatterbot.logic.TimeLogicAdapter'],
)

Обучение чат-бота

Теперь финальный шаг в создании чат-бота — его обучение с использованием модулей, доступных в Chatterbot.

Обучение чат-бота это просто введение разговора в базу данных. Как только чат-бот получает набор данных, он создает необходимые записи в графе знаний, чтобы правильно представлять входные и выходные данные.

Для начала давайте импортируем ListTrainer, создадим его объект, передав объект Chatbot. И вызовем метод train(), передав список предложений.

# Inport ListTrainer
from chatterbot.trainers import ListTrainer

trainer = ListTrainer(bot)

trainer.train([
'Hi',
'Hello',
'I need your assistance regarding my order',
'Please, Provide me with your order id',
'I have a complaint.',
'Please elaborate, your concern',
'How long it will take to receive an order ?',
'An order takes 3-5 Business days to get delivered.',
'Okay Thanks',
'No Problem! Have a Good Day!'
])
List Trainer: [####################] 100%

Тестирование чат-бота

Последний шаг — проверка разговорных навыков нашего бота. Для проверки его ответов мы будем вызывать метод get_responses() экземпляра чат-бота следующим образом:

# Get a response to the input text 'I would like to book a flight.'
response = bot.get_response('I have a complaint.')

print("Bot Response:", response)
Bot Response: Please elaborate, your concern

Мы создадим цикл while для запуска нашего чат-бота. При переборе предложений в цикле мы получаем соответствующие ответы, так как мы уже ввели данные в нашу базу. Если мы получаем от пользователя Bye или bye (прощание), мы можем положить конец циклу и остановить программу.

name=input("Enter Your Name: ")
print("Welcome to the Bot Service! Let me know how can I help you?")
while True:
    request=input(name+':')
    if request=='Bye' or request =='bye':
        print('Bot: Bye')
        break
    else:
        response=bot.get_response(request)
        print('Bot:',response)
Enter Your Name: Avinash
Welcome to the Bot Service! Let me know how can I help you?
Avinash:I need your assistance regarding my order
Bot: Please, Provide me with your order id
Avinash:12345
Bot: No Problem! Have a Good Day!
Avinash:Bye
Bot: Bye

Заключение

Поздравляем, вы добрались до конца данного урока!

Сегодня мы разобрали создание чат-бота на Python с использованием Chatterbot. Процесс создания бота был не только простым, но и дал точные результаты. Благодаря искусственному интеллекту и машинному обучению можно создавать отличных ботов с разговорными навыками.

Надеемся, данная статья была вам полезна! Успехов в написании кода!

Перевод статьи «Building a Chatbot using Chatterbot in Python».

Понравилась статья? Поделить с друзьями:
  • Как написать умного персонажа если ты не умный
  • Как написать умляут на немецком на клавиатуре
  • Как написать умлаут на клавиатуре на телефоне
  • Как написать умлаут на клавиатуре компьютера
  • Как написать ультиматум