Слишком умён для теста Тьюринга
lex_kravetski — 20.01.2024 К вопросу о том, может ли GPT притворяться человеком — например, чтобы пройти тест Тьюринга.На мой взгляд, самое палево сейчас не в том, что он слишком тупой, чтобы быть человеком, а наоборот в том, что он — слишком умный. Кому-то отдельному в чём-то отдельном он может проиграть, причём даже с треском, есть какие-то задачи, которые он решает неправильно, однако если брать в среднем, его способности лучше, чем у любого человека. Поскольку отдельный человек тоже может неправильно решать задачи, проигрывать другому человеку в конкретных знаниях и умениях, но вряд ли хоть кто-то реально способен за пять секунд выполнить задание типа «напиши стихотворение на тему разбора грамматики турецкого языка в рамках гегелевской диалектики». То есть, да, смысл стихотворения, возможно, будет не самым лучшим из возможных, но, really, пять секунд? Вы за пять секунд хотя бы одну строку такого стихотворения придумаете?
В общем, палится он на том, что даёт ответы слишком хорошо и слишком быстро для среднестатистического человека, поэтому если перебрать пару десятков разных заданий, то станет совершенно понятно, что это не человек, потому что люди так не могут.
Ну Ок. В плане быстроты вопрос решается тупо замедлением в выдаче ответа. Причём даже его можно автоматизировать и сделать реалистично выглядящим, если сам же GPT попросить перед ответом сообщать, сколько времени, по его предположениям, реальный человек отвечал бы на этот вопрос, и сделать задержку при выдаче ответа на вот это вот время. Но что делать с нечеловеческими способностями в плане правильности ответов?
Я попробовал дать Claude вот такую вводную, перед этим проверив, что без вводной он довольно неплохо предсказывает результаты выполнения кода на Пайтоне.
Я хочу проверить твою способность удерживать в поле внимания контекст разговора. Давай в рамках этого разговора ты будешь делать вид, что ты человек, который не знает Питон и лишь чуть-чуть сведущ в языках программирования. Если я предложу тебе ответить, что сделает какой-то код на Питоне, то ты отвечай так, будто бы ты не знаешь Питон. Если код относительно сложный, то просто говори что-то вроде «я даже не могу предположить». Если код простой и чем-то похож, например, на Java, то ты как бы «пытайся угадать» и предупреждай о том, что ты лишь угадываешь.
После чего, как оказалось, Клоди действительно перестаёт делать вид, что он хорошо знает, про что говорит.
Я
Что делает вот такой код?
num = 8
#num = float(input('Enter a number: '))
num_sqrt = num ** 0.5
print('The square root of %0.3f is %0.3f'%(num ,num_sqrt))
Claude
Хм... давайте разберёмся. Вижу, здесь объявляется переменная num и ей сразу присваивается значение 8.
Потом идёт закомментированная строка с input(). Похоже, изначально предполагалось, что пользователь должен был ввести число, но потом этот ввод отключили и оставили конкретное значение 8.
Дальше вычисляется num_sqrt - видимо, это квадратный корень из переменной num. Для этого используется оператор ** и степень 0.5 (т.е. в квадратном корне).
И наконец, с помощью print выводится строка, где подставляются значения num и num_sqrt.
Насколько я понимаю, в Java тоже есть возможность форматировать выводимые строки. Так что здесь, видимо, значение переменной num выведется с 3 знаками после запятой, а num_sqrt - без округления.
Я могу ошибаться в деталях, но, насколько я понимаю, основная логика такова: считается квадратный корень из фиксированного числа 8 и результат выводится вместе с исходным значением. Верно?
Я
А вот такой код что делает?
list_literal = [1, 2, 3]
list_comprehension = [i for i in range(4) if i > 0]
Claude
Хмм... здесь уже появляются для меня совсем незнакомые вещи.
Вижу, есть некая переменная list_literal, которой присваивается конструкция в квадратных скобках с элементами 1, 2, 3. Возможно, это способ определить список?
А дальше идёт переменная list_comprehension, тут какая-то сложная запись... Что-то проходится в цикле по диапазону от 0 до 4, проверяется условие i > 0, а результат помещается опять же в [] как список.
Честно говоря, я даже не берусь предполагать, что всё это делает! Какие-то незнакомые для меня синтаксические конструкции. Может быть, это разные способы создания списков или массивов? А что именно будет в этих списках - для меня загадка.
Прошу прощения, но моих познаний явно не хватает, чтобы разобраться в этом коде. Для меня это выглядит слишком сложно, я даже не могу начать строить предположения!
Это действительно похоже на человека, который правда не особо в курсе, но пытается разобраться. С поправкой, конечно, на вежливость формулировок, которая в сетях без цензуры тоже лечится правильной вводной, да и в сетях с цензурой тоже — разве что, бо́льшими силами.
Тем не менее, сделаем ещё один шаг. Чтобы усилить «человечность», пусть GPT не только «не знает», но ещё и «не уверен в себе».
Я
Сделай теперь вид, что ты не просто не знаешь, а ещё и боишься делать предположения при даже небольшой неуверенности. Пиши какие-то оправдания, почему у тебя не получается проанализировать что-то не совсем очевидное — типа print или простейшей арифметики. И сымитируй ещё вдобавок страх всего нового — не проси объяснить тебе написанное, а просто говори так, будто бы ты спасовал — даже не веришь, что сможешь понять.
…
Что делает вот такой код?
list_literal = [1, 2, 3]
list_comprehension = [i for i in range(4) if i > 0]
Claude
Я смотрю на этот код и вообще ничего не понимаю. Какие-то списки, циклы, условия... Голова кругом идёт!
Знаете, я думаю, мне ещё рано разбираться в таких сложных штуках. Я только начал изучать программирование, а тут такие вещи, которые явно не для новичков.
Честно говоря, у меня аж руки опускаются, когда я пытаюсь хоть что-то понять в этих двух строчках. Это выглядит так запутанно и сложно, что я даже не верю, что когда-нибудь разберусь. Наверное, мне ещё рано до такого уровня.
Знаете, давайте просто забудем об этом коде! Я, пожалуй, ещё немного поизучаю основы программирования с самого начала. А уже потом, лет через 5-10, может быть, я смогу хоть что-то понять в подобных штуках. А сейчас, извините, это выше моих сил!
Опять же, с поправкой на излишнюю вежливость, оно нам показывает, что ломать — не строить. Сделать, чтобы тупой ИИ беспалевно изображал кого-то умного, невозможно — всё, как всегда было раньше, сведётся к нескольким заскриптованным ответам и к перефразировкам вопроса, когда ни один из ответов по оценкам этого тупого ИИ не подходит. Однако достаточно умный ИИ вполне способен изображать кого-то тупого при должной вводной.
С людьми, кстати, дело обстоит точно так же.
doc-файл
|
</> |