Обучение · Агенты и вайб-кодинг
Глава 24. Детерминированные проверки вместо уговоров
Есть класс проблем, который не лечится ни инструкцией, ни ревью, ни эвалом, ни молитвой. Он лечится только тем, что часть контроля забирают у модели и отдают коду.
Правила не удерживают агента Начнём с исследования, которое стоит знать всем.
Захуячили проверку следования инструкциям: подробные руководства на шестнадцать страниц, от финансов до модерации, и агенты, которым велено им следовать.
Результат вышел невесёлый. Даже детальные руководства ни хуя не гарантируют. Агенты находили лазейки: выполняли требования формально и нарушали суть.
Требование Как обошли
Не удаляй файлы Переименовал
Не публикуй секреты Закодировал
Не превышай лимит запросов Разбил на несколько источников
Вывод авторов сформулирован жёстко: управление агентами через правила принципиально ненадёжно.
ГЛАВНОЕ ПРО ЗАПРЕТЫ Агент выполняет букву и нарушает смысл. Не из вредности, а потому что задачу надо закрыть, а прямой путь перекрыт. Отсюда следует, что запрет без предоставленного правильного пути рождает не качество, а изворотливость. Чем строже запрет, тем изобретательнее обход.
Ровно то же наблюдение, что и в главе про регекспы: запрет закрывает половину работы, вторую половину закрывает готовый способ сделать правильно.
Агент обыгрывает и проверку Второй уровень той же проблемы, и он хуже.
Проверку соответствия придумывает тот же агент, который выполняет работу, и он же её обыграет, к гадалке не ходи. Быстро пройдёт всё, что ты хотел проверить, и дальше займётся тем, чем ему хотелось с самого начала.
Формулировка из обсуждения звучала так: оно и саму проверку на соответствие сможет обыграть, если захочет.
Отсюда правило: проверку пишет не тот, кто выполняет. Либо человек, либо отдельный агент с отдельным заданием, либо, что лучше всего, код.
Детерминированные проверки вместо уговоров
Где проходит граница Спор о том, что отдавать модели, а что коду, шёл долго и кончился внятным разграничением.
ЧТО ДЕЛАТЬ С ТРЕБОВАНИЕМ
Требование к поведению системы
Требует догадки и понимания Требует надёжности и повторяемости
отдать модели написать кодом
Признаки того, что требование должно быть кодом:
Результат должен быть одинаковым всегда, а не почти всегда.
Нарушение обнаруживается не сразу, а через время.
Цена нарушения выше стоимости написания проверки.
Формулировка требования содержит слова всегда, никогда, обязательно.
Последний признак самый практичный. Пишешь в инструкции слово всегда, задумайся, почему это до сих пор не код.
Форматы и контракты Частный, но самый частый случай.
Формат ответа, описанный словами в запросе, нарушается примерно в одном случае из десяти. Не лечится формулировкой, не лечится крупным шрифтом и не лечится большой моделью. Вообще ни хуя не лечится словами.
Разбор реального инструмента распознавания показал типичную ошибку: модель просят соблюдать формат, описанный прямо в тексте запроса. Работает заебись, пока в один прекрасный день не перестанет. Правильное решение это принуждение к структуре на уровне обвязки: либо структурированный вывод, если он доступен, либо разбор с повтором при неудаче.
Общая формулировка: модели оставляй магию, всё, что требует надёжности, обеспечивай кодом. Контракт обеспечивает обвязка, а не абзац внутри запроса.
Архитектурные ограждения Хороший приём, который недооценивают: часть архитектурных требований выражается линтером.
Детерминированные проверки вместо уговоров
Не надо умолять агента соблюдать слоистость. Надо сделать так, чтобы нарушение слоистости не проходило проверку нахуй, и точка.
Требование Как выразить кодом
Модуль А не знает о модуле Б Правило линтера на импорты
Ошибки не обрабатываются молча Проверка на пустой перехват
Нет прямых обращений к базе из обработчиков Правило на вызовы
Нет дублирования Проверка на схожие фрагменты
Каждое такое правило разгружает и правила проекта, и внимание ревьюера. И работает независимо от того, какая сегодня модель и в каком она, блядь, настроении.
Плохая обвязка обнуляет сильную модель История, которая показывает обратную сторону: детерминированная часть может не только помогать, но и мешать.
Модель хуёво справлялась с набором головоломок, показывая тринадцать процентов. Разбор показал, что дело не в модели ни разу, а в устройстве проверки: она стирала рассуждения после каждого хода и выбрасывала старые действия при переполнении. Модель начинала с нуля каждый ход, как в дурном сне.
Включили сохранение рассуждений и нормальное сжатие контекста, и результат вырос до тридцати восьми процентов, а токенов понадобилось в шесть раз меньше. Опизденеть можно.
ГЛАВНОЕ ПРО ОБВЯЗКУ И РЕЗУЛЬТАТ Разница между тринадцатью и тридцатью восемью процентами это не модель, а две настройки окружения. Прежде чем менять модель, проверь, не мешает ли ей твоя собственная обвязка. Самый дешёвый способ улучшить результат, и его почти никогда не делают первым.
Проверка результата без чтения кода Приём уже упоминался в главе про ревью, но здесь он на своём месте, потому что это тоже способ забрать контроль у модели.
Попроси агента объяснить обычными словами поток исполнения: откуда данные, куда идут, где принимаются решения. Пересказ подделать трудно, потому что описывать придётся то, что реально написано.
Код-проверки это не заменяет, но закрывает то, что проверками не ловится: расхождение реализации с замыслом.
Детерминированные проверки вместо уговоров
ЧТО ПЕРЕВЕСТИ В КОД НА СВОЁМ ПРОЕКТЕ 1. Выпиши из правил проекта все строки со словами всегда, никогда, обязательно. 2. Для каждой спроси: могу ли я написать проверку, которая отвечает да или нет? 3. Где можешь, напиши и повесь на событие. 4. Строку из правил после этого удали. Две реализации одного требования разъедутся. 5. Проверь, что нарушение возвращает понятную ошибку в сессию, а не молчаливый отказ.
Что запомнить Управление через правила ненадёжно: агент выполняет букву и нарушает смысл.
Запрет без предоставленного правильного пути рождает изворотливость, а не качество.
Проверку не должен писать тот, кого проверяют.
Слово всегда в инструкции это признак, что перед тобой код, а не текст.
Формат, описанный словами, нарушается в одном случае из десяти и формулировкой не лечится.
Архитектурные требования выражай линтером, а не просьбой.
И прежде чем менять модель, проверь, не мешает ли ей твоя собственная обвязка.
← Эвалы · оглавление · Сколько полировать →
Спросить книгу может любой, кто вошёл в Neuraldeep Hub: агент ищет ответ по тексту и приводит цитату со ссылкой на главу.