Доверяя кодирование ИИ, профессионалы рискуют остаться без работы

Доверяя кодирование ИИ, профессионалы рискуют остаться без работы

Почему даже крутые машины иногда ошибаются?

image

Ученые из Университета Калифорнии в Сан-Диего изучили, насколько эффективно большие языковые модели (LLMs) отвечают на вопросы по Java на сайте Q&A StackOverflow. В исследовании было выявлено, что результаты ответов далеки от идеальных.

В предварительной версии статьи под названием " Исследование устойчивости и надежности кодогенерации большой языковой модели " аспиранты Ли Жонг и Цзилонг Ванг рассматривают 1,208 вопросов по кодированию, касающихся 24 популярных Java API. Затем оценили ответы, предоставленные четырьмя различные LLM с поддержкой кода на основе их средства проверки API под названием RobustAPI.

RobustAPI разработан для оценки надежности кода. Основное предположение заключается в том, что отклонение от правил API может привести к проблемам при запуске кода в производственной среде.

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

В качестве примера они указали на фрагмент кода, который должен был быть помещен в блок try-catch для обработки ошибок.

RandomAccessFile raf = new RandomAccessFile("/tmp/file.json", "r");
  byte[] buffer = new byte[1024 * 1024];
  int bytesRead = raf.read(buffer, 0, buffer.length);
  raf.close();
  

Исследователи из Калифорнийского университета в Сан-Диего протестировали модели GPT-3.5 и GPT-4 от OpenAI, а также две открытые модели - Llama 2 от Meta и Vicuna-1.5 от Large Model Systems Organization. При этом они использовали три разных теста для своего набора вопросов: zero-shot, в котором пример правильного использования API не был предоставлен во вводе; one-shot-irrelevant, в котором пример не относится к вопросу; и one-shot-relevant, в котором пример правильного использования API предоставляется в подсказке.

В целом модели продемонстрировали следующие показатели неправильного использования API для теста zero-shot: GPT-3.5 (49,83%); GPT-4 (62,09%); Llama 2 (0,66%); Vicuna-1.5 (16,97%).

"По результатам оценки, все протестированные модели страдают от проблем неправильного использования API, даже передовые коммерческие модели, как GPT-3.5 и GPT-4", отмечают Чжун и Ван. "В условиях zero-shot большинство ответов Llama вообще не включают код, поэтому у нее самый низкий показатель ошибок".

Наоборот, говорят они, у GPT-4 более высокий показатель неправильного использования API, чем у GPT-3.5, потому что, как утверждает OpenAI, она более способна реагировать на подсказки кодом. Проблема в том, что ответы GPT-4 необязательно верны.

Для теста one-shot-irrelevant показатели ошибок были такими: GPT-3.5 (62%); GPT-4 (64,34%); Llama 2 (49,17%); Vicuna-1.5 (48,51%).

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

А когда моделям давали правильный пример использования API в тесте one-shot-relevant, они показали следующие результаты: GPT-3.5 (31,13%); GPT-4 (49,17%); Llama 2 (47,02%); Vicuna-1.5 (27,32%). То есть объяснение требований вопроса приводит к меньшему количеству ошибок в использовании API.

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

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

Ваш провайдер знает о вас больше, чем ваша девушка?

Присоединяйтесь и узнайте, как это остановить!