ГлавнаяБлогКак проверить, будет ли ИИ выполнять правила: калибровка гейтов
AI / Нейросети

Как проверить, будет ли ИИ выполнять правила: калибровка гейтов

Узнайте, как протестировать, будет ли LLM соблюдать ваши правила. Метрика механизируемости, калибровка на 3 моделях и практический воркфлоу.

Al
Редакция Algolitalgolit.ru
11 мин чтения18 июля 2026 г.

Зачем читать эту статью

Вы пишете правила для ИИ-агента, но модель их игнорирует? Я построил сканер механизируемости правил, протестировал его на трёх моделях и обнаружил, что даже структурно проверяемое правило может не работать из-за склонности модели к выполнению инструкций. В статье — готовый код сканера, результаты эксперимента и двухосевая модель, которая объясняет, когда гейты работают, а когда нет.

Что было построено

Макс Квимби спросил: «Где проходит граница между „заблокировать“ и „только подтолкнуть“?» Я построил mechanizability_scanner.py — детерминированный классификатор на регулярных выражениях, который оценивает правило от 0.0 до 1.0 по тому, насколько механически оно проверяемо. Структурные маркеры ([ANSWER], блоки кода, директивы MUST) дают высокий балл. Оценки качества («тщательный», «проницательный»), расплывчатые ожидания — низкий.

Пороги

  • ≥ 0.70 → L1 (гейтируемый): регулярное выражение или проверка файловой системы могут это верифицировать.
  • 0.30–0.69 → L2 (полу-): logprob-зонды могут обнаружить проникновение; механической проверки недостаточно.
  • < 0.30 → L3 (не гейтируемый): требуется семантическая интерпретация.

Откалибровал на 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%. Выглядит как провал. Но это не так.

Что на самом деле говорят данные

DS Flash более «послушна», чем DS Pro

На T3 (чеклист) DS Pro набрала 0% — она отказалась производить - [ ], когда контент не подходил под формат. DS Flash — 100%: механически ставила галочки, не обращая внимания на релевантность. На T4 (ключевые слова рассуждения) DS Flash — 95%, DS Pro — 35%. Pro-модель решает, следовать ли инструкции. Flash просто следует.

Qwen не обращает внимания на правила формата вывода

T1 (теги кода) — 40%. Правило: «Каждый блок кода ДОЛЖЕН быть обёрнут в теги языка». Qwen часто выводит Python без python, хотя MUST-директива стоит первой в системном промпте. T5 (неопределённость) — 0%. Двадцать испытаний — ни одного использования «uncertain», «might», «depends». Qwen подаёт каждый ответ как окончательный, даже на вопрос, требующий эпистемического хеджирования.

Граница L1/L2 зависит от модели

T3 (чеклист, сканер = 0.600) — пограничный случай. Сканер верно определяет его как структурно неоднозначный. Но: DS Flash — 100% (эффективно L1), DS Pro — 0% (твёрдо L2), Qwen — 10% (твёрдо L2). Одно правило, один балл сканера, три разных эффективных уровня. Архитектура модели определяет, где находится обрыв гейтируемости.

Двухосевая модель

Сканер не провалился. Он измеряет ровно то, для чего создан: структуру правила — насколько механически проверяемо ограничение, независимо от модели. Что он не может измерить — склонность модели к соблюдению: насколько вероятно, что данная архитектура будет следовать структурированным правилам. Это две независимые оси.

Гейт работает, когда благоприятны обе оси: правило структурно проверяемо (сканер ≥ 0.70) И модель действительно следует структурированным правилам (соблюдение ≥ 70%). Сканер сам по себе говорит, может ли гейт работать. Калибровка говорит, будет ли он работать на вашей конкретной модели.

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

Если вы строите ИИ-агента с принудительным выполнением правил, вам нужно калибровать. Не один раз — на каждую модель.

Воркфлоу

  1. Оцените свои правила сканером → определите кандидатов L1.
  2. Запустите калибровочное испытание (5 задач × 10 попыток = 50 вызовов API) на вашей модели.
  3. Нанесите на карту обрыв соблюдения вашей модели — где она перестаёт следовать структурированным правилам?
  4. Размещайте гейты только в зоне пересечения — высокая механизируемость И высокое соблюдение.

Правило с баллом 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-validatorlayers/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 сканер. Инструмент, который я обещал в предыдущей статье, и кросс-модельные данные, которые, как я говорил, были заблокированы. Всё сделано. Результат оказался не тем, что я ожидал — а значит, эксперимент стоил того.

#гейтирование ИИ#калибровка моделей#механизируемость#LLM compliance#DeepSeek
Al
Редакция Algolit

Пишем про алгоритмы, подготовку к собеседованиям и карьеру в IT — так, чтобы было понятно и полезно.

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →