Самооценка кода: Искусственный интеллект как строгий эксперт

Автор: Денис Аветисян


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

🚀 Квантовые новости

Подключайся к потоку квантовых мемов, теорий и откровений из параллельной вселенной.
Только сингулярные инсайты — никакой скуки.

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

Представлен метод Agentic Rubrics, позволяющий AI-агентам генерировать контекстуализированные рубрики для оценки патчей кода и улучшения процесса проверки.

Несмотря на важность верификации в задачах разработки программного обеспечения, традиционные подходы, основанные на выполнении кода, часто сталкиваются с проблемами масштабируемости. В данной работе, ‘Agentic Rubrics as Contextual Verifiers for SWE Agents’, предложен новый метод — Agentic Rubrics, использующий экспертного агента для создания контекстно-зависимых критериев оценки патчей без необходимости выполнения тестов. Эксперименты на SWE-Bench Verified продемонстрировали, что Agentic Rubrics превосходит существующие методы, обеспечивая значительное улучшение показателей верификации и масштабируемости. Способны ли подобные подходы к генерации критериев оценки стать основой для создания более надежных и эффективных систем разработки программного обеспечения на базе ИИ?


Автоматизированная Оценка Кода: Вызовы и Поиск Эффективных Метрик

Автоматизированная оценка предлагаемых изменений в коде становится все более важной для ускорения процесса разработки программного обеспечения. Однако, определение действительно значимых метрик, способных всесторонне оценить качество и корректность этих изменений, представляет собой сложную задачу. Существующие подходы часто сталкиваются с трудностями в выявлении тонких ошибок, упущений или неоптимальных решений, которые могут негативно сказаться на производительности или надежности системы. Разработка эффективных метрик требует учета множества факторов, включая функциональную полноту, сложность кода, его читаемость и потенциальные уязвимости, что делает эту область активным направлением исследований в области разработки программного обеспечения и искусственного интеллекта.

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

Автоматизированная генерация кода, осуществляемая, например, агентами в области разработки программного обеспечения, обещает значительное повышение эффективности и скорости создания новых решений. Однако, потенциал этих технологий существенно снижается при отсутствии надежных методов оценки качества сгенерированного кода. Без точных и всесторонних метрик, способных выявлять не только явные ошибки, но и скрытые недостатки в производительности или безопасности, сложно гарантировать, что автоматизированно созданный код будет надежным, эффективным и соответствовать заданным требованиям. В результате, внедрение автоматизированной генерации может привести к увеличению затрат на исправление ошибок и снижению общей продуктивности, нивелируя первоначальные преимущества.

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

Агентские Рубрики: Контекстно-Обоснованные Критерии Оценки

Предлагаемый метод Agentic Rubrics представляет собой автоматизированный подход к генерации критериев оценки (рубрик), адаптированных к конкретной задаче программирования. В отличие от статических или заранее определенных рублик, данный метод динамически формирует критерии оценки на основе анализа исходного описания задачи и контекстной информации. Это позволяет создавать более точные и релевантные рублики, учитывающие специфические требования и ожидаемое поведение решения. Автоматическая генерация рублик позволяет масштабировать процесс оценки кода и снизить зависимость от ручной настройки критериев для каждой новой задачи.

Метод Agentic Rubrics использует как описание задачи (Problem Description), так и контекстную информацию (Context Grounding) для формирования критериев оценки. Описание задачи предоставляет общее понимание требуемого решения, в то время как контекстная информация, включающая примеры входных и выходных данных, а также ограничения, детализирует ожидаемое поведение кода. Комбинирование этих двух источников позволяет создавать рубрики, точно отражающие не только функциональные требования, но и специфические аспекты реализации, что обеспечивает более релевантную и объективную оценку предложенных решений.

В основе предлагаемого подхода лежит процесс RubricGeneration, представляющий собой автоматизированное создание индивидуальных элементов оценки — RubricItem. Каждый RubricItem предназначен для оценки конкретного аспекта представленного CandidatePatch, то есть фрагмента кода, предлагаемого в качестве решения. RubricGeneration анализирует задачу и ее контекст, определяя ключевые критерии, по которым будет производиться оценка корректности, эффективности и соответствия кода требованиям. Эти критерии формируются в виде отдельных RubricItem, что позволяет проводить детальную и гранулированную оценку предложенного решения, выявляя как сильные, так и слабые стороны CandidatePatch.

В отличие от традиционных тестов, основанных на принципе “успешно/неуспешно”, Agentic Rubrics используют контекстную информацию для проведения более детальной и информативной оценки. Это достигается путем анализа не только соответствия кода заданным требованиям, но и учета специфики задачи, ожидаемого поведения и возможных нюансов реализации. Такой подход позволяет выявить не только ошибки, но и оценить качество кода, его эффективность и соответствие лучшим практикам разработки, предоставляя более полное представление о решении.

Оценка на основе взвешенной рубрики для Qwen3-32B показывает четкую корреляцию с корректностью патчей Sonnet-4.5, присваивая более высокие баллы корректным фрагментам и более низкие - некорректным, при этом распределение оценок является более плотным.
Оценка на основе взвешенной рубрики для Qwen3-32B показывает четкую корреляцию с корректностью патчей Sonnet-4.5, присваивая более высокие баллы корректным фрагментам и более низкие — некорректным, при этом распределение оценок является более плотным.

Проверка Качества Рубрик: Обеспечение Точной Оценки

Анализ полезности рубрик (RubricUtilityAnalysis) применяется для оценки качества и валидности сгенерированных рубрик. Этот процесс включает в себя выявление и устранение критериев, не обеспечивающих значимую оценку или противоречащих эталонному решению (GoldenPatch). Анализ позволяет подтвердить соответствие рубрик требованиям задачи и эталонному решению, что критически важно для обеспечения корректности и надежности автоматизированной оценки. В ходе анализа оценивается способность рубрики дифференцировать решения различного качества и точно оценивать соответствие решения заданным критериям.

Анализ утилиты рубрик (RubricUtilityAnalysis) направлен на выявление и устранение критериев, обозначенных как SpuriousRubric — пунктов оценки, которые не предоставляют значимой информации для оценки решения или противоречат эталонному решению (GoldenPatch). Идентифицированные SpuriousRubric приводят к неточной или некорректной оценке, снижая надежность системы автоматической оценки. Процесс митигации включает в себя пересмотр формулировок, удаление избыточных или противоречивых критериев, а также корректировку весовых коэффициентов для обеспечения соответствия рубрики требованиям задачи и эталонному решению.

Проверка соответствия рубрик требованиям задачи и эталонному решению является критически важным этапом обеспечения их валидности. Данный процесс включает в себя сопоставление критериев оценки, определенных в рубрике, с конкретными аспектами, указанными в формулировке задачи, а также с характеристиками оптимального решения, представленного в эталонных данных. Соответствие гарантирует, что рубрика оценивает именно те навыки и знания, которые необходимы для успешного выполнения задания, и что оценка отражает фактический уровень компетенции решающего. Несоответствие может привести к неверной оценке решений и искажению результатов.

Для дополнительной верификации качества генерируемых рубрик используется тестовая оценка на основе набора эталонных тестов (GoldenTestCases). Результаты показали улучшение показателя Best@16 на 4.6% (до 54.2% по сравнению с базовым значением 50.2%) при тестировании на SWE-Bench Verified. Данное улучшение демонстрирует эффективность разработанных Agentic Rubrics в задачах автоматической оценки программного кода и подтверждает их высокую точность и надежность.

Анализ полезности рубрик для оценки агента показывает, что в случаях высокой согласованности 78% из них соответствуют ключевой семантике, совместимости, структуре и покрытию граничных случаев, в то время как в случаях прохождения тестов при низкой оценке рубрик, 54% выявляют упущенные первопричины или недостаточное покрытие граничных случаев.
Анализ полезности рубрик для оценки агента показывает, что в случаях высокой согласованности 78% из них соответствуют ключевой семантике, совместимости, структуре и покрытию граничных случаев, в то время как в случаях прохождения тестов при низкой оценке рубрик, 54% выявляют упущенные первопричины или недостаточное покрытие граничных случаев.

К Надежной Автоматизации: Влияние и Перспективы Развития

Интеграция агентских рубрик с SWEAgent представляет собой комплексный конвейер для автоматической генерации и оценки кода. Данный подход позволяет не только создавать программный код на основе заданных требований, но и автоматически проверять его соответствие критериям качества и функциональности. SWEAgent, выступая в роли исполнителя, использует агентские рубрики — детальные инструкции и критерии оценки — для последовательного выполнения задачи, от понимания запроса до предоставления готового решения. Полученный код подвергается автоматизированной проверке на соответствие этим рубрикам, что обеспечивает объективную и надежную оценку его качества. В результате формируется полностью автоматизированный цикл разработки, способный существенно повысить эффективность и надежность процесса создания программного обеспечения.

Внедрение предложенного подхода значительно повышает надежность и эффективность автоматизированных рабочих процессов разработки программного обеспечения. Традиционные методы часто сталкиваются с проблемами при оценке качества сгенерированного кода, что приводит к нестабильности и необходимости ручной проверки. Однако, благодаря интеграции Agentic Rubrics с SWEAgent, обеспечивается полный цикл — от автоматической генерации кода до его объективной оценки на основе заранее определенных критериев. Результаты исследований демонстрируют существенный прогресс: в частности, достигнут показатель Best@16 в 40.6% с использованием модели Qwen3-32B, превосходящий аналогичный результат Patch Classifier (37.1%). Agentic Rubrics также показывают улучшение в 54.2% Best@16 по сравнению с 49.6% при использовании Agentic Patch Similarity, что свидетельствует о более точной и эффективной оценке качества кода и, как следствие, о повышении общей надежности автоматизированного процесса.

Предстоящие исследования направлены на расширение возможностей данной системы для решения более сложных задач кодирования, а также на использование машинного обучения для дальнейшей оптимизации процесса генерации рубрик оценки. В ходе экспериментов с моделью Qwen3-32B достигнут показатель Best@16 в 40.6%, что превосходит результат, показанный Patch Classifier (37.1%). Более того, применение Agentic Rubrics позволило получить Best@16 на уровне 54.2%, что выше показателя 49.6%, достигнутого с использованием Agentic Patch Similarity. Эти результаты демонстрируют значительный потенциал для повышения эффективности и надежности автоматизированных рабочих процессов разработки программного обеспечения.

Целью данного исследования является раскрытие полного потенциала агентов в области разработки программного обеспечения, позволяя им автономно создавать и поддерживать высококачественный код. Это предполагает переход от простых инструментов автоматизации к интеллектуальным системам, способным не только генерировать программный код, но и самостоятельно оценивать его качество, выявлять ошибки и вносить необходимые исправления. Такой подход обещает значительное повышение эффективности и надежности разработки, позволяя разработчикам сосредоточиться на более сложных и творческих задачах, а агентам — взять на себя рутинные и трудоемкие операции. В перспективе, подобные системы смогут существенно сократить время и стоимость разработки программного обеспечения, обеспечивая при этом более высокий уровень качества и надежности конечного продукта.

Дообучение открытых весовых моделей, таких как Qwen3-32B, в качестве генератора рубрик превосходит их дообучение как классификатора патчей для верификации SWE.
Дообучение открытых весовых моделей, таких как Qwen3-32B, в качестве генератора рубрик превосходит их дообучение как классификатора патчей для верификации SWE.

Исследование, представленное в данной работе, подчеркивает важность адаптации систем оценки к конкретному контексту решаемой задачи. Создание Agentic Rubrics, где агенты искусственного интеллекта самостоятельно генерируют критерии оценки, демонстрирует стремление к созданию систем, способных к самосовершенствованию и коррекции ошибок в реальном времени. Как однажды заметил Марвин Минский: «Лучший способ предсказать будущее — создать его». Этот принцип находит отражение в способности Agentic Rubrics динамически формировать критерии оценки, что позволяет им эффективно масштабироваться и обеспечивать более надежную верификацию кода, а значит, и создавать более надежное будущее программного обеспечения.

Что дальше?

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

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

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


Оригинал статьи: https://arxiv.org/pdf/2601.04171.pdf

Связаться с автором: https://www.linkedin.com/in/avetisyan/

Смотрите также:

2026-01-09 03:05