Новое исследование Google DeepMind и нескольких американских университетов показало, что большинство тестов для проверки кода, созданного ИИ, не соответствуют тому, что действительно важно разработчикам.
Вместо оценки, работает ли код, система Vibe Checker также проверяет, насколько код следует подробным инструкциям. Исследователи выяснили, что совмещение проверки работоспособности и следования инструкциям даёт результаты, которые существенно ближе к человеческим предпочтениям.
Проблема в том, что популярные метрики (например, pass@k) оценивают только прохождение юнит-тестов. Это игнорирует требования к стилю, документации и обработке ошибок, которые важны программистам.
Это различие хорошо видно в сервисах вроде Copilot Arena, где люди сравнивают разные ИИ. Там рейтинги по метрикам часто идут вразрез с реальными предпочтениями программистов.
Для решения этой задачи команда создала VeriCode — перечень из 30 проверяемых инструкций для кода в пяти категориях: стиль, логика, документация, обработка ошибок и ограничения по библиотекам или API.
VeriCode базируется более чем на 800 правилах линтера Ruff для Python и использует только самые актуальные из них. Каждая инструкция проверяется простым вердиктом: “пройдено/не пройдено”.
Исследователи отмечают основное преимущество VeriCode — его гибкость. Можно менять параметры, например длину строки, чтобы из 30 базовых правил создавать сотни разных вариантов.
С помощью VeriCode команда расширила тестовые наборы: BigCodeBench стал BigVibeBench с 1 140 реальными задачами, а LiveCodeBench — LiveVibeBench с 1 055 задачами по алгоритмам.
Для каждой задачи используется ИИ для выбора подходящих инструкций. Проверка проводится в двух режимах: всё сразу или по шагам, добавляя инструкции по очереди.
Тестировали 31 ведущую языковую модель от 10 команд. Дополнительные инструкции не ломают код, но уменьшают pass@1 для всех моделей. С пятью инструкциями этот показатель падает в среднем на 5,85% для BigVibeBench и на 6,61% для LiveVibeBench.
Следовать сразу нескольким инструкциям сложно даже для топовых моделей. Лучшие из них справляются только в 46,75% и 40,95% случаев при пяти инструкциях. У большинства этот показатель падает ниже 50%, как только появляется три или больше условий.
Генерация кода за один проход лучше сохраняет работоспособность, а режим поэтапного редактирования помогает точнее выполнять инструкции. Также отмечен эффект «потерянного в середине»: модели хуже выполняют условия, находящиеся в середине задания.
Для оценки соответствия с человеческими предпочтениями результаты сверили с 800 000 отзывов программистов из проекта LMArena. Оказалось, что совмещение проверки работоспособности и инструкции — лучший способ угадать, что выберет человек.
Важность каждого критерия зависит от задачи: для повседневного программирования на первом месте следование инструкции, для соревновательных задач — работоспособность.
Исследование показывает: умение следовать инструкциям — важная, но часто забываемая часть оценки кода. Учитывать такие параметры позволяет точнее оценивать качество.
Это влияет и на то, как обучают модели. Сейчас главный показатель — pass@k, что сужает понятие качества кода. VeriCode может дать масштабируемый и точный способ обучать ИИ лучшему коду.
Перечень VeriCode и его проверки скоро станут доступны для всех, также подход можно использовать для языков кроме Python.
Последние исследования подчеркивают сложную роль ИИ в программировании. Опрос Google Cloud показывает, что разработчики используют инструменты ИИ по нескольку часов в день. Опрос Stack Overflow выявляет “парадокс доверия”: чем больше программисты полагаются на ИИ, тем меньше верят в точность его кода. Исследование METR добавляет: опытные программисты с ИИ работают медленнее, хотя ощущают, что быстрее.






















