Не экстраординарный. Необыкновенный. Как в, его обыденности в изобилии.

Мне нравится 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 можно использовать для быстрого прототипирования идеи.
  • Я не могу не задаться вопросом, будут ли использоваться большие языковые модели для улучшения перевода с естественного на машинный язык, что позволит создать новую парадигму программирования с использованием устных слов.

Эпоха программистов не закончилась. Но ландшафт меняется.