Проблемный помощник кодера: половина ответов ChatGPT содержит ошибки
Насколько можно доверять ответам ChatGPT? Причём не тем из них, которые даются на простые вопросы, а тем, что имеют отношение к разработке? Исследование Pew Research Center показало, что каждый десятый пользователь применяет ИИ-чат-бот для выполнения ежедневных рабочих задач. Что касается IT-отрасли, то в 2024 году около 2 млн программистов используют ChatGPT для работы на постоянной основе. Впрочем, результаты от Pew Research Center способны серьёзно подорвать доверие разработчиков к цифровому помощнику, ставшему для многих привычным.
Уверенность не равно точность
Эксперимент, упоминавшийся выше, проводился для оценки качества и достоверности ответов ChatGPT на вопросы. Их исследователи копировали с сайта Stack Overflow. Они применили комбинированный подход, который включал ручной, лингвистический анализ и пользовательские исследования. Результаты показали, что ChatGPT слишком часто предоставляет неверные ответы на вопросы о программировании: на 52% из 517 вопросов нейросетевая модель ответила неправильно.
«Мы обнаружили, что 52% ответов от ChatGPT содержат в себе ошибки, а 77% оказались более запутанными, чем ответы человека», — говорят исследователи. Несмотря на это, ChatGPT был настолько убедительным в своих ответах, что в 39% случаев программисты доверяли именно нейросети. Вежливость чат-бота и хорошо структурированный стиль ответа подкупали и опытных профессионалов, несмотря на явные ошибки и неточности.
ChatGPT запрограммирована на имитацию человеческого ответа. При этом нейросеть избегает давать неуверенные или осторожные ответы, что создаёт иллюзию компетентности. «В ходе нашего исследования мы заметили, что пользователи могут распознать ошибку в ответе ChatGPT только тогда, когда она очевидна. Однако когда ошибка не является легко проверяемой или требует использования внешней среды разработки или документации, люди часто не могут определить некорректность ответа», — комментируют ситуацию учёные из Purdue University в своём отчёте.
Что ещё?
Авторы исследования — Purdue University. Специалисты университета оценили и различия в лингвистическом стиле ответов ChatGPT и пользователей Stack Overflow. ИИ-ответы казались более вежливыми и ёмкими по сравнению с ответами обычных пользователей. В плане выражения эмоций ChatGPT предоставляет ответы в положительном или нейтральном ключе. Например, «Ваш код содержит небольшую ошибку. Попробуйте заменить x на y для корректного выполнения». Тогда как на Stack Overflow ответ будет примерно таким: «Ваш код неправильный, потому что вы сделали глупую ошибку. Замените x на y».
Учёные посоветовали применять автоматические алгоритмы по выявлению и удалению токсичных комментариев и советов для качества взаимодействия на Stack Overflow. По мнению специалистов, хорошие результаты дадут также инструкции пользователям по написанию конструктивных и вежливых ответов, уведомление администрации о комментариях, не соответствующих политике Stack Overflow, и поощрение членов сообщества, соблюдающих правила общения в комьюнити.
В целом, с вежливостью у ChatGPT всё хорошо, но вот количество ошибок, к сожалению, очень велико.
Почему она ошибается?
ChatGPT обучается на большом массиве текстовых данных из таких источников, как литературные и научные книги, учебники, веб-сайты, техническая документация, форумы вроде Stack Overflow, репозитории кода типа GitHub и др. Из этого массива данных нельзя исключить всю неправильную информацию, так как это чрезвычайно ресурсоёмкая и трудоёмкая задача. Кроме того, корректность предоставленных данных часто зависит от контекста, который неочевиден по умолчанию для языковой модели.
То же самое можно сказать и про автоматические алгоритмы фильтрации данных, которые не способны на 100% отличить правильную информацию от некорректной, особенно когда речь идёт о сложных или спорных темах. Редко ChatGPT может обратить внимание пользователя на противоречивость данных, чаще всего система предлагает либо наиболее вероятный, по её мнению, ответ на основе обучающих паттернов, либо предоставляет некий средневзвешенный вариант.
Природа ошибок ChatGPT при генерации кодов может быть разной, например синтаксической или логической. Часто нейросетевая модель выдаёт неполный или некорректный код, который на первый взгляд выглядит правильным.
Пример 1: написать функцию на JavaScript, которая возвращает массив уникальных значений из другого массива.
Сгенерированный код:
function getUnique(array) {
return [...new Set(array)];
}
Хотя этот код корректен для создания массива уникальных значений, ИИ-модель может генерировать неполные решения. Ситуация усугубляется тем, что ChatGPT не в состоянии проверить код, который сам и создаёт.
Пример 2: как реализовать алгоритм Дейкстры для нахождения кратчайшего пути в графе?
Сгенерированный код:
import heapq
def dijkstra(graph, start):
queue = []
heapq.heappush(queue, (0, start))
distances = {node: float('infinity') for node in graph}
distances[start] = 0
while queue:
current_distance, current_node = heapq.heappop(queue)
if current_distance > distances[current_node]:
continue
for neighbor, weight in graph[current_node].items():
distance = current_distance + weight
if distance < distances[neighbor]:
distances[neighbor] = distance
heapq.heappush(queue, (distance, neighbor))
return distances
В этом случаеChatGPT представит базовую реализацию, но не учтёт все нюансы (например, отрицательные веса рёбер) и оптимизации. В результате программисту придётся дорабатывать полученный от нейросети ответ или писать код самостоятельно.
Что дальше?
Статистика показывает, что трафик на Stack Overflow значительно снизился с 2022 года — в основном из-за роста популярности таких ИИ-инструментов, как GitHub Copilot и ChatGPT. Согласно анализу, с января 2022 г. трафик на сайт уменьшался в среднем на 6% каждый месяц, а в марте 2023 г. снижение составило уже гораздо более серьёзные 13,9%. Причиной падения стало использование разработчиками удобных встраиваемых в редакторы кода помощников вроде Copilot и Google Bard.
В ответ на эту тенденцию Stack Overflow пытался интегрировать собственные ИИ-решения и в августе прошлого года представил OverflowAI. Этот продукт включает в себя плагин для Visual Studio Code, улучшенный поиск и интеграцию со Slack. Таким образом, Stack Overflow продолжает работать над адаптацией к новым условиям и интеграцией ИИ для улучшения опыта своих пользователей.
Но в случае с ИИ-помощниками разработчику нужно придерживаться давно известного правила — «доверяй, но проверяй». А с какими проблемами ИИ-ассистентов кодера сталкивались вы?