Перейти к содержанию

Модуль 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. Средний балл вырос — казалось бы, прогресс. Но агрегат складывает починенное и сломанное в одно число и прячет регресс: задачу, которая раньше решалась, а теперь нет.

v1 v2 задача 1 задача 2 починилось задача 3 сломалось — регресс средний балл 2/3 2/3 тот же — регресс не виден

Регресс — это разница по задачам, а не разница средних. Это тот же приём, что трейс из модуля 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.

Что содержится внутри:

  1. Golden set и балл: собираем набор задач, прогоняем агента, считаем pass@1. Утверждение «работает» превращается в число, которое можно перепрогнать.
  2. Регресс: два прогона, разница по задачам. Средний балл вырос — а одна задача сломалась. Показываем, что агрегат это прячет.
  3. Гудхарт оценки: оптимизируем метрику напрямую — балл растёт, качество нет. И pass@k против pass@1: больше попыток надувают видимый успех.

Часть 2. Собственный golden set

Возьмите любую задачу, которую решаете агентом или моделью.

  1. Соберите 10 задач с эталонными ответами. Какие из них честно трудные, а какие вы подобрали потому, что агент их и так решает?
  2. Каким способом оценивать ответ: точным совпадением, по ключу, моделью-судьёй? В каком месте судья ошибётся?
  3. Внесите правку в агента, прогоните дважды и найдите разницу по задачам. Есть ли регресс?
  4. Что произойдёт с баллом, если начать подкручивать агента непосредственно под этот golden set?

Задание

  1. Реализуйте eval: функция берёт задачу и эталон, прогоняет агента, возвращает pass/fail. Посчитайте pass@1 по golden set.
  2. Сделайте два прогона агента и посчитайте разницу по задачам: починенные, сломанные, неизменные. Найдите случай, где средний балл вырос, а регресс присутствует.
  3. Добавьте модель-судью (заглушку) и покажите, как её обманывает длина ответа при неизменной сути.
  4. Постройте pass@k для k = 1, 2, 5 и покажите, что рост \(k\) надувает видимый успех без реального роста качества.
  5. Возьмите golden set в настройку: покрутите агента под него и покажите, как расходятся балл на нём и балл на отложенном наборе.

Проверка усвоения

  1. Что такое eval и какое утверждение он проверяет?
  2. Зачем нужен golden set и почему эталон нельзя использовать для настройки?
  3. Назовите три способа оценить ответ и слабое место каждого.
  4. Почему средний балл прячет регресс и каким образом его увидеть?
  5. С каким модулем рифмуется правило «эталон нельзя в настройку»?
  6. Почему pass@k при большом \(k\) вводит в заблуждение?
  7. Где ещё в курсе встречалась разница «шаг с шагом» вместо разницы итогов?

Что дальше

На этом замкнута часть VI: агент с читаемым трейсом (модуль 21), поиск с проверкой цитат (модуль 22) и оценка, которая ловит регресс, — это цикл разработки, а не разовый запуск. В части VII курс выходит на фронтир: как читать статью, как устроена область и лидерборды, как воспроизвести результат и как не отстать. Оценка из этого модуля — тот самый инструмент, которым читают чужие заявления.

Eval превращает «вроде работает» в число, которое можно перепрогнать; golden set — это база и отложенная выборка разом; регресс живёт в разнице по задачам, а не в среднем балле. Оценка — не отчёт в конце, а тест, который ловит поломку до пользователя.


Принцип

Средний балл складывает починенное и сломанное в одно число и прячет регресс. Разработка держится не на том, что метрика выросла, а на том, что вы знаете, какая именно задача сломалась.