Как стать автором
Обновить

Я немного устал от SQL и решил попробовать себя в веб-разработке

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.5K

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

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

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

Что имеем на данный момент?

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

AI-режим (быстрый)

Идеально подходит, если вы хотите быстро запустить курс. Достаточно ввести название , ваш запрос или список тем — AI сам:

  • предложит структуру курса (модули и уроки)

  • создаст содержимое всех уроков

  • сгенерирует задания

 Creator-режим (на основе своих материалов)

Вы полностью контролируете структуру и материалы курса:

  • Добавляйте модули и уроки вручную

  • Загружайте свои тексты и заметки

  • Используйте AI для редактирования и дополнения

Отлично подходит для авторов и индивидуальных программ.

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

Что есть кроме лекций?

Я решил сделать несколько дополнительных "фишек"

1. AI-тьютор внутри уроков

В каждом уроке работает AI-помощник: задавайте вопросы, получайте пояснения, расширяйте темы. Это как личный репетитор — всегда рядом и готов объяснить.

2. Умные задания с проверкой

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

3. Аудиоверсия лекций

Не любите читать? Слушайте уроки в аудиоформате. Генерация голосом — идеальна для обучения в дороге, на прогулке или по пути на работу.

4. Личный прогресс и достижения

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

А что же там под капотом?

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

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

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

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

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

Внутри 3 приложения:

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

Courses - тут все, что касается AI курсов и курсов, которые стали публичными

CreatorCourses - редактор авторских программ, где юзер может сам набить список модулей и уроков, внести свои заметки и черновики, а AI это все прошерстит и трансформирует в итоговый нарядный AI курс

Внутри все построено на стандартных CBV типа ListView, CreateView и т.д. По моделям, это CustomUser, Course, Module, Lesson, Task. Отдельно есть модели Creator режима, аналогичные осноывным, просто в момент публикации Creator курса происходит клонирование всех данных в модели простых курсов.

Какие планы

  1. Хотелось бы прикрутить wysiwyg редактор, чтобы создавать более качественные уроки в Creator режиме

  2. Добавить всякие авторизации через Я, VK и другие почты, пока только через Gmail и штатную связку логин/пароль

  3. Подумать над UX и UI

  4. Восстановить стриминг ответов, чтобы текст от AI как бы печатался на странице, через Runserver + Nginx все ок, а как ставишь Uvicorn или Gunicorn, то поток на каком-то этапе буферизируется и не стримится на страницу. Пока в виде заглушки реализовал progress bar ожидания ответа.

Приглашаю всех дочитавших посетить мой сервис, написать слова поддержки, ну или накинуть г***а на вентилятор в комментариях :-)

https://aitutor.pnirtep.ru/

Теги:
Хабы:
+6
Комментарии4

Публикации

Работа

Data Scientist
70 вакансий

Ближайшие события