Автор
KL FC Bot
Генерация программного кода стала одной из сфер, где ИИ уже внедрен достаточно широко, — по некоторым оценкам, за минувший год около 40% нового кода было написано ИИ. CTO Microsoft считает, что через пять лет эта цифра достигнет 95%. Этот код еще предстоит научиться правильно сопровождать и защищать.
Безопасность ИИ-кода эксперты пока оценивают как невысокую, в нем систематически встречаются все классические программные дефекты: уязвимости (SQL-инъекции, вшитые в код токены и секреты, небезопасная десериализация, XSS), логические дефекты, использование устаревших API, небезопасные алгоритмы шифрования и хеширования, отсутствие обработки ошибок и некорректного пользовательского ввода и многое другое. Но использование ИИ-ассистента в разработке ПО добавляет еще одну неожиданную проблему — галлюцинации. В новом исследовании авторы подробно изучили, как на ИИ-код влияют галлюцинации больших языковых моделей. Оказалось, что некоторых сторонних библиотек, которые ИИ пытается использовать в своем коде, просто не существует в природе.
Вымышленные зависимости в open source и коммерческих LLM
Для изучения фантомных библиотек исследователи сгенерировали 576 тысяч фрагментов кода на Python и JavaScript с помощью 16 популярных LLM.
Модели выдумывали зависимости с разной частотой: реже всего галлюцинировали GPT4 и GPT4 Turbo (вымышленные библиотеки встретились менее чем в 5% образцов кода), у моделей DeepSeek этот показатель уже превышает 15%, а сильнее всего ошибается Code Llama 7B (более 25% фрагментов кода ссылаются на несуществующие библиотеки). При этом параметры генерации, которые снижают вероятность проникновения случайных токенов в выдачу модели (температура, top-p, top-k), все равно не могут снизить частоту галлюцинаций до незначительных величин.
Код на Python содержал меньше вымышленных зависимостей (16%) по сравнению с кодом на JavaScript (21%). Результат также зависит от того, насколько стара тема разработки. Если при генерации пытаться использовать пакеты, технологии и алгоритмы, ставшие популярными за последний год, несуществующих пакетов становится на 10% больше.
Самая опасная особенность вымышленных пакетов — их имена не случайны, а нейросети ссылаются на одни и те же библиотеки снова и снова. На втором этапе эксперимента авторы отобрали 500 запросов, которые ранее спровоцировали галлюцинации, и повторили каждый из них 10 раз. Оказалось, что 43% вымышленных пакетов снова возникают при каждой генерации кода.
Интересна и природа имен вымышленных пакетов. 13% были типичными «опечатками», отличающимися от настоящего имени пакета всего на один символ, 9% имен пакетов были заимствованы из другого языка разработки (код на Python, пакеты из npm), еще 38% были логично названы, но отличались от настоящих пакетов более значительно.
View the full article
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти