Создаю музыкальный сервис с ChatGPT: Миссия выполнима?
Вступление
Привет! Недавно я решил всерьез вкатываться в IT и вдохновился видео, где создают соцсеть с помощью ChatGPT. Решил провести похожий эксперимент и превратить свой курсовой проект в MVP музыкального сервиса.
То самое видео
Я не полный новичок в программировании, но и экспертом себя не назову. Моя оценка себя - даже не 3 из 10.
Получилось ли написать сервис с помощью ChatGPT? Спойлер: Нет. Но я сделал важные выводы и готов ими поделиться.
Шаг 1. Запрос в ChatGPT.
Первым делом я решил выбрать свой стек разработки. В голове у меня было, что я хочу использовать Java и React для проекта.
И в итоге мой запрос выглядел так:
Самый первый запрос
В ответ я получил инструкцию из нескольких пунктов, в котором ChatGPT по порядку рассказал что мне необходимо сделать.
Шаг 2. Прохожусь по пунктам.
Пункт 2. Исследование и планирование.
1.1 Функционал: Определи основные функции сервиса (например, стриминг музыки, создание плейлистов, рекомендации, социальные функции и т.д.).
Первым делом нужно было определиться с функционалом. Я хотел, чтобы мой сервис умел:
Регистрация/авторизация
Воспроизведение музыки
Добавление треков
Составление плейлистов
Поиск по сервису
Одинаковый уровень громкости
Дополнительные функции:
Визуальное сопровождение музыки
Показ текста песни
Социальные функции
Комментарии и оценки
Поддержка различных аудиоформатов
Настройка кастомной палитры сайта
Караоке
Рекомендации
Пункт 2. Исследование и планирование.
2.1 Техническое задание: Напиши подробное техническое задание, в котором опиши все функции и требования к проекту.
В этом пункте мне также помог ChatGPT, я подробно описал ему что я хочу получить на выходе.
Первая часть запроса
Вторая часть запроса
ChatGPT помог мне составить довольно неплохое ТЗ, которое я затем доработал и оформил.
2.2 Выбор технологий: Определи, какие технологии и библиотеки будешь использовать (например, Spring Boot для Java, Redux для управления состоянием в React и т.д.).
Я был вообще не знаком с технологиями и библиотеками, поэтому доверил выбор ChatGPT.
Запрос
Ответ:
Ответ ChatGPT
Я решил все это перенести в 1 место, создал проект в Miro и объединил все туда. Выглядело это так:
Доска в Miro на текущий момент
Пункт 3. Проектирование архитектуры.
3.1 Архитектура приложения: Определи архитектуру (например, микросервисная архитектура, монолит и т.д.).
3.2 База данных: Выбери подходящую СУБД (например, PostgreSQL, MongoDB) и спроектируй схему базы данных.
Я был знаком с монолитной архитектурой и работал с PostgreSQL, поэтому выбрал их.
Запрос
Если бы я не знал как работать с SQL, на этом этапе эксперимент мог закончиться.
Проектирование базы данных оказалось самым сложным этапом. ChatGPT путался в своих ответах, и мне пришлось долго править его сообщения. В конце концов, я утвердил финальную версию БД.
Схема БД в Miro
3.3 API: Спроектируй RESTful API или GraphQL для взаимодействия между фронтендом и бэкендом.
Для взаимодействия фронтенда и бэкенда я решил использовать RESTful API. И снова мне пришлось поправлять ChatGPT, чтобы получить корректные запросы.
Прошу конечную версию API-запросов
Все API-запросы я также задокументировал на доске в Miro.
Пункт 4. Разработка бэкенда.
4.1 Настройка окружения: Установи необходимые инструменты (JDK, Maven/Gradle, IDE).
Смешно, но на этом этапе возникли трудности с версией JDK, благо они решились 1 запросом.
4.2 Создание проекта: Создай новый проект на Java с использованием Spring Boot.
Я попросил описать структуру проекта, так как вообще не знал никаких паттернов.
Ответ ChatGPT:
Структура проекта
4.3 Реализация API: Реализуй основные эндпоинты для работы с пользователями, музыкой, плейлистами и т.д.
Я имел лишь базовые знания Java, поэтому просил ChatGPT написать код для каждой модели и эндпоинта. Постепенно я задавал вопросы о том, что происходит в коде, и понимал только часть.
Один из запросов
Таким способом я, используя ChatGPT написал всю логику эндпоинтов, без ошибок конечно не обошлось.
После того как я все написал, меня осенило, что нужно было все это тестировать :))
Решил запустить сервер. И, конечно же, не с первого раза все заработало. Ошибки, исправления, новые ошибки...
Как вдруг я увидел долгожданную надпись:
Ура, сервер запустился
Но... Даже если сервер запустился, это не значит что он не упадет спустя секунду xD. Ну конечно же он упал.
На этом этапе я решил завершить свой эксперимент, так как нашел ответ на свой вопрос.
Шаг 3. Какой же итог?
Может ли ChatGPT заменить программиста?
Мой эксперимент подтвердил: ChatGPT - не замена программисту, а мощный помощник. Он может сгенерировать код, предложить архитектуру и даже спроектировать базу данных. Но без понимания основ программирования и умения формулировать четкие запросы, добиться результата сложно.
Код проекта на GitHub: https://github.com/droptrigger/music-app
Мой Telegram-канал: t.me/CreateTrigger