Что такое вайб-кодинг и при чём тут виртуальные серверы
Представьте, что вы можете создавать приложения, почти не касаясь клавиатуры. Звучит как магия? Это вайб-кодинг — новый подход к разработке, где искусственный интеллект пишет код по вашим словам, а вы лишь направляете его работу.
Что такое вайб-кодинг?
Под термином вайб-кодинг (англ. vibe coding) подразумевается написание кода с помощью искусственного интеллекта. Используя вайб-кодинг, разработчик скорее не пишет код, а взаимодействует с ИИ, формулируя запросы, проверяя результат и внося коррективы.
Если говорить совсем просто, то всё начинается с того, что разработчик описывает словами, какое приложение он хочет создать. Он не продумывает заранее архитектуру или все детали проекта, а просто формулирует задачу в духе «сделай то-то для того-то, чтобы там было так-то». ИИ генерирует код проекта или его основу, предлагает готовые модули, зависимости, конфигурацию приложения. Человек запускает то, что предлагает ИИ, смотрит, что работает, а что — нет, и вносит исправления через подсказки или критику полученных результатов. Процесс проходит в виде итераций: разработчик говорит «добавь поиск», «сделай тёмную тему», «передвинь кнопку» или что-то в этом духе. ИИ же выдаёт готовые куски кода или даже целые файлы. Вместо того чтобы вручную проектировать таблицы или писать API, программист корректирует запросы к ИИ и проверяет результат. В общем, создаётся полное впечатление, что программа рождается сама по себе, а роль человека сводится к тому, чтобы держать в голове желаемую картину целиком, направляя ИИ в нужную сторону и корректируя направление разработки, когда сгенерированный код расходится с представлением программиста.
Вот представьте – вы решили таким образом создать чат, например. Вы не принимаетесь писать код веб-сервера или проектировать базу данных, вы просто пишете искусственному интеллекту: «сделай простой веб-чат с авторизацией и комнатами». ИИ генерирует проект: серверный код, фронтенд, подключение к базе. Вы копируете полученное к себе, запускаете и… что-то работает, а где-то ошибки. Вы сообщаете ИИ об этом и получаете новые куски кода. Потом ещё, и ещё, и ещё… Так, постепенно, итерация за итерацией, приложение оживает: начинает работать авторизация, появляются и сохраняются сообщения, создаётся комната, а интерфейс становится чуть симпатичнее. При этом вы не тратите время на ручное написание кода или на поиск библиотек, ведь ИИ сам подбирает подходящие решения и вставляет их в проект. В итоге (может быть) у вас возникает рабочий чат, при том что ваша основная работа заключалась не в программировании, а в том, чтобы объяснить словами, что вы хотите получить, проверяя за ИИ, что он сделал правильно, что – нет.
Как это работает?
В основе вайб-кодинга лежит использование LLM (Large Language Model) – большой языковой модели, то есть искусственного интеллекта, обученного на огромных массивах текста. Модель обучали на огромных текстах, среди которых книги, статьи, сайты. Именно поэтому она знает статистику языка и смысловые связи. Благодаря этому она умеет предсказывать следующее слово в тексте, основываясь на предыдущих. И не только. Обладая таким умением, модель не просто угадывает слово за словом, а строит целостные ответы, рассуждает и даже шутит.
Так же и с созданием кода. LLM умеет писать код по той же причине, по которой она пишет тексты: в процессе обучения ей «скармливают» не только книги и статьи, но и огромные массивы исходного кода и различной документации. Модель учится видеть шаблоны и закономерности в коде. Например, она запоминает, как пишется функция, цикл, класс, SQL-запрос. Ведь код – это тоже язык, только со своей грамматикой и правилами. Поэтому когда программист просит создать, к примеру, функцию сортировки, модель вспоминает все примеры сортировок, которые видела в обучении, и генерирует новый код, который «наверное» будет работать. Фактически LLM не знает, что такое программирование, она просто научилась видеть, какие куски кода обычно идут вместе, научилась учитывать комментарии и описание задачи и таким образом собирает из этого что-то новое. А самое интересное это то, что LLM может ещё и объяснить код словами, потому что связывает программирование с человеческим языком.
Чем вайб-кодинг отличается от обычного кодинга?
Когда программист пишет код, он понимает задачу, разбивает её на части, думает о логике, архитектуре, возможных ошибках. Разработчик старается писать код так, чтобы его можно было поддерживать, он проверяет, тестирует, отлаживает свой софт.
Когда LLM пишет код, она не понимает задачи в человеческом смысле, а лишь подбирает шаблоны, похожие на запрос программиста. Модель генерирует код, который должен быть правильным чисто статистически. LLM может работать сходу, что часто даёт рабочий результат, но порой допускает ошибки или даже придумывает несуществующие функции.
В общем, при использовании вайб-кодинга разработчик, вместо того, чтобы продумывать каждую строку кода, формулирует задачу сообщениями, а ИИ выдаёт готовые фрагменты кода или даже целые проекты. Задача программиста в таком процессе не столько писать, сколько направлять, то есть, проверять, что ИИ сгенерировал корректно, уточнять запросы, исправлять логику, если она не совпадает с ожиданиями, и следить, чтобы приложение реально работало.
Резюмируя отличия вайб-кодинга от классического программирования, можно сказать, что программист – это и архитектор, и инженер, который понимает задачу и знает, зачем и почему необходимо применять определённый функционал. В свою очередь, вайб-кодинг – это использование LLM, которая является суперумным ассистентом и быстро накидывает заготовки и идеи.
Что вайб-кодинг может дать?
Такой способ создания программ банально быстрее (по крайней мере должен быть) благодаря тому, что всю рутину по отладке кода и поиску ошибок берёт на себя LLM. При этом разработчик может экспериментировать с различными технологиями, даже не имея опыта их использования. ИИ в данном случае поможет подключить сервис к функционалу разрабатываемой программы. Плюс ко всему, вайб-кодинг позволяет начинающим специалистам реализовать свои идеи, поскольку нет необходимости в более детальном освоении технологии, достаточно описать простым языком то, что должно получиться на выходе.
Вместе с тем, вайб-кодинг, конечно, обладает некоторыми недостатками. К таковым можно отнести хотя бы то, что сгенерированный искусственным интеллектом код может содержать ошибки и даже уязвимости. Использование такого кода без предварительного тестирования и изучения может быть опасно. Другим недостатком вайб-кодинга является то, что частое его использование может вызвать у разработчика потерю навыков программирования. С этой точки зрения есть определённый смысл в ограничении практики прибегания к помощи искусственного интеллекта.
Какие большие языковые модели подойдут для вайб-кодинга?
Самыми известными моделями на сегодняшний день можно назвать, наверное, GPT-4 и GPT-5 от компании OpenAI. Они считаются самыми универсальными, поскольку они сильны в логике, умеют рассуждать, решать сложные задачи, писать код и хорошо понимают естественный язык. Их минус в том, что это закрытые модели. Их нельзя скачать и запустить у себя, доступ к ним можно получить только через API или ChatGPT.
У компании Google есть Gemini. Особенность данной модели в том, что она – мультимодальна. Gemini понимает не только текст, но и картинки, и может анализировать изображения вместе с текстом. В логике он чуть слабее GPT-4, но у Google есть мощная интеграция со своими сервисами, что делает Gemini удобным для поиска и анализа информации.
Ещё одна модель – Claude от компании Anthropic. Эта модель ближе всего к GPT, но её создатели делают упор на безопасность и «человечность» ответов. Claude очень хороша для работы с длинными документами, так как может держать в памяти огромный контекст и работать с сотнями страниц текста.
Не осталась в стороне и компания Meta (признана в России экстремистской организацией, её деятельность запрещена). Их модель называется LLaMA. Это первая серьёзная открытая модель от крупной компании. Она не такая мощная, как GPT-4, но её можно скачать и запускать на своих серверах. Именно на LLaMA сделали много производных моделей, и благодаря ей вокруг LLM возник целый open-source мир.
Mistral – это французский стартап, основанный в 2023 году, который сделал компактные и быстрые модели, такие как, Mistral 7B и Mixtral. Преимущество этих моделей в том, что их можно запускать даже на обычных серверах и получать результат, близкий к GPT-3.5 или даже лучше. В сообществе open-source Mistral сейчас – одна из самых перспективных моделей.
А при чём здесь виртуальный сервер?
Если необходимо сделать так, чтобы запросы и данные не уходили во внешние API, например, к OpenAI, то можно поднять модель на своём виртуальном сервере. Это можно считать способом держать всё под контролем. Кроме того, использование API крупных моделей может быть дорогим, особенно если много пользователей или большие объёмы запросов. Собственный виртуальный сервер с open-source моделью вроде LLaMA или Mistral может выйти дешевле, хотя и, безусловно, будет слабее по мощности.
В качестве эксперимента мы установили на виртуальной машине RUVDS модель CodeLlama-7B. CodeLlama – семейство больших языковых моделей, во многом ориентированных на работу с кодом. У модели 7B параметров, то есть примерно 7 миллиардов, и это – сравнительно лёгкая версия LLM.
На сайте RUVDS мы заказали под неё виртуальную машину с такими характеристиками: процессор – 16x3.4GHz, оперативная память – 16GB, NVMe-диск – 30GB, операционная система – Ubuntu 24.04.
Если кто-то захочет повторить наш эксперимент, то вот последовательность команд для установки CodeLlama-7B на Ubuntu:
sudo apt update
sudo apt install -y curl wget git build-essential python3 python3-pip python3-venv
curl -fsSL https://ollama.ai/install.sh | sh
ollama pull codellama:7b
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
sudo docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main
После инсталляции открываем браузер и переходим на веб-интерфейс модели по адресу https://192.168.0.1:8080, где вместо 192.168.0.1 нужно ввести IP-адрес виртуальной машины. Чтобы начать использовать веб-интерфейс, необходимо зарегистрировать учётную запись, для этого понадобится адрес электронной почты.
И вот, после того как мы подключились к нашему AI-ассистенту и поприветствовали его, мы попросили помочь в написании простейшего веб-приложения, которое выводит на страницу классическое Hello, World! При этом, чтобы облегчить задачу, мы заранее выбрали язык, на котором нужно создать приложение – Python, и фреймворк, при помощи которого мы хотим наше приложение запустить – Flask.
Спустя пять минут LLM выдала код, который мы не глядя скопировали, и веб-страница показала приветствие Hello, World!
После чего мы попросили модель изменить код таким образом, чтобы вместо приветствия Hello, World! на страницу была выведена кнопка с надписью Generate. Мы вставили новый код в скрипт на стенде и перезапустили фреймворк.
И да, CodeLlama-7B не только генерирует новый код, она ещё и объясняет, зачем и какие внесла изменения. Это помогает следить за логикой в действиях модели.
Нашей целью было создать не просто кнопку, а всё-таки наделить её определённым функционалом. Как вы догадались по надписи на кнопке, мы хотим, чтобы при нажатии на неё генерировалось некое число, о чём мы и сообщили нашей модели. Мы снова скопировали код на стенд и веб-страница начала генерировать числа от 1 до 10 при нажатии на кнопку.
После чего мы попросили LLM сделать так, чтобы генерируемое число было восьмизначным. Код снова сработал.
Вместо заключения
Вайб-кодинг можно применять с использованием того же ChatGPT, Claude или любой другой модели, к которой вы привыкли. Для этого не нужно уметь кодить, что отнюдь не делает написание кода бессмысленным и не превращает ИИ в лучшего программиста в мире. Пока что, возможно. И, вероятно, отрасль ИИ ещё не раз нас удивит.
💻 Виртуальные серверы по цене от 139 рублей в месяц заказывайте на сайте RUVDS. Первые 3 дня пользуйтесь VPS бесплатно!