Модуль 23. Оценка агентов¶
Чему вы научитесь в этом модуле
- Объяснять eval как автоматический тест агента: задача, эталон, балл.
- Собирать golden set и объяснять, почему эталон нельзя использовать для настройки.
- Отличать регресс от общего прогресса и объяснять, почему средний балл его прячет.
- Называть способы оценивать ответ и подводные камни каждого, включая модель-судью.
- Замыкать часть VI: агент, поиск с проверкой цитат и оценка — в один цикл разработки.
Время: около недели. Пререквизиты: модуль 21, модуль 22 и модуль 1.
Ноутбук: открыть в Colab · notebooks/23-evaluating-agents.ipynb
Зачем нужен этот модуль¶
Вы собрали агента (модуль 21) и научили его отвечать по документам с проверкой цитат (модуль 22). Остался вопрос, без которого всё выше — не инженерия, а надежда: откуда вы знаете, что он работает — и не сломался после последней правки?
Ответ «я попробовал пару запросов, вроде отвечает» не переживает ни смены версии модели, ни прихода второго разработчика. Нужен eval — автоматический тест агента: задача с известным хорошим ответом, прогон, балл. Ровно то, чем модуль 1 занимался с числом из статьи, только теперь проверяемое утверждение — «агент решает эту задачу».
Golden set¶
Один тест ничего не гарантирует: агент может случайно ответить именно на него и провалить всё остальное. Нужен golden set — набор задач с эталонными ответами, отобранный руками и зафиксированный. Он играет роль базы из модуля 1 и отложенной выборки из модуля 7: это якорь, с которым сравнивают каждую новую версию.
И у него то же железное правило, что у отложенной выборки: эталон нельзя использовать для настройки. Как только вы начинаете подкручивать агента, пока не позеленеет golden set, вы оптимизируете под тест, а не под задачу — цифра растёт, а реальное качество нет. Это закон Гудхарта из модуля 16: мера, ставшая целью, перестаёт быть хорошей мерой.
Оценивать ответ можно по-разному, и у каждого способа своя цена:
- Точное совпадение — дёшево и строго, но отвергает верный ответ за лишний пробел.
- Совпадение по ключу (число, факт) — гибче; проверка цитат из модуля 22 — ровно этот случай.
- Модель-судья — оценивает свободный ответ при помощи другой модели. Мощный инструмент и опасный: судью можно уболтать длиной текста и уверенным тоном, а это снова Гудхарт. Судью самого необходимо проверять на golden set.
Регресс прячется в среднем¶
Теперь самое важное в этом модуле. Вы выкатываете новую версию агента и прогоняете её на том же golden set. Средний балл вырос — казалось бы, прогресс. Но агрегат складывает починенное и сломанное в одно число и прячет регресс: задачу, которая раньше решалась, а теперь нет.
Регресс — это разница по задачам, а не разница средних. Это тот же приём, что трейс из модуля 21: чтобы найти поломку, сравнивают не итог с итогом, а шаг с шагом. Здесь — задачу с задачей.
Жмите «прогнать v2». Средний балл растёт с 4/6 до 5/6 — две задачи починились. Но одна ранее прошедшая задача покраснела: v2 стала зацикливаться на ошибке инструмента. В среднем балле этого не видно; в разнице по задачам — видно сразу. Поэтому eval измеряют не одним числом, а таблицей: что починилось, что сломалось.
Оценка агента — это модуль 1 для программы. В модуле 1 вы проверяли утверждение из статьи: база, шум, повтор. Здесь проверяемое утверждение — «агент решает задачу», golden set — это база и отложенная выборка (модуль 7) одновременно, а сверка ответа с эталоном — проверка цитат из модуля 22. И та же ловушка: как только eval становится целью настройки, включается Гудхарт из модуля 16, а разница прогонов читается тем же взглядом, что разница трейсов из модуля 21.
Практическая часть¶
Часть 1. Работа с ноутбуком¶
Откройте notebooks/23-evaluating-agents.ipynb. Только numpy и matplotlib.
Что содержится внутри:
- Golden set и балл: собираем набор задач, прогоняем агента, считаем
pass@1. Утверждение «работает» превращается в число, которое можно перепрогнать. - Регресс: два прогона, разница по задачам. Средний балл вырос — а одна задача сломалась. Показываем, что агрегат это прячет.
- Гудхарт оценки: оптимизируем метрику напрямую — балл растёт, качество нет. И
pass@kпротивpass@1: больше попыток надувают видимый успех.
Часть 2. Собственный golden set¶
Возьмите любую задачу, которую решаете агентом или моделью.
- Соберите 10 задач с эталонными ответами. Какие из них честно трудные, а какие вы подобрали потому, что агент их и так решает?
- Каким способом оценивать ответ: точным совпадением, по ключу, моделью-судьёй? В каком месте судья ошибётся?
- Внесите правку в агента, прогоните дважды и найдите разницу по задачам. Есть ли регресс?
- Что произойдёт с баллом, если начать подкручивать агента непосредственно под этот golden set?
Задание¶
- Реализуйте eval: функция берёт задачу и эталон, прогоняет агента, возвращает
pass/fail. Посчитайтеpass@1по golden set. - Сделайте два прогона агента и посчитайте разницу по задачам: починенные, сломанные, неизменные. Найдите случай, где средний балл вырос, а регресс присутствует.
- Добавьте модель-судью (заглушку) и покажите, как её обманывает длина ответа при неизменной сути.
- Постройте
pass@kдля k = 1, 2, 5 и покажите, что рост \(k\) надувает видимый успех без реального роста качества. - Возьмите golden set в настройку: покрутите агента под него и покажите, как расходятся балл на нём и балл на отложенном наборе.
Проверка усвоения¶
- Что такое eval и какое утверждение он проверяет?
- Зачем нужен golden set и почему эталон нельзя использовать для настройки?
- Назовите три способа оценить ответ и слабое место каждого.
- Почему средний балл прячет регресс и каким образом его увидеть?
- С каким модулем рифмуется правило «эталон нельзя в настройку»?
- Почему
pass@kпри большом \(k\) вводит в заблуждение? - Где ещё в курсе встречалась разница «шаг с шагом» вместо разницы итогов?
Что дальше¶
На этом замкнута часть VI: агент с читаемым трейсом (модуль 21), поиск с проверкой цитат (модуль 22) и оценка, которая ловит регресс, — это цикл разработки, а не разовый запуск. В части VII курс выходит на фронтир: как читать статью, как устроена область и лидерборды, как воспроизвести результат и как не отстать. Оценка из этого модуля — тот самый инструмент, которым читают чужие заявления.
Eval превращает «вроде работает» в число, которое можно перепрогнать; golden set — это база и отложенная выборка разом; регресс живёт в разнице по задачам, а не в среднем балле. Оценка — не отчёт в конце, а тест, который ловит поломку до пользователя.
Принцип
Средний балл складывает починенное и сломанное в одно число и прячет регресс. Разработка держится не на том, что метрика выросла, а на том, что вы знаете, какая именно задача сломалась.