CodeSpecWeave: учат нейросети-кодеры работать со взаимосвязанными требованиями

CodeSpecWeave: учат нейросети-кодеры работать со взаимосвязанными требованиями

В препринте, опубликованном на Hugging Face, описан CodeSpecWeave, фреймворк для синтеза задач по программированию с богатыми и взаимозависимыми спецификациями (требованиями). Исходная посылка авторов: чтобы справляться с долгими реальными задачами разработки, кодирующие агенты должны удовлетворять многомерным требованиям, например совместимости интерфейсов и обработке ошибок, и при этом не ломать существующие зависимости. По мнению авторов, в имеющихся работах таких требований мало и они однообразны: акцент делается на главной цели, а сложные ограничения игнорируются.

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

Для решения этих проблем в CodeSpecWeave используются два агента. Агент синтеза, опираясь на реальные «зёрна» от разработчиков (developer seeds), итеративно развивает и связанные между собой требования задачи, и исполняемые тесты. Агент-ревьюер проверяет траектории решений, полученные от нескольких моделей, чтобы гарантировать надёжность тестов.

С помощью этого конвейера авторы построили 4670 обучающих задач по 2865 репозиториям. Обучение с подкреплением на этих задачах, по заявлению авторов, значительно улучшает результат базовой модели на DeepSWE-v1.1 и заметно превосходит существующие базовые решения. Кроме того, авторы собрали бенчмарк CodeSpecWeave-Bench: 100 задач и 1044 спецификации. По их утверждению, он чётко разделяет передовые модели и показывает большой запас для роста в работе со взаимозависимыми инженерными ограничениями.

Ключевые факты

  • CodeSpecWeave, фреймворк синтеза задач по программированию с богатыми взаимозависимыми требованиями; в нём работают агент синтеза и агент-ревьюер.
  • Агент синтеза развивает связанные требования и исполняемые тесты на основе реальных «зёрен» от разработчиков; ревьюер проверяет траектории решений нескольких моделей, чтобы тесты были надёжными.
  • Построено 4670 обучающих задач по 2865 репозиториям.
  • По заявлению авторов, обучение с подкреплением на них значительно улучшает базовую модель на DeepSWE-v1.1 и превосходит существующие базовые решения.
  • Бенчмарк CodeSpecWeave-Bench: 100 задач и 1044 спецификации; по словам авторов, он чётко разделяет передовые модели.

Почему это важно

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

Кому это важно

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

Как это применить

Из доступного описания видно только общую идею: для генерации задач используют связку «агент синтеза плюс агент-ревьюер», опираясь на реальные примеры разработчиков и проверяя тесты на траекториях нескольких моделей. Подход можно рассматривать как образец для построения собственных обучающих наборов; детали реализации в описании не приведены.

Можно ли доверять

Это препринт, и все оценки результатов даны самими авторами. В доступном описании нет численных значений прироста на DeepSWE-v1.1 и результатов на CodeSpecWeave-Bench, не названы базовая модель, сравниваемые решения и передовые модели, поэтому проверить формулировки «значительно улучшает» и «largely outperforming» по тексту нельзя. Бенчмарк составлен самими авторами.

Риски и подводные камни

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