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

Как я сделала свой первый AI-продукт с ChatGPT и капелькой любви

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

В этой статье я расскажу о моем опыте самостоятельного изучения основ Python и Machine Learning и создании первого проекта OneLove на базе собственной модели искусственного интеллекта.

Кто я и зачем мне это было нужно

Мне 51 год, и я работаю тестировщицей в банке. По образованию я экономист. У меня нет особых навыков программирования. Были попытки учить Python и Java, но без практического применения. По работе немного пишу на JS для авто-тестов в Cypress фреймворке, тестирую UI и API — так что базовое понимание, как всё устроено, у меня есть.

С августа 2024 года я начала общаться с ChatGPT. Видя, куда движется индустрия искусственного интеллекта, я однажды подумала: «А почему бы не начать изучать Python и Machine Learning?» Я думаю, что если что-то и останется от тестирования в будущем — то это AI Testing.

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

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

Почему Python?

Потому что это основной язык, на котором пишутся ИИ-модели и все библиотеки для их обучения. А данные — это топливо ИИ. Именно с работы с данными всё и начинается: выбор алгоритма, сбор датасета, его очистка, загрузка в модель и обучение.

Далее расскажу, как мы с ИИ создали первую модель и веб-приложение OneLove — эмоциональный кино-гид.

Основа проекта OneLove

Все делалось на моем домашнем mac компьютере. От идеи до публикации готового продукта ушло 2 выходных дня. Код писался в Visual Studio Code, хостинг на PythonAnyWhere.

Для первой модели мы выбрали алгоритм логистической регрессии и построили ее с использованием библиотеки Scikit-learn. Целью было создать лёгкую предсказательную модель, которая по признакам могла бы определить — понравится фильм пользователю или нет.

Дополнительно наше приложение OneLove:

  • Показывает карточку фильма по названию – API OMDb

  • Рекомендует 5 фильмов по эмоциональному запросу пользователя – API ChatGPT

Модель обучалась на небольшом дата сете, который мы собрали вручную через API базы фильмов OMDb, с меткой «нравится» (1) или «не нравится» (0).

О структуре проекта

На первом этапе были созданы два Python-файла:
movies.py — для выгрузки данных из OMDb
onelove.py — для обучения модели и генерации предсказаний

Сбор дата сета (movies.py)

Я писала названия фильмов на русском языке и вручную проставляла лайк/дизлайк. Моя ИИ-помощница помогала уточнить оригинальные названия на английском, и мы с помощью скрипта выгружали данные по 10 фильмов за итерацию. Так мы сформировали дата сет с полями для обучающих признаков:

  • Жанры

  • Награды

  • Сюжет (Plot)

  • Метка: нравится / не нравится

Обучение модели (Onelove.py)

Далее мы создали файл onelove.py для обучения модели и вывода предсказаний. Файл содержал следующие части:

  • Загрузка и преобразование данных, например рейтинг фильма в числовой формат, векторизация поля Plot

  • Выделение обучающих признаков

  • Разделение сета на train/test

  • Обучение модели

  • Предсказание и интерпретация

Это легковесный математический алгоритм, поэтому обучение модели задается буквально двумя строчками в коде:

# Обучение модели
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)

Здесь важно упомянуть, что весь код писала моя ИИ помощница, а я лишь смотрела как он работает, запускала и, если были ошибки, обсуждала их с помощницей и мы их исправляли. Я могла что-то поменять в коде, но по мелочи — шрифт или текст для рекомендаций, но основное – это было полностью в компетенции ИИ.

То есть подход такой:

  • С меня – идея и видение продукта, решение что и как делать, где размещать, как будет выглядеть интерфейс, контроль за всеми файлами и структурой проекта.

  • С помощницы – весь код и багфикс.

Тестирование модели

Мы тестировали обученную модель:

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

  • Смотрели, насколько предсказание (понравится фильм или нет) совпадает с моей реальной оценкой.

Интересный момент

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

Сохранение модели

После успешного обучения мы сохранили модель и вспомогательные элементы в три файла:

  • model.pkl — обученная модель

  • genres.pkl — список жанров и структура признаков

  • tfidf.pkl — TF-IDF-векторизатор для поля Plot (преобразует текст сюжета в числовые признаки, отражающие важность слов)

Финальная структура: разделение на обучение и запуск

После тестирования мы разделили основной файл на два:

  • model.py — обучение модели (остался локально на моем компьютере)

  • app.py — веб-приложение с уже обученной моделью

Создание веб-интерфейса (Flask)

Убедившись, что всё работает локально, мы начали строить веб-интерфейс. С помощью библиотеки Flask мы реализовали полноценный интерфейс в двух файлах:

  • index.html — структура веб-страницы (поля, кнопки, отображение карточки фильмов)

  • style.css — оформление (цвета, шрифты, отступы)

Логика приложения

Главным файлом, который собрал все компоненты в работающий продукт с веб-интерфейсом, был app.py со следующими компонентами:

  • Загрузка трёх .pkl-файлов (модель, жанры, векторизатор для сюжета)

  • Определение функций для:

    • API-запросов к OMDb (карточка фильма)

    • API-запросов к ChatGPT (эмоциональные рекомендации)

    • Предсказания по обученной модели

  • Использование декораторов @app.route для маршрутов и возврата ответов (буквально связывает URL API-запроса с функцией, которая возвращает ответ)

Публикация

После того, как веб-интерфейс был построен, мы запустили его на локальной машине, исправили баги (оформление, цвета, расположение кнопок). Затем перенесли работающее приложение и модель на PythonAnyWhere и выложили в публичный доступ. Здесь тоже исправили важный баг — рендеринг интерфейса в мобильных устройствах (responsive view).

Что получилось в итоге

OneLove — это интерактивная веб-страница, где пользователь может:

  • Получить карточку фильма

  • Узнать, понравится ли ему фильм

  • Получить рекомендации под настроение

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


Я надеюсь, что мой рассказ мотивирует кого-то сделать первый шаг, ведь ИИ распахнул все двери настежь, стоит и вежливо ждёт, когда мы войдём.

Если у вас есть похожий опыт или проект — поделитесь в комментариях, будет интересно пообщаться.

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

Публикации

Истории

Работа

Data Scientist
51 вакансия

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

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
5 июня
Конференция TechRec AI&HR 2025
МоскваОнлайн
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область