Мой путь создания персонализированного чат-бота

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

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

Правильный инструмент для работы

Я написал своего бота на Java, так как у меня самый надежный опыт работы с ним. Я также планирую улучшить/пересмотреть его с помощью современного и более веселого Kotlin, так как это относительно легко сделать.

Если бы я был собой год назад, я бы начал изучать Python, а затем использовал его для своего чат-бота. В Python есть много фреймворков на основе ИИ, и он очень помогает, когда дело доходит до написания интеллектуального чат-бота. С Java их всего несколько.

Служба обмена сообщениями

Я использовал Telegram в качестве мессенджера для запуска своего чат-бота. Почему? Что ж, у него удобный API и, что более важно, простой процесс регистрации ботов:



В моем случае интеграция сводилась к регистрации моего бота в BotFather и реализации этого простого интерфейса из java-клиента Telegram:

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

Делаем бота умным

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

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

Основная идея заключается в категоризации входного предложения пользователя на основе предварительно обученной модели

Обучение моделей машинного обучения

Хорошая модель машинного обучения требует обширных обучающих данных и мощных вычислительных ресурсов. Тем не менее, я хочу, чтобы все было просто, поэтому я создам свою модель всего с несколькими образцами, предоставленными пользователем. Кстати, минимальное количество образцов для создания модели с OpenNLP — 4.

Использование моделей машинного обучения

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

Результатом категоризации является SortedMap с именами категорий и их оценками. Я использую его, чтобы определить лучший, как вы можете видеть ниже:

Развертывание

Я попробовал пару облачных провайдеров, но в итоге остановился на Hetzner Cloud и Dokku для контейнеризации и автоматизации развертывания.

Подробнее о том, как я это делал, в моей предыдущей статье:



Немного статистики

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

Вот самые популярные чат-боты, созданные с помощью моего @Mando-create-chatbot-constructor:

  1. @Maharashtra_Helper_bot — 399 уникальных пользователей
  2. @ProxenonBot — 110 уникальных пользователей
  3. @real_jobs_bot — 45 уникальных пользователей

Краткое содержание

В моей повседневной работе мне говорят, что нужно сделать, а иногда даже как это нужно сделать, но здесь у меня есть полная свобода и предписанное время на разработку этого для каждого проекта. По пути я также узнал много нового, включая NLP, Dokku и Hetzner Cloud.

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

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



Блин! А теперь похлопайте себя по плечу за блестящие идеи в вашей голове и до встречи в следующем раунде.