26 January 2025

AI играет в гольф: тройной богги

Давненько я не предавался своему любимому занятию -- старческому брюзжанию по поводу этого вашего т.н. "искусственного интеллекта". 

Раскапывал недавно старые видео игры по теме гольфа. В какой-то момент пришел в ChatGPT и говорю "а скажи-ка мне, милок, каким гольф играм Famitsu поставило самые высокие оценки?" (Famitsu, если что, супер авторитетное игровое издание из Японии). Получаю список аж на целых четыре игры с кучей ссылок на различные первоисточники этой информации, т.е. ответ это вроде как компиляция, которую выполнил для меня супер умный компьютер. 

Результат меня не устраивает категорически. Во-первых, в былые времена жанр был довольно популярным, поэтому в сети можно легко найти десятки игр, которые оценивали в Famitsu. И выжимка всего на четыре позиции это до смешного мало. Во-вторых, в списке фигурирует игра из серии Everybody's Golf, пятая ее часть, с оценкой 36/40. А я знаю, что существует как минимум одна игра из этой же серии с более высокой оценкой -- Everybody's Golf Portable 2. 
Пытаюсь намекнуть на это болванчику: мол скажи, а какая оценка у игры Everybody's Golf Portable 2. Он говорит -- да, да, 37/40, супер-пупер игра с очень высокой оценкой! 
Я говорю -- ну, так тебя ж просили самые лучшие игры (а ты ставишь игру 36/40, когда в серии есть игра 37/40). Бот намека не понимает.

Я тогда: ок, дай мне топ 10 игр отсортированных по рейтингу. 

Бот в ответ полностью теряет контекст и выводит просто лучшие игры от Famitsu напрочь проигнорировав тот факт, что мы все время говорили исключительно о гольф играх!
Я прям таки задыхаюсь от возмущения, дословно: WTF!
Справедливости ради, бот понимает, где он лажанул и на запрос "топ 10" выдает все тот же старый список аж на 4 игры и плюс Everybody's Golf Portable 2. 

Я говорю: блин, оцененных игр десятки, а ты мне даешь только 5!
Бот: повторяет старый список. 
Я говорю -- 10 штук мне дай! В ответ получают тот же список, только с огромными картинками на весь экран. 

Я понимаю, что лучшего результата добиться невозможно, начинаю боту помогать.
Говорю: вон, ты же видишь, что Everybody's Golf это целая серия игр, возьми и добавь их в список. 
Со второй попытки бот понимает мой намек, добавляет игры серии и... выдает несортированный список, причем в начале списка пишет, что это "properly ordered list". 

Я пишу: але! найди у себя в списке ошибку! 
Бот находит и исправляет... ровно одну ошибку. Список по прежнему отсортирован неправильно. 

Ладно, с сортировкой не заладилось, попробуем еще добавить игр в наш скудный список. Командую: а сделай-ка мне список из всех игр серии Everybody's Golf и Mario Golf.
ChatGPT выводит два разных списка: пять игр по первому пункту и 10 по второму. Наверное, тут можно было бы догадаться сразу их объединить и отсортировать, но что поделать, пишу явную команду. Бот послушно объединяет списки, но почему-то из списков на 5 и 10 пунктов получается список... на 14 позиций! Просто одна игра потерялась где-то по дороге. Я уже даже не обращают внимание на такие "мелочи". 

В глаза бросается неправильный рейтинг игры Everybody's Golf 4. Бот пишет 34/40, настоящий рейтинг -- 36/40. Я четыре раза настойчиво намекаю боту, что он не прав. В конце-концов бот сдается, включает генератор случайных чисел и опускает рейтинг до 33/40. Просто класс!

Дальше я пять раз безуспешно пытаюсь выбить правильный рейтинг игры у бота, требуя от него указать источник информации, который он использует. Бот виляет и источник я так и не узнал, а рейтинг по ходу нашего диалога опускался до 31/40 просто потому, что я высказал такое предположение. В итоге отправляю бота взять рейтинг в Википедии и игра наконец-то получает правильный рейтинг 36/40. 


***

В общем я потратил 20+ запросов на то, чтобы получить список с рейтингом для двух серий игр. При этом часть игр потерялась по пути, рейтинги играм рисовались от фонаря и бот был даже не в состоянии корректно отсортировать список на десять позиций из собственного ответа. 

Окей, а что если мы попробуем решить более амбициозную задачу и все-таки получить рейтинг для максимально возможного количества игр? В Википедии есть отдельная страница со списком игр в жанре гольф. Прошу бота использовать ее для того, чтобы вывести топ игр с лучшим рейтингом на "метакритике". Бот идет в отказ и предлагает мне самому проделать эту весьма вдохновляющую работу.
В итоге приходим к тому, что бот напишет для меня программу, которая автоматически соберет нужные данные. Получаю на руки примитивную программу на Python, буквально на 40 строчек. Запускаю. Результата нет. Список игр программа получает, но вот корректно извлечь рейтинг для каждой у нее не выходит. Жалуюсь боту. Получаю еще одну, разумеется, не работающую версию. Снова жалуюсь. Бот заявляет что "конечно же, на этом стеке решить задачу невозможно и нам нужно попробовать что-то другое, например, Selenium". Мне охватывает дежавю, так как ровно так же складывалось мое общение с ботом год назад, когда я просил его написать программу захвата изображения в окне под Windows. Каждый раз я получал версию с глюками и вместо локализации проблемы бот начинал скакать по различным способам: от классических API к COM, потом от COM к GDI+ и так далее. 

Я понял, что нормального результата я не добьюсь и прекратил попытки. 


***

И вишенка на торте. Пока эта запись отстаивалась в черновиках, получил крайне занятный кейс при попытке использования ChatGPT на работе. Мы переводим сборку нашего проекта с одной билд системы на другую, с которой у меня околонулевой опыт. Соответственно, был крайне велик соблазн периодически использовать AI в качестве помощника в области, в которой у меня весьма неуверенные знания. 

Эксперимент закончился полным фиаско, т.к. бот до конца не понимает как работает самая используемая функция в cmake -- функция set(), которая выставляет значение переменной (фактически аналог оператора присваивания практически в любом языке программирования). Помощник абсолютно убежден, что при вызове без аргументов, эта команда присваивает переменной значение пустой строки, что, справедливости ради, звучит вполне логично с точки зрения человека, который 20+ лет профессионально занимается программированием. Однако гении, придумавшие cmake, решили, что set() без аргументов фактически уничтожает переменную, т.е. дает ровно такой же эффект, как вызов функции unset(). 

Я, в конце-концов, заглянул в официальную документацию. А вот бот, до сих пор, строит свои подсказки в области cmake на основе галлюцинации и, уверен, дарит много "полезных" советов в этой области другим собирателям плодов прогресса.   
Кстати, отдельно порадовала консультация бота по вопросу макросов. Я спросил, если ли в cmake возможности, похожие на препроцессор Си и получил отрицательный ответ. Ну как бе... 


***

А теперь давайте подведем некие итоги моих мучений. 

Итак, ChatGPT совершенно точно НЕ работает как продвинутый поисковик нового поколения с возможностью проводить агрегацию информации из нескольких источников, т.е. обеспечивать уровень хотя бы самой примитивной аналитики. 

Очень часто ChatGPT не в состоянии без ошибок написать даже самое примитивное приложение (или функцию) на 30-40 строчек с совершенно тривиальной бизнес-логикой. 

К сожалению, ChatGPT совершает грубейшие ошибки даже на "тактическом" уровне.
Он теряет совершенно очевидный контекст. Он не может без ошибок и потери данных осуществлять самые примитивные локальные действия, типа объединения двух списков на 10 и 5 позиций из своего же предыдущего ответа. Он не может полученный список без ошибок отсортировать. Он постоянно использует некорректные или непроверенные данные; данные, полученные путем галлюцинаций, или оригинальные данные, которые он сам же специально трансформирует случайным образом. И все это сопровождается поведением, когда любой наводящий вопрос в диалоге может легко подтолкнуть AI к некорректным правкам собственных же ответов. 

И что же получается? Мы прошли путь длиной в два года, от детских восторгов в конце 22-го года ("ой! он понял мой вопрос и что-то на него ответил!") до текущего момента, когда все те болячки, которые бесили раньше и трактовались как небольшие, легко устранимые, недостатки ранних версий, остались в совершенно неизменном виде. Нулевой прогресс.
Особенно разочаровывает тот самый "тактический" уровень, когда боту нужно решать абсолютно примитивные задачи, вроде сортировки, с которыми классические алгоритмы успешно справляются уже 50+ лет. 

И все это происходит на фоне невероятной волны хайпа и каких-то совершенно безумных инвестиций в область, где по итогу даже лучшие умы человечества не в состоянии добиться хоть какого-то прогресса.  

Мне кажется, что генеративные алгоритмы это тупик. В том смысле, что вывести их работу на качественно новый уровень вряд ли получится.
Ну и к "интеллекту" они имеют такое же отношение, как солнечный зайчик к солнцу.


Комментировать запись можно в телеграмм канале этого блога: https://t.me/cdriper_blog


No comments:

Post a Comment