Что изменилось в практике использования ИИ-технологий в программировании с появлением ChatGPT? Обсудим, как влияет появление ChatGPT на работу джунов и стоит ли новичкам и стажёрам использовать нейросети в работе.
Например, студенты курса «Фронтенд-разработчик» уже успели опробовать ChatGPT в учёбе и задавали нам много вопросов о том, как применять нейросеть в написании кода. Поэтому в этой статье хочу поделиться своим взглядом на взаимодействие с ChatGPT.
Навигация по статье:
Для начала разберёмся, как она работает
Самая известная сейчас сеть — ChatGPT (Generative Pre-trained Transformer). Это генеративный мультимодальный трансформер, предварительно обученный на больших объёмах текста и изображений. В простейшем представлении работает так: на каждом шаге анализирует имеющийся набор токенов, отфильтровывает релевантные им данные и подбирает наиболее подходящий следующий токен, после чего шаг повторяется до определенной длины текста или выполнения какого-либо условия для остановки.
В сухом остатке у нас есть обширная база текстовой информации в виде последовательностей. Когда мы подаём что-то на вход, то сеть пытается подобрать подходящее продолжение нашему вводу. Причём база данных фиксированная, в режиме реального времени она не подключена к сети и не сможет забрать актуальную информацию с какого-то сайта (пока что), как и не сможет переобучиться сразу по переданному фидбеку.
С генерацией изображений всё происходит несколько иначе, но общая суть похожая. Если говорить простыми словами, то на входе нейронная сеть генерирует случайный шум и дальше пытается восстановить из шума наиболее похожие части уже известных изображений, подходящих под описание. Эти промежуточные результаты отсеиваются другой нейронной сетью-«классификатором», вся процедура проводится в несколько итераций, до получения ответа, похожего на запрашиваемый результат. При этом могут получаться весьма интересные миксы.
Сами по себе все эти техники не новые. Всё было придумано много лет назад, когда ещё не было достаточных вычислительных мощностей, нейросети не были обучены и их широкое применение не было коммерчески выгодным. Сейчас, когда появились вычислительные мощности, инженеры стряхнули пыль с разработок 2000-х годов. Поэтому разработка в этой области фактически только началась.
Огромные модели, такие как GPT, требуют значительных вычислительных ресурсов и большого объёма доступных и размеченных для обучения данных, чтобы получить коммерчески годные результаты. При этом, что интересно, самой дорогой частью является именно подготовка данных и обучение модели, нежели её последующее содержание и использование.
Использовать эти модели мы можем не только через чат, но и через API, что расширяет спектр их применения и возможности интеграции во многие сервисы, которые стали появляться как грибы после дождя. Но можно ли назвать то, что сейчас есть, интеллектом? Пока что нет, так как мы опираемся на достаточно понятную математическую базу и пользуемся методами статистики для классификации, предсказания или анализа входящей информации. Но вот куда более интересный вопрос — а где грань?
С каждым годом понимание слова «интеллект» раздвигается, и то, что казалось раньше сложным для машин, уже сейчас становится повседневным, а мы только в самом начале пути.
У ChatGPT — три версии
ChatGPT существует в нескольких версиях: 3, 3.5 и с платным доступом версия 4, а также при работе через API можно выбирать различные типы моделей. С каждой мажорной версией наше понимание этой нейросети меняется, а её возможности увеличиваются.
В чате сейчас больше всего используется версия GPT-3.5, доступная бесплатно. Она поражает воображение обывателя :) Неспециалисту сложно поставить нейросеть в тупик, найти уязвимости, из-за которых она начнёт совершать ошибки. А версия GPT-4 ещё и стала мультимодальной: работает не только с текстом, но и с альтернативными вариантами ввода вроде графики. Соответственно, база значительно расширилась.
Версии 3 и 4 — это системы с очень большой разницей в количестве параметров, на которых они обучены. GPT-4 — это то, что в скором будущем можно будет действительно применять на практике для получения коммерческого результата.
В конце 2023 года ожидается появление пятой версии, в ближайшие годы её дошлифуют, и технология расцветёт максимально возможными красками, но при этом, скорее всего, мы столкнемся с ограничениями работающих сейчас моделей и будем вынуждены изобретать что-то по-настоящему новое.
Где применяют ChatGPT
GPT внедряют в большое количество проектов. Чаще всего это, конечно, анализ данных, кластеризация, группировка, выявление закономерностей. То есть то, для чего искусственные нейронные сети использовались и раньше. В новых задачах генеративного плана пока что на практике GPT используется не так много, как хотелось бы, но есть замечательные примеры.
Первый и самый активно используемый — это AI помощник, встроенный в Notion, — он может как помочь улучшить уже написанный текст, так и сгенерировать план или даже целиком статью под ваш запрос. Главное — не нужно взаимодействовать с каким-то отдельным сервисом, все удобно интегрировано в процесс работы над контентом.
Сейчас такой подход с интеллектуальными помощниками, понимающими ваш запрос, — самый используемый вариант применения в большинстве проектов. Получается, что ChatGPT переводит запрос пользователя в понятный для системы вызов функции в определённом формате и с указанными пользователем параметрами, на этом чаще всего магия и заканчивается. При этом даже так удобство использования значительно улучшается. Вспомните сложные и непонятные для многих формулы и сводные таблицы в экселе — гораздо проще спросить у программы: «Покажи на основе последних квартальных отчетов, какой из клиентов самый прибыльный».
Ещё несколько примеров сервисов с подобным подходом:
arcwise.app/ai — помощник, работающий с Google Таблицами. Поможет в формировании данных и в последующем их анализе;
gamma.app — генератор презентаций, страниц и документов. Будем честными, все проекты, делающие сейчас что-то подобное, просто имеют несколько шаблонов, из которых подбирают нужные и помещают в них сгенерированный на основе нашего запроса контент. Большой вариативностью шаблоны не отличаются, поэтому выбираем тот, который больше соответствует нужному результату.
mokker.ai — сервис, который подкладывает фон под фотографию товара. Звучит просто, но некоторые варианты окружения вписываются очень неплохо. Такие фотографии можно использовать на лендинге или в рекламе;
bardeen.ai — сервис автоматизации с большим количеством интеграций. Может помочь с решением повседневных задач и повысить продуктивность. Но к использованию таких помощников ещё надо привыкнуть. Сначала непонятно, что вообще с ним делать, но если подразобраться, поэкспериментировать со своими обычными задачами, то можно будет удобно встроить его в свои процессы.
Идём далее. Например, работа журналистов, блогеров, контент-менеджеров. Нейросеть помогает в подготовке или доработке текстов. С графикой чуть сложнее, но умельцы находятся. Для генерации изображений используется stable diffusion.
Пока в сфере искусства нейросети задействуют в меньшей степени. Художники, дизайнеры тренируются делать достаточно сложные объёмные запросы, чтобы получить какую-то картину, нарисованную на обученных пресетах.
API можно прикрутить к проектам для анализа данных и кластеризации, то есть к таблицам и системам, где необходимо проанализировать статистику, и к коду — для проверки, анализа, рефакторинга, но это пока в зачаточном состоянии.
Одна из ключевых возможностей ChatGPT в его стандартной API — это возможность дообучить, дотренировать модель на каком-то конкретном пресете. Это требует немалых усилий, но результат того стоит. Например, чтобы сделать бота поддержки для банка или другого коммерческого продукта. Он неплохо будет отвечать на запросы пользователей.
Ещё одна возможность — натренировать систему так, чтобы из естественной речи получить набор токенов, которые система распознает и сможет воспринимать как действие. Таким образом объединяют ввод на естественном языке с исполнением обычного кода. Получается интерфейс, например, для сервиса по автоматизации голосовых команд.
Как программисты используют GPT
Для разработчиков среднего и высокого уровня нейросети становятся полноценными помощниками. Есть возможность прокачать и оптимизировать процессы, то есть сильно повысить свою продуктивность.
Например, у компании GitHub есть Copilot, у Amazon — CodeWhisperer. Это системы, которые поддерживают написание кода и облегчают работу программиста. С использованием этих систем современный разработчик может писать гораздо больше кода, его продуктивность повышается. Специалист уделяет больше внимания высокоуровневым задачам.
Джуны и ChatGPT
В учебных проектах, например на курсе по фронтенд-разработке, студенты порой используют ChatGPT для генерации кода — я вижу это, когда читаю код учащихся. Для этого они прописывают нейросети, что им нужен такой-то класс, с такими функциями. В результате нейросеть генерирует фрагмент кода. Были попытки дать промпт по инициализации проекта, например: «необходимо инициализировать проект такой-то». Но с инициализацией нейросеть справляется плохо и выдаёт много ошибок. А вот написанные ей простые функции, классы, какой-то базовый код уже можно использовать. Студенты активно пользуются результатами такой генерации, иногда с ошибками.
Я не советую использовать ChatGPT для генерации новичкам. Это плохая практика, потому что студенты должны писать код сами. Если они не научатся программировать, они не смогут понять, правильный ли код им выдаёт ChatGPT. И я бы на их месте всё же пользовался специализированными системами, которые обучены на коде: GitHub Copilot или Amazon CodeWhispers. В них качество генерации значительно выше.
Сам ChatGPT, конечно, тоже обучен на коде. Но этот код написан на разных языках и подан в разном объёме. Да и качество сгенерированного кода часто оставляет желать лучшего, если говорить о практических задачах. Студентам стоит подождать, когда технологии усовершенствуются и код, созданный нейросетью, станет качественным. Начинающие разработчики на данном этапе не смогут даже поставить задачу так, чтобы получить какой-то дельный результат.
Пока что всё-таки взаимодействие с ChatGPT требует специальных навыков для того, чтобы получить от него какой-то толк. Каждый день появляются статьи о различных кейсах применения ChatGPT. Например, один из авторов — человек, далёкий от программирования. Он описывал, как задавал вопросы ChatGPT и смог целиком сделать простенький проект по автоматизации. Правда, ему пришлось разбираться и всё равно делать проект маленькими кусочками, потому что большой проект целиком сделать невозможно. Ну и пока он делал проект из маленьких кусочков, сам почти научился программировать :) Поэтому пока ChatGPT не заменит даже джунов — до человеческого разума ей всё ещё далеко.
Самые полезные для новичка возможности ChatGPT — объяснить код, найти ошибку, преобразовать код. Например, очень хорошо работает преобразование из функционального в декларативный стиль, из декларативного в объектно-ориентированный. Такие вещи на небольших фрагментах ChatGPT умеет делать хорошо.
Посмотрим, как это работает, на примере. Мы можем передать в ChatGPT любой фрагмент кода и попросить его объяснить пошагово, что в нём вообще происходит.
![](https://habrastorage.org/getpro/habr/upload_files/f35/daa/bc8/f35daabc8257ec3606af4165f4efc36e.png)
Но это не всё, мы можем задавать свободные вопросы по коду, если что-то осталось непонятным.
![](https://habrastorage.org/getpro/habr/upload_files/617/2a3/337/6172a33372785c608f80be5e810ccf79.png)
Также мы можем переводить код между разными языками или разными стилями и парадигмами разработки. При этом, даже если вы немного ошибётесь в терминологии, ChatGPT, скорее всего, успешно вас поймёт.
![](https://habrastorage.org/getpro/habr/upload_files/b9e/908/a3f/b9e908a3fc19a714bbfa9fe100389f55.png)
Если вы хотите сделать более-менее большой или сложный фрагмент кода, то с первого же запроса не факт, что это получится. Но можно двигаться итеративно, постепенно развивая тот код, который генерирует вам ChatGPT с каждым ответом.
![](https://habrastorage.org/getpro/habr/upload_files/2df/257/78f/2df25778fe6a4ba6bb38ab4d10ad2288.png)
В последнем фрагменте обратите внимание на интересный момент: мы попросили сделать код с использованием интерфейса, и ChatGPT сам перевёл наш код в TypeScript, потому что в JS интерфейсы не поддерживаются. Если нужно было сохранить код в JS, потребовались бы дополнительные пояснения, но иногда проще перевести код уже в конце всего процесса.
Подведём итог
В настоящее время с помощью AI мы уже хорошо справляемся с такими задачами, как выявление аномалий, прогнозирование при неизменных условиях, классификация и кластеризация. Но нужно понимать, что мы только в самом начале пути в области генерации контента и даже нынешние результаты в скором времени нам покажутся примитивными.
Уже сейчас есть много способов облегчить себе жизнь и работу, используя AI-решения, практическое внедрение которых становится всё шире в самых разных сферах.
AI пока что не заменит человека, но снизит рутину, облегчит работу и повысит производительность. В ближайшем будущем мы пока не увидим так называемый общий искусственный интеллект, так как он куда шире, чем просто объединение всех данных в одну большую мультимодальную модель. Даже наш мозг представляет из себя по факту не одну большую нейронную сеть, а множество гигантских сетей, разделённых по отделам мозга и взаимодействующих между собой в более широком спектре, нежели 0 и 1 в цифровом представлении. Так что для полноценного искусственного интеллекта предстоит пройти большой путь и решить много проблем.
Новичкам в программировании не стоит увлекаться помощью нейросетей в написании кода. Зато ChatGPT может помочь найти ошибки и объяснить, в чём проблема кода.