Я попросил нейросеть написать код за меня. Вот что из этого вышло
Привет! Я Михаил, ведущий инженер по разработке и приглашенный эксперт Пикабу. В этой статье будем писать pet-проект с помощью ИИ, чтобы понять, насколько он упрощает работу программисту и сможет ли человек без навыков создать собственный рабочий продукт.
Идея казалась простой, однако эксперимент быстро вышел из-под контроля. Забегая вперед: нейросеть регулярно ошибалась, часть кода приходилось переписывать вручную, а некоторые проблемы оказались сложнее, чем ожидалось.
Этап 0. Определяем, что будем делать
Для первого эксперимента хотелось выбрать проект, который был бы полезным и в то же время не требовал глубоких знаний программирования. Под эти критерии идеально подошел сайт со списком задач.
В конце у нас должно получиться следующее.
Приложение позволяет добавлять новые задачи.
Для каждой задачи можно назначить свой тег, например: «Учеба», «Работа» и прочее.
У каждой задачи есть статусы: «Не начата», «Делается», «Не закончена», «Закончена».
Сайт собирает и хранит статистику в базе данных. Программа умеет считать, сколько времени потрачено на каждую задачу и на каждый тег. В идеале: можно строить графики с разными срезами: за день, неделю, месяц, год.
Статистику можно выгружать в виде XML-файла.
В приложении есть аутентификация и авторизация по логину и паролю.
В качестве редактора кода — Visual Studio Code, язык — Python.
Этап 1. Определяемся со стеком
Представим, что знаний в программировании у нас нет, кроме базовых навыков в Python: условия, циклы, методы. Поэтому попросим нейросеть выбрать стек и архитектуру приложения. В качестве ИИ не будем брать специализированные инструменты вроде Codex или Copilot, а выберем то, про что знают все, — бесплатная версия ChatGPT.
Я написал простой запрос, ИИ предложил использовать следующее:
Python 3.12 + Django;
аутентификация через библиотеку SimpleJWT;
SQLite или PostgreSQL в качестве базы данных;
Chart.js для создания графиков и диаграмм.
В целом нормально, ИИ даже написал структуру для БД. Но для работы с графиками ChatGPT выдал что-то странное.
Еще нейросеть написала endpoints для большинства сущностей. На данном этапе это для нас бесполезно, так как мы еще не думали, какой API нам нужен, но пусть будет.
Это одна из проблем языковых моделей. Они выдают в ответ слишком много информации, большая часть из которой оказывается пустой. Конечно, если потратить несколько часов, ответ ИИ получиться превратить в подробное ТЗ с детальной спецификацией. Однако для этого нужно обладать опытом проектирования подобных приложений. Нейросеть в данном случае может лишь сэкономить время.
Этап 2. Пишем авторизацию
Дальше я решил сделать авторизацию. Для этого написал такой запрос.
Нейросеть предложила установить Django и создать проект.
Делаю все, как пишет ИИ, и получаю ошибку: «Имя "django-admin" не распознано как имя командлета». Оказывается, что django-admin нужно было добавить в системные переменные, хотя ИИ об этом ничего не написал.
По ходу работы подобных ошибок возникало много. Например, изначально ChatGPT выдал неправильную структуру папок, из-за чего пришлось переносить файлы из одного каталога в другой. Для подобных проблем я дополнительно открыл ИИ-режим в поисковике. Получилось неплохо: ChatGPT писал код, а с ошибками разбиралась другая модель.
Через 60–70 минут после начала работы получилось зайти на свой сайт. При заходе происходит перенаправление на форму авторизации. Также есть страница для регистрации пользователя, которая сохраняет данные в локальную базу данных. Учитывая, что навыков веб-разработки у меня почти нет, результат неплохой. В будущем можно поставить готовый HTML-шаблон, чтобы приложение выглядело красивее.
Этап 3. Добавляем личный кабинет
Продолжаем работу. Написал простой запрос.
ИИ выдал подробный ответ, даже указал, как сделать миграцию базы данных. Однако при заходе в личный кабинет получилось следующее.
Язык шаблонов Django показывался как обычный текст. Я и ChatGPT долго не могли понять, где ошибка, пока я не проверил TEMPLATES в settings․py. Проблема была в том, что во время экспериментов я изменял параметры и убрал значение «'APP_DIRS': True».
Когда я спрашивал нейросеть, что не так, про эту строку ИИ даже не вспомнил. Здесь возникает одна из ключевых проблем ИИ в программировании: они не видят весь контекст. Невозможно загрузить все файлы проекта в ChatGPT, особенно на реальных задачах.
Конечно, тот же Copilot в VS Code без проблем обнаруживает подобные опечатки. Но у подобных ИИ-агентов тоже есть ограничения — окно контекста. В реальных приложениях есть сотни тысяч строк legacy — это код, который остался в программе от прошлых разработчиков. Он до сих пор работает и приносит пользу, но его сложно поддерживать. Даже самая умная модель не сможет запомнить весь этот legacy, поэтому требуется разработчик вайбкодер (от англ. vibe coding — «кодирование по ощущению»), который будет управлять нейросетью.
Шаг 4. Добавляем остальную функциональность
Потратив еще несколько часов у меня получилось сделать что-то приличное. Сайт позволяет добавлять задачи, удалять их, нажимая по крестику, а еще отмечать как выполненные.
Страница регистрации и авторизации остались чистыми HTML-страницами, добавлять туда что-то красивое я не стал. Также отказался от идеи сделать подсчет затраченного времени на каждую задачу, так как придется создавать отдельную модель данных и переписывать кучу кода, в котором я уже начал путаться.
Для главной страницы личного кабинета скачал первый попавшийся шаблон с GitHub и сильно пожалел, что для разработки использую ChatGPT, а не ИИ-агента из Visual Studio Code. Проблемы здесь две:
ChatGPT изначально не создал конфигурационного JSON-файла, в котором бы хранились все пути к верстке;
загрузить весь проект в ChatGPT и попросить его исправить пути, я не могу, так как файлов слишком много.
Поэтому пришлось потратить время на ручное переписывание кода. Если захотите сделать подобный pet-проект, учитесь использовать ИИ-агентов, которые уже встроены в среду разработки, так как они могут подхватывать весь контекст приложения.
Шаг 5. Тестирование
Уже сейчас видно, что проект слабый, для портфолио его не возьмешь. Но хочется протестировать его до конца и узнать, насколько он устойчив к классическим атакам.
Например, на форме авторизации сайт вставляет ввод пользователя прямо в SQL-запрос как текст. Значит, здесь есть SQL-инъекция. Пробую использовать простейший payload в поле логин, нажимаю «Войти» — у меня получается авторизоваться под учетной записью администратора.
Далее обращаю внимание, что личный кабинет каждого пользователя открывается по адресу вроде «/user/id123/». Проверяю самый простой сценарий атаки. Авторизуюсь под обычной учетной записью, захожу в личный кабинет, подставляю ID другого аккаунта и получаю доступ к чужой информации.
На стороне сервера не было даже базовой проверки по авторизационным cookie. Вся защита основана только на том, что никто не догадается изменить число в адресе. Подобная уязвимость — базовый IDOR, про который знает любой новичок-разработчик.
Правильная реализация личного кабинета должна проверять права доступа к каждому объекту, даже к обычной картинке. Если что-то не принадлежит текущему пользователю, нужно возвращать ошибку доступа.
Подведем итог
Спустя 5–7 часов мы получили проект на уровне начинающего, который изучает веб-разработку где-то пару месяцев. Изначально приложение задумывалось как полноценный сервис для управления временем, но получился сырой и недоделанный продукт. Поэтому пришло время разобраться, что пошло не так.
На качество результата работы нейросети влияет подход к проектированию. Вайбкодинг — это разговор с новичком, который посмотрел уроки из серии «язык за час». Он хорошо знает синтаксис, но не понимает, как писать правильно и не знает всего контекста. Поэтому нужно учиться использовать ИИ и прописывать четкое ТЗ.
Чтобы не тратить кучу времени на составление документации, задачу также можно делегировать нейросети, указав, какие нужны API, методы и структуры данных. Ее же можно попросить описать use case по методологии Behaviour-Driven Development. В теории можно даже использовать несколько моделей и попросить их покритиковать полученное от другого ИИ техническое задание.
Качество работы любой модели зависит от навыков программиста. Разработчику все еще нужно понимать, что происходит, быть внимательным, а самое главное — понимать архитектуру. В нашем случае проблема была именно в этом: нет эксперта-человека, который понимает весь процесс и знает, куда смотреть в случае проблемы.
Надо учиться вайбкодить. Большинство людей пользуются нейросетями, как продолжением поисковика, однако здесь нужен системный подход. Без него человек быстро теряет контекст происходящего и начинает путаться в своем же коде.
Освоить ИИ для работы над проектами без навыков программирования можно на курсе Яндекс Практикума «Вайбкодинг». За два месяца обучения вы создадите несколько полноценных проектов: лендинг, CRM-система, сервис бронирования с код-ревью. Кроме того, научитесь генерировать технические спецификации, проектировать архитектуру и подключать базы данных.
Попробуйте бесплатную часть курса — познакомитесь с форматом обучения и поймете, хотите ли продолжать.
ООО «Яндекс», ИНН: 7736207543
Задача 3
Пояснения к задачам 1
На шарик слева действует давление Р1, а справа давление Р2 и действие пружины. Пружина создаёт усилие. Сечение S в данном случае это то, что закрывает шарик. Не диаметр шарика, а именно то, что он закрывает. P=F/S. Таким образом для пружины можно указать давление, при котором она сожмётся и откроет сечение вправо.
Если справа давление Р2=0, то клапан откроется на давлении пружины.
Соответственно клапан откроется на 10 и будет сливать поток пока давление слева на манометре 1 не упадёт до 10. Иногда говорят, что давление будет 10+. Хотя есть клапана которые открываются на большем давлении и закрываются на меньшем, но сейчас не о них.
Для клапана стоящего между 3 и 4 манометром: его справа поддавливает давление 10, и ему же помогает давление пружины. Поэтому клапан откроется на 20.
Для всех остальных клапанов аналогично. Клапан у насоса на 50 не откроется. Поэтому если на насосе написано 150 бар, это не значит, что после него будет давление 150. Давление это мера сопротивлению потоку.
Задачка по гидравлике
Преподаю прикладную гидравлику для механиков. Делюсь задачами из курса.
Какое давление показывают манометры при включении насоса? Насос постоянной производительности.
Задача 1.
Задача 2.
Россия временно отзывает своего посла из Армении
Россия вызвала своего посла в Армении Сергея Копыркина в Москву для консультаций на фоне растущего напряжения между двумя странами из-за европейского курса Еревана.
Как сообщили в МИД России, консультации пройдут «в связи с шагами армянского руководства по сближению с Евросоюзом, наносящими ущерб взаимодействию в рамках ЕАЭС».
Решение Москвы стало еще одним сигналом ухудшения отношений с Ереваном, который в последние месяцы активизировал движение в сторону Европейского союза, оставаясь при этом членом Евразийского экономического союза.
Накануне, по итогам саммита ЕАЭС в Астане, Россия, Беларусь, Казахстан и Кыргызстан призвали Армению как можно скорее провести референдум по вопросу выбора между ЕС и ЕАЭС.
В совместном заявлении стран союза говорится, что в декабре на заседании Высшего Евразийского экономического совета должен быть представлен доклад о возможных последствиях приостановки действия договора о ЕАЭС в отношении Армении.
Такой документ решили подготовить из-за рисков для экономической безопасности стран объединения, связанных с намерением Армении двигаться в сторону членства в ЕС.
Президент России Владимир Путин после саммита в Астане предупредил, что при выходе из ЕАЭС Армения потеряет доступ к зоне свободной торговли союза, столкнется с ростом железнодорожных тарифов и более жесткими требованиями к автоперевозчикам.
По его словам, только подорожание энергоносителей может обойтись Армении минимум в 14% ВВП.
При этом Путин заявил, что возможные решения Еревана по ЕАЭС не должны испортить гуманитарные и политические связи с Россией. По его словам, речь идет прежде всего об экономических последствиях.
Москва в последние месяцы все чаще ставит перед Арменией вопрос выбора между евразийской интеграцией и сближением с ЕС. Путин ранее говорил, что чем раньше Ереван определится, тем легче может пройти «мягкий и интеллигентный развод».
Пресс-секретарь российского президента Дмитрий Песков также заявлял, что по мере сближения с Евросоюзом Армения будет сталкиваться с проблемами внутри ЕАЭС, поскольку принимаемые Ереваном нормы могут начать противоречить принципам объединения.
Армянские власти, в свою очередь, утверждают, что вопрос выхода из ЕАЭС сейчас не стоит на повестке. Премьер-министр Никол Пашинян заявлял, что Ереван не намерен вредить Москве, но не будет ставить интересы России выше интересов Армении.
Глава МИД Армении Арарат Мирзоян также говорил, что Ереван не заинтересован в разрыве политических, экономических и других связей с Россией и будет работать над сохранением «естественных отношений» с Москвой.
Процесс европейской интеграции власти Армении запустили весной 2024 года. Формальным поводом стал законопроект, инициированный «Платформой демократических сил». После сбора более 50 тысяч подписей документ был направлен в парламент, где 26 марта прошел окончательное чтение. Позже его подписал президент Армении Ваагн Хачатурян.
Теперь спор вокруг европейского курса Армении выходит за рамки заявлений и фактически превращается в открытый политико-экономический конфликт между Москвой и Ереваном. Для Южного Кавказа это означает новый этап борьбы за направление Армении – между прежними обязательствами в евразийских структурах и стремлением нынешних властей приблизиться к Евросоюзу.


















