PRISM/genlab-1c / prism
v1.4.0Star10

Как это работает

PRISM берёт код, который нейросеть написала на 1С, и по-настоящему его запускает — чтобы оценить качество не на глаз, а по факту. Здесь — вся методика простым языком.

В двух словах

Даём модели задачу → забираем код → компилируем, прогоняем скрытые тесты, запускаем против учебной базы 1С → ставим оценку по четырём сторонам качества (SMOP). Главный результат — не одна цифра, а профиль: где модель сильна, а где слаба.

Четыре оси качества (SMOP)

SMOP — это первые буквы четырёх осей. Как призма раскладывает белый свет на цвета, PRISM раскладывает «качество кода» на четыре отдельных измерения — у каждого своя оценка.

S — Syntax (Синтаксис)

Код вообще компилируется, или там ошибки?

Самый базовый уровень: машина пробует собрать модуль. Если код обрезан или в нём синтаксические ошибки — он не соберётся, и говорить дальше не о чем.

Синтаксис модуля ≠ синтаксис запроса

S смотрит на компиляцию модуля. Текст запроса (внутри кавычек) для компилятора — просто строка: кривой запрос или обращение к несуществующему полю он пропускает. Такая ошибка вылезает уже на исполнении (Запрос.Выполнить()) и идёт в M/P, а не в S. Поэтому нормально видеть S = 10 и «синтаксическую ошибку» в логе одновременно — это синтаксис разных вещей: модуль собрался, а запрос внутри строки — нет.

M — Meaning (Семантика)

Код решает поставленную задачу?

Машина запускает код и прогоняет скрытые тесты — заранее заготовленные примеры «на таких входных данных должен получиться такой результат». Оценка — доля пройденных тестов. Код может прекрасно компилироваться (хорошая S), но давать неправильный ответ (плохая M): это разные вещи.

O — Optimization (Оптимальность)

Код написан грамотно — или будет тормозить?

Решать задачу можно правильно, но ужасно медленно — например, лезть в базу внутри цикла (классическая причина сильных тормозов в 1С). Оптимальность мы проверяем по-разному в двух категориях:

Тонкое — насколько вообще удачно выбран подход — машине не под силу; это уже к эксперту (ниже).

P — Platform (Платформа)

Код верно обращается к объектам 1С — справочникам, регистрам, реквизитам?

Нейросети часто выдумывают несуществующие поля и объекты. Со стороны код выглядит правдоподобно, но падает на первом же реальном обращении к базе. PRISM запускает код против учебной базы и смотрит: пережил ли он контакт с метаданными или споткнулся о выдуманное поле.

Зачем разделять M и P

Обычные бенчмарки сваливают любой провал в одно «не прошло». PRISM различает два разных случая: «выдумал несуществующее поле» (ось P) и «поля верные, но логика неправильная» (ось M). Для разработчика 1С это две разные болезни с разным лечением — и PRISM показывает, какая именно.

Два уровня: машина и эксперт

Оценку ставят на двух уровнях, и важно понять, зачем нужен каждый.

Уровень 1 — машина. Берёт код и запускает: компилятор, тесты, реальная база. Работает сама, на тысячах ответов. Именно она строит лидерборд и отвечает на вопрос «какая нейросеть лучше».

Уровень 2 — эксперт (пока в планах; прототип платформы — genlab-1c-web). Вручную оценивать каждый ответ не выйдет: когда задач сотни, а ответов тысячи — людей не хватит. Поэтому роль эксперта другая:

Если коротко: машина измеряет код, а эксперт измеряет машину.

Знак «проверено» (Verified)

Совпадение машины с экспертом превращает «машина так посчитала» в «этой оценке можно верить». Проверенная экспертом часть бенчмарка получит отметку Verified — слой доверия поверх автоматического лидерборда. Пока такого слоя нет (Уровень 2 в планах), но методика под него уже заложена.

Шкала оценок

Эксперт ставит баллы по шкале «через одну»: 0, 2, 4, 6, 8, 10 — без серединок, чтобы человек не отлынивал нейтральной оценкой, а определялся.

Машина считает точно. «Прошло 4 теста из 5» — это 80%, и на лидерборде так и показывается 8.0, в полном разрешении. В грубую 6-балльную шкалу точную оценку переводят только в один момент — при сверке с экспертом (у него шкала именно такая). То есть точное число — настоящая оценка для лидерборда, а ступенька — общий язык для сравнения с человеком.

Что такое «задача»

Задача в PRISM — это всегда условие + скрытая проверка + эталон:

Задачи бывают двух категорий:

Категория B даёт модели инструменты (function calling)

Чтобы написать платформенный код, модель должна знать схему базы — и собирает её сама, вызовами инструментов: спрашивает, какие есть регистры и поля, и пишет код, уже зная схему. Модель без поддержки инструментов схему не видит → выдумывает метаданные → низкий балл по оси Платформа. Это часть замысла: грамотная работа с метаданными 1С — как раз тот навык, что мы и меряем.

Где живёт качество бенчмарка

Машина оценивает ровно настолько хорошо, насколько хороши скрытые тесты к задаче. Поэтому самая ценная работа человека — не проверять оценки, а придумывать сильные задания с сильными тестами. Хотите помочь проекту — начните с этого (Как участвовать).

Общая оценка Q

Иногда хочется одну цифру «на глаз» — для этого есть Q, среднее по применимым осям. Но это вторичная величина: одна цифра прячет, где именно модель ошиблась. Главный результат PRISM — всегда вектор из четырёх осей, а не Q.

Дальше