Не экстраординарный. Необыкновенный. Как в, его обыденности в изобилии.
Мне нравится ChatGPT. Много. Это лучший цифровой помощник для письма, которым я когда-либо пользовался.
Если время использования ChatGPT меня чему-то и научило, так это тому, что ChatGPT не является блестящим писателем. Я не беспокоюсь о своей работе. И если мой опыт использования ChatGPT для написания программы на Python с нуля является показателем, то программистам тоже не о чем беспокоиться.
Но вы должны быть начеку.
Многообещающая неудача
Я некоторое время думал о создании терминального приложения для практики набора текста, поэтому решил попробовать ChatGPT в его создании.
Это была моя подсказка:
Программа ChatGPT удивительно близка к тому, что я хочу:
Впечатляет, как много ChatGPT получает здесь. Код работает без ошибок. Он получает правильный расчет точности и вычисляет необработанную скорость в словах в минуту. Для всех практических целей это приложение для функционального анализа типизации.
Но он не окрашивает пользовательский ввод, как я просил:
Опять же, код работает. Вот пример выполнения:
Это не совсем то, что я хочу, но это приближается. Я говорю ChatGPT, что программа работает не так, как ожидалось, и повторяю, что цвета должны применяться к тексту по мере того, как пользователь его набирает.
Дела начинают рушиться:
Выглядит разумно, но не работает:
Я потратил добрых полчаса, пытаясь заставить ChatGPT исправить его код, но все становилось все страннее и страннее. Я дал ему понять, что я чувствую, прежде чем закрыть чат:
Но на самом деле я был впечатлен. Как и в случае с генерацией текста, ChatGPT изо всех сил пытается создать хороший код в массовом порядке. Но он захватил достаточно того, о чем я просил, что вдохновил меня на новый план атаки:
Работайте с более мелкими фрагментами.
Продуктивный подход
До сих пор я взаимодействовал с ChatGPT как потребитель, не разбирающийся в программировании. Во второй попытке я принял более активное участие в решении проблемы и дал ChatGPT гораздо более конкретные инструкции.
Я разделил программу на несколько функций. Я уже знал, как связать их вместе, и мне было любопытно посмотреть, сможет ли ChatGPT заполнить пробелы.
Это меня удивило. Основываясь на моем предыдущем разговоре, я ожидал решения с использованием sys.stdin.read(1)
, но без использования tty.setraw()
. Это было бы неправильно, но согласуется с теми ошибками, которые я видел раньше.
Также стоит отметить, что реализация ChatGPT не будет работать на компьютерах с Windows. Я использую Mac, поэтому оставил код как есть и продолжил:
Довольно хорошо! Просто нужно немного цвета:
Затем я попросил ChatGPT написать функцию для расчета общей скорости набора текста. Вот что я получил:
При этом вычисляется необработанная скорость набора текста путем деления количества набранных слов на затраченное время. Проблема в том, что эта метрика игнорирует длину слов и такие символы, как пробелы и знаки препинания. Ни один из них не влияет на количество слов, но влияет на скорость набора текста. Я запросил общую скорость, при которой любая последовательность из пяти символов считается словом.
Это ошибка в коде ChatGPT, но ее легко исправить вручную:
def typing_speed(text, start_time, end_time): words = len(text) / 5 minutes = (end_time - start_time) / 60 return words / minutes
Я перешел к следующей функции, которую имел в виду:
Этот действительно выделяется для меня. Непрошенное добавление печати скорости печати сначала оттолкнуло меня. Но потом это натолкнуло меня на мысль. Я изменил свой дизайн:
У ChatGPT было большинство необходимых сейчас частей. Может ли это закончить программу для меня?
Функция accuracy()
работает, но ее можно упростить. Я могу сделать это вручную:
def accuracy(typed_list): correct = 0 for typed, expected in typed_list: if typed == expected: correct += 1 return correct / len(typed_list) * 100
Я также никогда не видел, чтобы ChatGPT использовал такие комментарии в качестве заполнителей. Это хороший способ сократить длинный блок кода, который ссылается на предыдущие взаимодействия в чате.
Я собрал все воедино и запустил:
Именно то, что я хотел. Весь процесс занял около 10 минут.
Мысли о ChatGPT
Возьми их или оставь.
- ChatGPT изо всех сил пытается последовательно генерировать длинные текстовые блоки. Это неудивительно, учитывая, что он оптимизирован для коротких взаимодействий в стиле чата.
- Я скептически отношусь к тому, что большие языковые модели когда-нибудь смогут автоматически генерировать большие и сложные программы. Однако вы можете управлять моделью, чтобы построить что-то относительно сложное.
- ChatGPT кодирует как опытный новичок. Он может помочь вам быть продуктивным, но ему нельзя доверять.
- Лучшие варианты использования моделей, подобных ChatGPT, — это рефакторинг, переформатирование и улучшение небольших фрагментов кода. Я думаю, что мой эксперимент также показывает, что ChatGPT можно использовать для быстрого прототипирования идеи.
- Я не могу не задаться вопросом, будут ли использоваться большие языковые модели для улучшения перевода с естественного на машинный язык, что позволит создать новую парадигму программирования с использованием устных слов.
Эпоха программистов не закончилась. Но ландшафт меняется.