Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Новый конвейер научился отбирать код, который не только запускается, но и правильно выглядит после выполнения. В препринте, который не прошёл рецензирование и чьи числа получили сами авторы, фильтрация по отдельным критериям дала до 24 баллов преимущества перед отбором по единой оценке. Такой подход позволяет одним сигналом очищать обучающие данные и направлять обучение с подкреплением.
Почему работающий код ещё не означает правильный результат
В задачах с визуальным результатом обычной проверки выполнения недостаточно. Программа может запуститься без ошибки, но перепутать масштаб осей, наложить элементы интерфейса друг на друга или отрисовать неверную химическую структуру.
Единая оценка от модели-оценщика тоже плохо показывает причину ошибки. В примере из работы код веб-страницы прошёл все проверки, а общая оценка составила 78 из 100. При этом нижняя часть страницы перекрыла секцию и обрезала кнопку; отдельная визуальная проверка дала результат 0,18.
PrismaForge вместо одного балла строит для каждого задания карту критериев. Часть требований относится ко всему классу задач: например, график должен содержать корректные оси, а страница — сохранять структуру. Остальные требования система извлекает из конкретной инструкции: расположение блоков, подписи, интерактивное поведение или соответствие изображению-образцу.
Критерии делятся на две группы. Первая проверяет исходный код: нужные элементы, структуру программы, редактируемость и заданные функции. Вторая оценивает результат после выполнения: компоновку, содержание, геометрию и визуальное соответствие.
Для сложного задания система создаёт больше проверок, чем для простого. Каждый пункт получает вес, после чего оценки нормализуются отдельно для кода и изображения и объединяются в итоговый балл. Благодаря нормализации задания с разным количеством требований остаются сопоставимыми.
Одна карта критериев фильтрует данные и задаёт награду
Каждый исходный пример проходит выполнение и отрисовку. Если программа не компилируется или не создаёт результат, её отправляют на повторную генерацию либо исключают. Для работающего кандидата одна модель формирует критерии, а другая оценивает код и результат: разделение снижает риск, что оценщик повторит ошибки генератора требований.
Дальше конвейер распределяет примеры по итоговому баллу. Слабые отбрасывает, пограничные генерирует заново с указанием проваленных пунктов, сильные сохраняет для обучения с учителем. Исправленные варианты снова проходят выполнение и ту же проверку, поэтому не попадают в набор только на основании обещанного исправления.
Эту же карту используют при обучении с подкреплением. Модель создаёт несколько решений одного задания, система запускает каждое и оценивает по прежним требованиям. Неисполнимый вариант получает нулевую награду, а среди работающих решений алгоритм усиливает те, которые лучше соблюдают кодовые и визуальные критерии.
Для PrismaCoder-2M конвейер собрал два миллиона примеров более чем из 12 классов задач и на 10 языках программирования. В набор вошли графики, веб-интерфейсы, SVG, анимации, научные иллюстрации, документы и символьные форматы. Обучение с подкреплением проверяли на заданиях с Python, HTML и SVG, а итоговые модели строили на версиях PrismaCoder с 9 и 35 миллиардами параметров.
Командам стоит пересмотреть не модель, а контроль данных
Главный практический результат относится к конвейеру данных. Две одинаковые по размеру выборки из одного пула дали разные модели: набор, отфильтрованный через PrismaForge, победил вариант с единой оценкой на каждом тесте. Максимальный разрыв достиг 24 баллов на Vega-Lite, тогда как на части задач с изображениями разница оставалась небольшой.
Метод перенесли на Gemma-4-31B-it и Qwen3-VL-30B-A3B-Instruct для построения графиков и HTML. На обеих основах итоговая система улучшила все 12 метрик, причём обучение с подкреплением каждый раз добавляло результат поверх обучения с учителем. Это показывает, что эффект не привязан только к выпущенным PrismaCoder.
Отдельное сравнение с человеческими оценками охватило 100 примеров и три модели-оценщика. Раздельные критерии лучше совпадали с людьми как по итоговым баллам, так и по порядку вариантов. Для обучения с подкреплением второе особенно существенно: неверный порядок решений превращает награду в противоречивый сигнал.
Работа меняет планы команд, которые собирают собственные данные для генерации интерфейсов, графиков или документов. Если конвейер сейчас проверяет только запуск программы либо просит модель поставить один общий балл, полезнее разделить требования к коду и отрисованному результату, а не сразу менять базовую модель.
Схема также сокращает число разных механизмов контроля: одна карта направляет повторную генерацию, отбирает примеры для обучения с учителем и формирует награду. Однако подтверждённый диапазон охватывает прежде всего визуальное программирование и перечисленные в работе форматы; перенос на другие виды программных задач потребует собственной проверки критериев и способов выполнения.
Источники
Иллюстрация: рисунок из статьи «PrismaCoder: Pushing the Boundaries of Open Multimodal Code Intelligence through Decomposed Rubric Synthesis», Qiushi Sun, Jingyang Gong, Yang Liu и др., CC BY 4.0
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



