ИИ вместо программиста

Почему я решил пойти против правил?

Прошлая моя статья про инструмент для "качков" произвела положительный отклик у читателей, что вдохновило меня на новую публикацию. Сегодня я расскажу о своём опыте создания сложного проекта телеграм-бота, не обладая специальными навыками программирования. Эта статья адресована именно новичкам, которые пока не знакомы с тонкостями кода, но мечтают создавать полноценные проекты. Скажу сразу: путь не сводится к простому запросу "напиши мне код, который будет…", как я думал в начале, а представляет собой серию нюансов и подводных камней.

База

Прежде чем переходить к написанию кода, важно разобраться с основами:

  • Репозиторий и структура проекта. Поймите, что такое репозиторий, как организована структура проекта, что такое библиотеки и для чего нужны такие файлы, как init. Как говорит молодежь, изучите базу! Хотя бы поверхностно.
  • Команды для нейросети. Знание базовых принципов работы с кодовой базой позволит вам правильно давать команды языковой модели.

Четкое понимание этих основ необходимо, ведь ваша задача это правильно формировать запросы для нейросети , от которой вы получите помощь в написании кода.

Перед тем как создавать код, продумайте функционал вашего проекта. Определите ключевые алгоритмы и опишите на словах (хотя бы для себя), каким должен быть конечный продукт. Это позволит сформировать чёткое представление о том, что и как должно работать, и избежать огрооомных проблем на старте.

Дорогой чат джипити, сделай так чтобы…

Первоначально я экспериментировал с обычным ChatGPT, копируя сгенерированный код в IDE для тестирования. Такой подход заключался в цикле: “копируй — тестируй — отправляй ошибки обратно — получай правки — копируй “. Это невероятно мучительное и долгое занятие, в котором ты теряешь свою человечность: машина думает за тебя, а твоя задача делать рутинные четко отлаженные действия. Не находите это парадоксальным?

Позже, в “классическом интернете”, я нашёл решение - IDE под названием Cursor, очень похожее на Visual Studio, но с интегрированным окном чата, где работает нейросеть. Здесь можно выбрать нужную модель, и, по моему опыту, claude 3.5 показала себя лучше всего. Главное преимущество Cursor заключается в том, что он предлагает правки только в конкретных участках кода, оставляя остальную часть неизменной. Однако есть два важных момента, о которых я узнал после десятков часов неудачных экспериментов:

  • Фокусировка на одной функции. Работайте над одной функцией за раз, указывая нейросети через специальный символ @ , над каким именно блоком проводится редактирование. Это помогает модели сконцентрироваться и выдавать более точные правки.
  • В настройках Курсора , где задаете общий промпт для всех запросов, обязательно надо добавить что-то подобное
    “If you do not change the code in any block, do not rewrite it. Instead, give out # existing code # “
  • Дело в том, что переписывая какую-то функцию, нейросеть очень часто ошибается, забывает какие-то строки, меняет их и так далее. Поэтому четко дайте ей знать, что вместо переписывания и отправки блока кода целиком, она должна предложить отредактированный код, заменив уже отлаженные блоки комментарием.

Создание собственной нейросети

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

Задача заключалась в создании простой нейросети классификации, которая независимо от вариаций ввода определяла бы стандартное название упражнения. Для этого пришлось собрать обучающее множество, где для каждого упражнения было множество вариантов написания. Я опросил друзей, тренеров и посетителей своей качалочки, иногда встречались даже фразы вроде "ну тут качаю руки в тренажере". Такая обширная вариация упражнений, включающая и упражнения для турников и домашних тренировок, мне удалось добиться стабильной работы модели. Не с первой попытки, конечно: процесс занял месяцы, потребовал сотен вариантов, десятков часов тестирования и постоянной игры с параметрами. Тут лайфхак, если вы ничего не понимаете, просто просите вашу языковую модель объяснить вам что творится в коде, который она выдала, и какой параметр для чего нужен. Ваша задача: на интуитивном уровне поиграться с каждым из них, чтобы распознавание было таким, как вы хотите.

Создание базы данных

Создавая базу данных, не пытайтесь сразу предусмотреть все возможные атрибуты. Лучше добавляйте поля под конкретные задачи и запросы. Это позволит избежать избыточности, и самое главное - ошибок в будущем! По опыту скажу, что SQL-запросы нейросети пишут очень и очень хорошо.

Очень важно: тестирование

Во время искусственных тестов невозможно определить абсолютно все варианты взаимодействия пользователя с программой. Поэтому тут очень важно самому быть юзером вашего продукта. А еще лучше, подключить своих друзей для пользования, как это сделал я. Все мое окружение, кто тренируется, пользуется PumpNote’ом. И каждая их тренировка, это тестирование моего продукта.

Заключение

Программирование сегодня - это прежде всего умение задавать правильные вопросы и находить ответы на них. Любите продукт, который создаёте, и становитесь его активным пользователем. Пусть ваш проект решает именно ваши задачи, а ИИ выступает в роли технического соавтора, а не волшебной палочки, делающая все за вас. Успехов!

4
Начать дискуссию