Как это работает
PRISM берёт код, который нейросеть написала на 1С, и по-настоящему его запускает — чтобы оценить качество не на глаз, а по факту. Здесь — вся методика простым языком.
В двух словах
Даём модели задачу → забираем код → компилируем, прогоняем скрытые тесты, запускаем против учебной базы 1С → ставим оценку по четырём сторонам качества (SMOP). Главный результат — не одна цифра, а профиль: где модель сильна, а где слаба.
Четыре оси качества (SMOP)
SMOP — это первые буквы четырёх осей. Как призма раскладывает белый свет на цвета, PRISM раскладывает «качество кода» на четыре отдельных измерения — у каждого своя оценка.
S — Syntax (Синтаксис)
Код вообще компилируется, или там ошибки?
Самый базовый уровень: машина пробует собрать модуль. Если код обрезан или в нём синтаксические ошибки — он не соберётся, и говорить дальше не о чем.
Синтаксис модуля ≠ синтаксис запроса
S смотрит на компиляцию модуля. Текст запроса (внутри кавычек) для компилятора — просто строка: кривой запрос или обращение к несуществующему полю он пропускает. Такая ошибка вылезает уже на исполнении (
Запрос.Выполнить()) и идёт в M/P, а не в S. Поэтому нормально видеть S = 10 и «синтаксическую ошибку» в логе одновременно — это синтаксис разных вещей: модуль собрался, а запрос внутри строки — нет.
M — Meaning (Семантика)
Код решает поставленную задачу?
Машина запускает код и прогоняет скрытые тесты — заранее заготовленные примеры «на таких входных данных должен получиться такой результат». Оценка — доля пройденных тестов. Код может прекрасно компилироваться (хорошая S), но давать неправильный ответ (плохая M): это разные вещи.
O — Optimization (Оптимальность)
Код написан грамотно — или будет тормозить?
Решать задачу можно правильно, но ужасно медленно — например, лезть в базу внутри цикла (классическая причина сильных тормозов в 1С). Оптимальность мы проверяем по-разному в двух категориях:
- в алгоритмике (A) — на деле: подаём алгоритму большой объём входных данных и смотрим, как растёт число операций. Так быстрый алгоритм сразу отличается от медленного;
- в платформенных задачах (B) — по самому коду: ищем типовые тяжёлые ошибки (тот самый запрос к базе в цикле и подобное).
Тонкое — насколько вообще удачно выбран подход — машине не под силу; это уже к эксперту (ниже).
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 — это всегда условие + скрытая проверка + эталон:
- условие — текст задания, который получает нейросеть;
- скрытая проверка — тесты, которые модель не видит (иначе подгоняла бы ответ);
- эталон — образцовое решение, которое само обязано проходить эти тесты на 100% (не проходит свои тесты — значит, сломаны тесты или эталон).
Задачи бывают двух категорий:
- Категория A — алгоритмика на чистом языке 1С: сортировки, разбор строк, даты… Исполняется в OneScript — бесплатном движке, понимающем язык 1С.
- Категория B — платформенные задачи: остатки на складе, списание по FIFO, расчёт себестоимости… Им нужна настоящая 1С с базой, поэтому исполняются в реальной платформе против учебной базы, которую PRISM собирает из описания самой задачи.
Категория B даёт модели инструменты (function calling)
Чтобы написать платформенный код, модель должна знать схему базы — и собирает её сама, вызовами инструментов: спрашивает, какие есть регистры и поля, и пишет код, уже зная схему. Модель без поддержки инструментов схему не видит → выдумывает метаданные → низкий балл по оси Платформа. Это часть замысла: грамотная работа с метаданными 1С — как раз тот навык, что мы и меряем.
Где живёт качество бенчмарка
Машина оценивает ровно настолько хорошо, насколько хороши скрытые тесты к задаче. Поэтому самая ценная работа человека — не проверять оценки, а придумывать сильные задания с сильными тестами. Хотите помочь проекту — начните с этого (Как участвовать).
Общая оценка Q
Иногда хочется одну цифру «на глаз» — для этого есть Q, среднее по применимым осям. Но это вторичная величина: одна цифра прячет, где именно модель ошиблась. Главный результат PRISM — всегда вектор из четырёх осей, а не Q.
Дальше
- Лидерборд — кто сейчас впереди.
- Что умеет сейчас — честное состояние бенчмарка.
- Честные границы — что инструмент вправе утверждать, а что пока нет.
- Как запустить — установка и команды.
