Мой новый младший разработчик отстой
12 мая 2023 г.Этот разработчик — ChatGPT, и у меня к нему отношения любви и ненависти.
В настоящее время существует так много статей об искусственном интеллекте, что я постараюсь сделать эту краткую.
TL;DR:
Использование ChatGPT для написания кода похоже на работу младшего разработчика. Они могут получить код на 80% там, но вам нужно будет просмотреть практически каждую строку.
Сценарий
Должен признать, что существует множество способов использования ChatGPT для написания кода. Возможно, у одних она лучше, у других хуже.
Например, я слышал, что многие люди используют его в качестве поисковой системы. Я лично нахожу это немного сомнительным. Не так сложно найти документацию или даже ответы через поиск. Я использую Kagi, что помогает избавиться от лишнего.
Наоборот, используя ChatGPT, как вы должны узнать, верен ли ответ?
С другой стороны, есть много людей, использующих его как прославленное автозаполнение. Что-то вроде Github Copilot. Я вижу, что это полезно.
Я выбрал следующий сценарий:
Преобразование моего кода из chakra-ui в хвостовой ветер.
Почему?
* Существует множество ресурсов по обеим технологиям, особенно по Tailwind (и, конечно же, по HTML). У него должно быть достаточно данных для работы.
* Очень возможно создать программу для этого. Хотя может быть много пограничных случаев, сама функциональность проста. chakra-ui вдохновлен попутным ветром, поэтому он наследует множество вещей, которые можно легко перенести.
* Это то, что мне нужно сделать. Так что это реальный вариант использования, с которым может столкнуться кто-то другой.
Оперативное проектирование — рутинная работа
Глядя на поле, казалось, что хорошие подсказки — это разница между получением хороших или посредственных результатов. Я не лучший в этом деле, но я провел небольшое исследование и старался изо всех сил.
Я позаботился о том, чтобы использовать несколько подсказок, чтобы привести его в хорошее состояние. Вставка моего кода только тогда, когда кажется, что он знает, что должен преобразовать только мой код.
Честно говоря, эту часть можно было бы улучшить. Между пользовательским интерфейсом и взаимодействием это довольно муторно:
* Для достижения желаемого состояния может потребоваться некоторое время
Между тем, когда я думаю о том, что написать, а затем жду, пока он ответит и закончит писать, эта работа становится довольно раздражающей.
* Это противоречиво
То, что вы не всегда можете повторно использовать одни и те же подсказки, не помогает. В ChatGPT есть некоторая случайность, поэтому мне приходилось каждый раз настраивать подсказку. Копирование и вставка подсказки, которая работала ранее, не помогла.
* Выйти из нужного состояния очень просто
Описанное выше подходит, если это разовая акция. Но я обнаружил, что ИИ очень легко все забыть после первого преобразования кода. Я считаю, что самый повторный успех, который у меня был, был 3 раза. Кроме того, он вернул совершенно не связанные вещи, такие как объяснение того, что делает мой код.
* Токен — довольно ограничивающий фактор
Из-за ограниченного количества токенов количество кода, которое он может создать, ограничено. Вы можете проверить токенизатор здесь, чтобы узнать, как он вычисляет токены. Это не очень удобно для кода. Ниже приведен пример одного из его выходов. Каждый отдельный цвет представляет собой токен.
В связи с этим мне пришлось разделить конверсию на несколько этапов. В противном случае генерация остановится посередине. Сказать, чтобы он продолжал, в большинстве случаев не работает. В сочетании с перечисленными выше пунктами это быстро становится рутиной.
В целом я чувствую, что не хочу писать по-английски. Если мне уже нужно что-то написать, я бы предпочел сразу написать работающий код.
Я вижу, что быстрое проектирование станет ключевым навыком, которым нужно обладать в будущем. Точно так же знание того, как искать, является ключевым навыком в современном мире.
Выход не так уж и плох
Несмотря на всю проделанную работу, ChatGPT выдал впечатляющий код. Вот сравнение между оригиналом и результатом:
Как видите, со своей задачей он справился неплохо.
Хорошее
- Структура перенесена очень хорошо
Если не считать деталей, структура HTML очень похожа на оригинал. Интервалы отключены, но общий макет остается.
* Текстовое содержимое не меняется
Сам контент был обработан хорошо. Несмотря на то, что мне пришлось перепроверить их все, ничего не изменилось. Единственным исключением являются производные от JS.
Плохое
- У него были случайные классы
Есть множество классов, которые ничего не делают. Некоторые были изменены, а некоторые другие были недействительными классами попутного ветра.
* Есть много мелких различий
Интерфейс выглядел так, как будто библиотеку только что обновили, и кто-то забыл перенести код. В данном случае это произошло потому, что ChatGPT случайным образом изменил значения классов. Например, padding
от 3 до 4 или изменение font-weight
с полужирного на обычный. Все детали были неверны.
* В половине случаев это не работает
Скриншоты выше были теми, которые я могу напрямую сравнить. На самом деле результаты были либо неполными, либо настолько неправильными, что мне пришлось внести множество изменений, чтобы заставить их работать. И из-за этого я не могу сравнивать его рядом. Мне просто не с чем сравнивать, так как код не работает.
Это похоже на проверку PR вместо написания кода
Хорошо то, что мне есть над чем работать. К счастью, сама работа очень проста. Легко заметить ошибки. Сопоставление между классами из чакра-уи и попутного ветра почти один к одному. Это утомительно только потому, что синтаксис другой.
Но этот подход больше похож на рассмотрение PR. Мне пришлось просмотреть весь код, чтобы убедиться, что все сделано правильно.
На первый взгляд все в порядке. Но есть много ошибок, если вы поработаете с ним и внимательно посмотрите. Это приносит ложное чувство безопасности, которое меня немного расстроило, когда я узнал обо всех недостатках.
Большая его часть — это код, интерполированный из других кодовых баз. Выглядит не ужасно, но это не то, что я хотел.
Есть даже некоторые тревожные изменения, такие как изменение заголовка с h2 на h1. Я могу только предположить, что это произошло из-за содержания.
Казалось, что младший разработчик что-то сварганил и не проверил свой код. И теперь я должен просмотреть и исправить это, не имея возможности попросить их исправить это самостоятельно.
И это ужасно. У меня уже есть возможность просматривать PR на работе. Теперь я должен делать это и для своих собственных проектов? Нет, спасибо!
Обнадеживающее будущее
Хотя я не думаю, что это близко, я думаю, что ИИ когда-нибудь будет полезен для разработки в будущем. Является ли ответ LLM, кто знает?
Лимиты токенов постоянно увеличиваются
Я достаточно долго не мог закончить эту статью. За это время было много объявлений об увеличении лимита токенов. Хотя я не уверен, является ли он общедоступным, платным или каким-либо другим, это приятно видеть.
Подсказки UX со временем должны стать проще
С плагинами ChatGPT и улучшенной интеграцией такие проблемы, как запоминание состояния & консистенция должна быть улучшена. Надеюсь, это уменьшит усилия, необходимые для получения полезной информации от ChatGPT.
Тем временем я выполнил вторую половину миграции вручную. Было ли это быстрее? Ну, кто знает. Ощущение было примерно таким же. Но писать вручную было намного удобнее.
Оригинал