Пет-проект: Telegram-бот для изучения английского языка
Рассказываем о пет-проекте — боте в Telegram, который помогает изучать английский язык. Также рассказали, почему пет-проекты — это полезно.
3К открытий5К показов
Будь ты джуном или CTO, в рутине рабочих дней современного разработчика программного обеспечения, всегда наступает момент, когда душа просит завести пет-проект (en. Pet – «домашний питомец»).
Каждый может понимать пет-проект по своему, но большинство признают, что у такого проекта нет ни дедлайнов, ни технического задания, а есть только чистая идея, мотивация и любовь разработчика.
Я, как разработчик, и как CEO проекта CVCode, считаю, что показатель высокого уровня разработчика является именно наличие пет-проектов, а также опенсорсных решений, и это важный критерий для отбора в мою команду единомышленников.
Меня зовут Артем Аментес и я хочу поделиться своим опытом создания проекта для души.
Идея, которая меня захватила, родилась весьма просто: с детства, и уже более 20 лет изучаю английский язык постоянно, и уже достиг уровня fluent (свободно владеющий). Мир, новости, технологии настолько широко используют английский, что очевидно, школьной программы конечно не хватает. Совершенствоваться необходимо постоянно.
Мне вообще нравится английский в качестве языка науки – это позволяет мне достаточно широко охватывать мировые новости, тренды и факты. И знаю многих людей, кто хотел бы заняться изучением английского, чтобы чувствовать себя увереннее и свободнее, которые пытаются что-то для этого делать, но обычно откладывают до понедельника, а потом – следующего понедельника.
Итак, цель моего pet-проекта – со всеми вокруг поделиться возможностью внедрить английский в свою жизнь.
По опыту скажу, что есть 2 наиболее важных момента в изучении английского языка:
- Необходимо знать большое количество слов и их определений (definitions).
- Регулярно практиковаться в общении, чтобы получать точный ответ и комментарии на свои вопросы и рассуждения. Второе, пожалуй, является основным.
И, если с первой задачей мы можем легко справиться с помощью тетрадки, ручки и словаря, то общаться нам нужно с активным собеседником. Причем, необходимо чтобы собеседник мог поддерживать беседу нашего уровня владения языком.
Начать следовало с архитектуры моего питомца
- Главная проблема, которую решаем – это собеседник. Большая доля общения приходится на чаты в мессенджерах, а значит, мы можем создать чат-бота. Лучшим решением будет взять телеграмм. Это удобный мессенджер с открытым api и умопомрачительным числом ботов и заготовок.
- В плане мозгов у «собеседника» тоже не встало много вопросов. Смело берем ChatGPT модель, и на ее базе делаем товарища для общения.
- Понадобится словарь, где мы будем записывать слово, а затем его определение. Подойдет простое решение.
- Повторение – мать учения, пусть по запросу бот выбрасывает слово в случайном порядке. А задача пользователя будет дать ему определение по памяти.
Это проект для души, решил не сильно мудрить, быстро дойти до реализации и запустить бота в продакшн.
Шаг 1
Для написания самого бота лучшим решением было взять язык программирования Python, и библиотеку aiogram, а модель искусственного интеллекта в виде нейросети архитектуры GPT 3.5 взял с hugging face ресурса. Причем интеграция заняла совсем немного времени. У них реализован функционал получения API подключения по токену. Иными словами, даже модель загружать не требуется ?
Для формирования толковой базы слов и определений, я использовал обычную кнопку «Add word» и 2 шаговый запрос у пользователя: в первом поле нужно внести слово, затем его определения.
По нажатию кнопки «Get word» идет простая рандомная выгрузка случайного слова из базы. Такой механизм уже по теории вероятности позволит повторять знакомые слова, при этом, предсказать порядок их выдачи не получится. Только понимать и повторять, только хардкор!
База данных слов и определений это обычная таблица, в которой 3 столбца: id, word, definition. В таблицу просто вносятся текстовые данные и ничего сверхъестественного.
Вот такой изящный способ записывать свои слова в базу. Да, придется поработать, предзаписанных форм нет, для освоения языка полезнее пополнять библиотеку слов самостоятельно. Словари пользователей не пересекаются, так как каждое слово и определение привязано к id пользователя. Возможно, что чем больше пользователей и слов, тем база данных должна быть совершеннее, но это же пет – он пока еще маленький, потом вырастет и подумаем о новой базе для него. Может и стоит сделать общую глобальную базу данных, добавить элемент челленджа?
Шаг 2
В чем же уникальность и использование искусственного интеллекта? Была просто добавлена кнопка «Chat», где включается режим беседы с обученной нейросетью архитектуры GPT. Самое приятное в этой модели, что она отвечает на все, что ты ей напишешь. Если не верно использовать слово, то и ответ скорей всего будет отвлеченный от темы. Это помогает использовать слова и конструкции верно, искать варианты, пока не добьешься взаимопонимания. Побочка обучения на векторах с учетом большой памяти контекста. Или, все таки, не баг, а фича?)
Процесс разработки занял у меня 2 дня. Да, это конечно получилось очень шустро, но я доволен своей работой. Самое главное, что этот проект можно дорабатывать бесконечно – он всегда останется любимым питомцем.
Думаю, что скоро найдется время доработать некоторые логические моменты, вычистить код, и можно публиковать бота для всех тех, кто хочет учить английский, ну или как-то тихонечко поддерживать свой уровень. Добавлю разные украшения, красиво отредактированный текст для показа слов и определений в стиле Oxford Dictionary, другие визуальные решения, но это задачка на подумать. Проект получился рабочий и механика очень простая.
Почему для меня наличие пет-проекта – такая отдушина
Сейчас я, полностью погружен в работу над своим большим проектом cvcode.ru – это система развития интеллекта человека с помощью искусственного интеллекта.
Да, над проектом работаю не один, это 14 человек, каждый на своем участке, но каждый их кусочек деятельности нужно собрать в единую рабочую картину. CVCODE забирает гораздо больше творческих сил, чем можно подумать, а результат некоторых разработок виден только через 6-7 месяцев.
Поэтому такой быстрый проект-питомец, который буквально родился вчера в голове, а сегодня уже записывает слова, и пытается поддерживать беседу является чем-то, что поднимает настроение, помогает изучить новые приемы в программировании, но не требует от меня больших усилий и внимания.
Уверен, что такие небольшие домашние проекты спасают от стресса и выгорания. Когда все идет не так, запустил сервер, выгрузил своего питомца, подчистил ему код, и сразу на душе как-то радостнее.
Ознакомиться со страницей проекта на гитхабе можно здесь:
3К открытий5К показов