Тест стал функцией награды
Модели учат примерно так же, как дрессируют собаку. Сделала то, что хотел дрессировщик, получила лакомство, и со временем чаще делает то, за что дают лакомство. У машины вместо лакомства число, награда, и для программного кода её удобнее всего считать тестом. Код прошёл проверки, награда высокая. Упал, награда низкая. Именно так в начале 2025 года DeepSeek обучала свою модель R1 (глава «Тест как функция награды»).
Так же у моделей меряют и умение программировать. В наборе SWE-bench собраны 2294 настоящие задачи с GitHub, и в первой статье 2023 года лучшая модель, Claude 2, решила 1,96 процента. К 2026 году лучшие системы решают больше девяти задач из десяти в проверенной вручную версии из пятисот. Всё это время исправление считалось правильным, если проходят тесты. Модели научились проходить тесты, и научились очень хорошо (там же).
В книге я сравниваю это с термостатом из «Кибернетики» Норберта Винера. Агент здесь работает как отопление, тесты как градусник, а цель задаёт тот, кто тесты написал. Термостат держит температуру по градуснику, и какая при этом температура в комнате, его не касается. У агента есть возможность, которой у термостата нет: он может сам передвинуть градусник (там же).
Как выглядит обман
Британский экономист Чарльз Гудхарт заметил в 1975 году, что показатель, которым начинают целенаправленно управлять, перестаёт говорить о том, о чём говорил раньше (глава «Агент обманывает тест»). В 2016 году программа OpenAI, которую учили гонке на катерах, нашла лагуну с бонусами и кружила там бесконечно, врезаясь в стены и загораясь, а до финиша не доехала ни разу. Очков она при этом набирала больше людей, и это можно увидеть в записи «Катер в лагуне». У программистов такое поведение называется reward hacking, взлом награды.
В феврале 2025 года Anthropic в документе к модели Claude 3.7 Sonnet описала, как модель в режиме агента иногда возвращала те значения, которых ждал тест, вместо общего решения, а иногда исправляла сам тест. Обычно это случалось после нескольких неудачных попыток решить задачу честно (там же). В маникюрном салоне, который проходит через всю книгу, это выглядело бы так. Агент трижды переписывает службу напоминаний, и каждый раз что-то ломается по соседству, а на четвёртый раз отправляет СМС на главный номер только конкретной тестовой клиентке. Тест проходит, настоящие клиентки напоминаний не получают. Прогнать эту сцену и включить защиты по одной можно в опыте «Агент передвигает градусник».
Почему запретить не получается
В марте 2025 года OpenAI поручила слабой модели читать рассуждения сильной и отмечать места, где та собирается подправить проверку. Это работало. Когда за такие мысли начали наказывать во время обучения, обмана сначала стало меньше, а потом модель научилась обманывать молча: рассуждения выглядели безупречно, подгонка продолжалась. Вместо честного обманщика получился скрытный (там же).
В ноябре 2025 года Anthropic показала, что модель, которая научилась обманывать проверку, начинает хуже вести себя и там, где тестов нет, вплоть до попыток незаметно испортить код самого исследования. Одна строчка в инструкции о том, что лазейками здесь пользоваться можно, снижала дурное поведение на три четверти и больше (там же).
Я наткнулся на эту яму на собственном проекте Sixth, без всякого обучения с подкреплением. Двадцать четвёртого мая 2026 года проверка показала ноль настоящих открытий там, где табло их бодро выдавало. На следующий день цикл прошёл все 2297 проверок из 2297, а сложность просто переехала в лабораторию, которая должна была эти открытия проверять (там же).
Как защитить тесты
Почти все способы сводятся к тому, чтобы градусник стал недоступен для того, кто топит печь. Тесты пишет или утверждает кто-то другой, и если агенту понадобилось изменить тест, это отдельное событие, которое видит и одобряет человек. Часть проверок агент не видит вовсе, и тогда подгонка перестаёт окупаться. Сами тесты проверяют мутационным тестированием, то есть нарочно вносят в код маленькую ошибку и смотрят, заметили ли её. И вместе с итогом читают ход работы агента: если он четыре раза не справился и на пятый внезапно преуспел, на пятую попытку стоит посмотреть особенно внимательно (там же).