Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

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

Я работаю с дата — SQL запросы, базы данных и всё такое. Но мне захотелось чего-то нового и я создал проект на стыке ИИ и образования

274 открытий3К показов
История одного пет-проекта: как я утомился от SQL и создал ИИ-сервис для обучения

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

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

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

Что получилось

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

В ответ AI, используя заранее описанный в скрипте промпт, формирует список уроков.

История одного пет-проекта: как я утомился от SQL и создал ИИ-сервис для обучения 1

Затем можно попасть в каждый отдельный урок и сгенерировать лекцию. Можно просто нажать кнопку, а можно написать дополнительные пожелания, которые в скрипте подтянутся к промпту.

История одного пет-проекта: как я утомился от SQL и создал ИИ-сервис для обучения 2

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

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

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

История одного пет-проекта: как я утомился от SQL и создал ИИ-сервис для обучения 3

Вобщем, содержание уроков получается адекватным. Особенно, если тема — гуманитарная.

Что под капотом?

По умолчанию я использовал open-source модель Qwen2.5-32b, которую спустя время сменил на Qwen3-32b. При этом пользователь может в личном кабинете подключить свой аккаунт от другой более продвинутой и быстрой модели для генерации более качественного контента. Например, GPT от OpenAI. Лично я тестировал разные варианты и все они +- одинаково справлялись с генерацией текстов. Но GPT от Open AI, конечно, справляются с задачей немного быстрее — примерно на 20-30.%

История одного пет-проекта: как я утомился от SQL и создал ИИ-сервис для обучения 4

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

Запросы к LLM идут с заранее прописанными промптами, в которые вставляется пользовательский ввод. Единственное, что из-за ограничений OpenAI для РФ пришлось хостить сервис в Digital Ocean. Забавно, что изначально он вообще был установлен просто дома на подоконнике на Raspberry Pi. Потом пару раз заглючил провайдер. Я посмотрел на это и решил, что потратить 1000р в месяц не жалко, если сервис будет работать стабильно. К тому же, не пришлось организовывать отдельный прокси, чтобы запросы в OpenAI отрабатывали корректно. Я, конечно, такой вариант тоже протестировал и в целом он оказался рабочим. Но иностранное облако оказалось более простым и изящным решением.

Сложности

Основная проблема — стриминг ответов на страницу из-за проблем с LLM. Когда стоит флаге stream=True, а запуск происходит через Nginx + Runserver, то всё работает нормально, ответ модели выводится на страничке. Но в случае uvicorn и gunicorn решение не работает. Весь ответ на каком-то этапе буферизируется и потом кучно попадает на фронтенд. То есть, у нас одни и и те же конфиг nginx, бекенд и JS на странице. Но без Runserver ничего не стримится. Моих знаний пока не достаточно, чтобы разобраться, в чём же именно причина.

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

Сам сервис написан на классическом варианте стека: Django + Jinja Templates. Нет никакого модного фронтенд-фреймворка, т.к. я вообще в них ничего не понимаю. Вся эта история задумывалась как учебный пет-проект, который неожиданно перерос в нечто большее.

Дальнейшие планы

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

История одного пет-проекта: как я утомился от SQL и создал ИИ-сервис для обучения 5

Двигаться в сторону RAG. Сейчас это реализовано, но полноценно я им ещё не пользовался. Если в личном кабинете добавить свою GPT- модель, то можно создавать курс на основе загруженных файлов. Под капотом используется OpenAI Assistants API.

История одного пет-проекта: как я утомился от SQL и создал ИИ-сервис для обучения 6

Сейчас есть редактор уроков, что позволяет полученный от ИИ контент самостоятельно отредактировать через WYSIWYG редактор. Но стоило бы ещё проработать создание авторских курсов, когда пользователь использует свои заметки и дорабатывает их с помощью нейросети. Затем, конечно же, финально правит полученный результат в редакторе, дополняя видео, картинками или файлами. Вуаля: курс можно опубликовать в библиотеку или поделиться с конкретными пользователями с помощью ссылки. Ну или выгрузить в PDF — эта функция доступна уже сейчас.

Если вам интересно, мой сервис уже можно протестировать . Для этого авторизуйтесь через google-почту и на open source-модели qwen 3 сгенерируйте парочку курсов на любую тему. Поделитесь в комментариях, как всё прошло и что получилось в итоге;

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

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