Собеседуем ChatGPT-4 на роль разработчика

от автора

Все чаще мы слышим, что нейронные сети на основе больших языковых моделей заменят разработчиков и будут писать код вместо них. Но чтобы сеть заменила разработчика, языковая модель должна сначала… пройти собеседование! Надо проверить, сможет ли?

Такая несерьезная мысль возникла у меня после прочтения нескольких постов о том, что ChatGPT успешно решал задачи типичные с собеседований. Однако известно, что ChatGPT имеет несколько особенностей:

  • ответ содержит элемент случайности. На один и тот же вопрос могут быть получены как правильные, так и неправильные ответы

  • ChatGPT обучен на информации из интернета, опубликованной до сентября 2021 года. Если условие задачи и ее решение стало доступно до этой даты, то задача, вероятно, упрощается

Мне стало любопытно, насколько результаты ChatGPT были именно «способностью решать алгоритмические задачи», а насколько — случайностью или «запоминанием решения».

План моего эксперимента (кратко)

Я решил отобрать несколько десятков задач с leetcode по двум независимым критериям: легкие/сложные и опубликованные до/после сентября 2021 года. Я случайно выбрал по 13 задач в каждой из категорий, всего получилось 52 задачи. Условие каждой задачи было дано на вход ChatGPT-4 с пояснениями, соответствующими ситуации «алгоритмическое собеседование». От сети я ожидал код на языке Python, который проходит автоматические тесты к задаче. Если код не проходил тесты, я давал одну единственную попытку для внесения исправлений в код.

Результаты

В моем эксперименте получился следующий ACeptance rate (то есть процент верных решений), с учетом одной дополнительной попытки:

Легкие

Сложные

До сентября 2021

50%

23%

После сентября 2021

36%

0%

За все время

42%

12%

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

Интерпретация результатов

Результаты можно было бы назвать ожидаемыми, если бы мы говорили о человеке: легкие задачи решать проще, чем сложные (ауф); а ранее виденные даются легче, чем новые. Интуитивно кажется, что это объяснение должно быть верным и для результатов работы языковой модели.

Полученный результат выглядит достаточно скромным для прохождения настоящего лайвкодинга. Представим, что на собеседовании в воображаемую компанию даются две легкие задачи, что может соответствовать джуниорским или стажерским вакансиям. Шанс ChatGPT-4 успешно пройти собеседование в таком случае порядка 18%. Если собеседование состоит из одной легкой и одной сложной задачи, то шансы падают до 5%.

С другой стороны этот результат кажется невероятно крутым для языковой модели общего назначения, которая никогда не обучалась специально писать код. Вероятно в очень скором будущем мы увидим различные специальный модели, которые существенно превосходят ChatGPT-4 в прохождении лайвкодинга.

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

Ссылки

Сводная таблица с результатами моего эксперимента

Текстовые результаты и более подробно про план эксперимента


ссылка на оригинал статьи https://habr.com/ru/articles/742086/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *