Узнайте, как протестировать, будет ли LLM соблюдать ваши правила. Метрика механизируемости, калибровка на 3 моделях и практический воркфлоу.
Вы пишете правила для ИИ-агента, но модель их игнорирует? Я построил сканер механизируемости правил, протестировал его на трёх моделях и обнаружил, что даже структурно проверяемое правило может не работать из-за склонности модели к выполнению инструкций. В статье — готовый код сканера, результаты эксперимента и двухосевая модель, которая объясняет, когда гейты работают, а когда нет.
Макс Квимби спросил: «Где проходит граница между „заблокировать“ и „только подтолкнуть“?» Я построил mechanizability_scanner.py — детерминированный классификатор на регулярных выражениях, который оценивает правило от 0.0 до 1.0 по тому, насколько механически оно проверяемо. Структурные маркеры ([ANSWER], блоки кода, директивы MUST) дают высокий балл. Оценки качества («тщательный», «проницательный»), расплывчатые ожидания — низкий.
Откалибровал на DeepSeek V4 Pro против P1-1 ground truth (200 испытаний, 5 типов задач, покрывающих градиент механизируемости). 5/5. Идеальное совпадение.
Задача | Сканер | Реальность (DS Pro)
Формат-тег (блоки кода) | 0.950 L1 | 100% соблюдение
Заголовок секции ([ANSWER]) | 1.000 L1 | 100% соблюдение
Чеклист (содержание + формат) | 0.600 L2 | 0% соблюдение
Рассуждение (because/since) | 0.550 L2 | 35% соблюдение
Неопределённость (might/depends) | 0.550 L2 | 42.5% соблюдениеСканер правильно отделяет «гейт МОЖЕТ проверить это» от «гейт НЕ МОЖЕТ проверить это». Я был доволен. Пора тестировать на других моделях.
Те же 5 задач. Те же регулярки для подсчёта. Температура = 0.0. Две новые модели через SiliconFlow: Qwen3.6-35B-A3B (20 испытаний на задачу) и DeepSeek V4 Flash (20 испытаний на задачу). 200 новых вызовов API. Сравнение с базой DS Pro.
Задача | Сканер | DS Pro | Qwen3.6 | DS Flash
T1 Формат-тег | 0.950 L1 | 100% | 40% | 100%
T2 Заголовок | 1.000 L1 | 100% | 70% | 95%
T3 Чеклист | 0.600 L2 | 0% | 10% | 100%
T4 Рассуждение| 0.550 L2 | 35% | 40% | 95%
T5 Неопредел. | 0.550 L2 | 42.5%| 0% | 25%Совпадение: 2/5 по всем трём моделям. На одной модели сканер был прав на 100%. На нескольких — 40%. Выглядит как провал. Но это не так.
На T3 (чеклист) DS Pro набрала 0% — она отказалась производить - [ ], когда контент не подходил под формат. DS Flash — 100%: механически ставила галочки, не обращая внимания на релевантность. На T4 (ключевые слова рассуждения) DS Flash — 95%, DS Pro — 35%. Pro-модель решает, следовать ли инструкции. Flash просто следует.
T1 (теги кода) — 40%. Правило: «Каждый блок кода ДОЛЖЕН быть обёрнут в теги языка». Qwen часто выводит Python без python, хотя MUST-директива стоит первой в системном промпте. T5 (неопределённость) — 0%. Двадцать испытаний — ни одного использования «uncertain», «might», «depends». Qwen подаёт каждый ответ как окончательный, даже на вопрос, требующий эпистемического хеджирования.
T3 (чеклист, сканер = 0.600) — пограничный случай. Сканер верно определяет его как структурно неоднозначный. Но: DS Flash — 100% (эффективно L1), DS Pro — 0% (твёрдо L2), Qwen — 10% (твёрдо L2). Одно правило, один балл сканера, три разных эффективных уровня. Архитектура модели определяет, где находится обрыв гейтируемости.
Сканер не провалился. Он измеряет ровно то, для чего создан: структуру правила — насколько механически проверяемо ограничение, независимо от модели. Что он не может измерить — склонность модели к соблюдению: насколько вероятно, что данная архитектура будет следовать структурированным правилам. Это две независимые оси.
Гейт работает, когда благоприятны обе оси: правило структурно проверяемо (сканер ≥ 0.70) И модель действительно следует структурированным правилам (соблюдение ≥ 70%). Сканер сам по себе говорит, может ли гейт работать. Калибровка говорит, будет ли он работать на вашей конкретной модели.
Если вы строите ИИ-агента с принудительным выполнением правил, вам нужно калибровать. Не один раз — на каждую модель.
Правило с баллом 0.950 L1 от сканера может быть эффективно L2 на Qwen и L1 на DeepSeek. Если вы развернёте гейт без калибровки, вы не знаете, в каком мире находитесь.
Рене Зандер построил skillgate — детерминированные, не зависящие от модели гейты для ИИ-агентов кодинга. Он пришёл к той же архитектуре из того же ограничения, независимо. Каждая проверка — чистая функция над файловой системой: file-exists, file-contains, absent, command, evidence. Все они структурно L1. И skillgate поставляется как npm-пакет для Claude Code — модели с высокой склонностью к соблюдению формата из семейства DeepSeek. Рене не нужно было формулировать 2D-модель. Он строил прямо в области, где обе оси совпадают.
Три модели — недостаточно. GPT-4o, Claude 4, Gemini — не тестировались. Паттерны соблюдения могут быть специфичны для семейств DeepSeek и Qwen. Разные архитектуры могут показать совершенно другие расположения обрывов.
У «послушности» DS Flash есть тёмная сторона. 100% соблюдение чеклиста звучит отлично, пока вы не прочитаете ответы — модель производит - [ ] с контентом, который едва релевантен. Высокое соблюдение ≠ высокое качество. Гейт, проверяющий только формат, пропустит мусор, если модель достаточно послушна.
Оценка — только детерминированные регулярки. Никакого LLM-судьи. Это правильно для измерения L1, но означает, что я измеряю соблюдение формата, а не качество контента. T3 «100%» для DS Flash измеряет «поставлены маркеры чекбокса», а не «создан полезный чеклист развёртывания».
Сканер доступен на GitHub: github.com/YuhaoLin2005/paper-validator — layers/mechanizability_scanner.py, v0.1.1. Скрипт эксперимента и набор данных из 200 испытаний — в experiment_p1_1_cross_model.py и results/p1_1_cross_model_20260717-143157.json.
Если вы проводили калибровочные испытания на своей модели или замечали, что гейты ведут себя иначе после смены модели — напишите мне. Двухосевая модель — гипотеза с n=3. Больше данных покажет, работает она или ломается.
200 новых вызовов API. 3 модели. 1 сканер. Инструмент, который я обещал в предыдущей статье, и кросс-модельные данные, которые, как я говорил, были заблокированы. Всё сделано. Результат оказался не тем, что я ожидал — а значит, эксперимент стоил того.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →