Комбинация офлайн-бенчмарков и онлайн-оценок ведет к ежедневному циклу улучшения агента
Формируется ежедневный цикл улучшения агента: офлайн-оценки предотвращают регрессии, а онлайн-оценки позволяют быстро реагировать на проблемы и постоянно прогрессировать.
Видео-источник
Комбинация офлайн-бенчмарков и онлайн-оценок ведет к ежедневному циклу улучшения агента
Связка 1
Начальное состояние: Цикл улучшения агента полагается только на офлайн-бенчмарки (например, SubiBench), которые не отражают реальное использование и не дают быстрой обратной связи.
Преобразование: Внедрение комбинации офлайн-бенчмарков (как стоп-кран перед релизом) и онлайн-оценок на основе A/B-тестирования и кластеризации трейсов из продакшена, с анализом результатов и повторным изменением кода.
Конечное состояние: Формируется ежедневный цикл улучшения агента: офлайн-оценки предотвращают регрессии, а онлайн-оценки позволяют быстро реагировать на проблемы и постоянно прогрессировать.
Итак, что мы делаем, так это используем комбинацию офлайн-оценок — очень похожих на SubiBench и другие известные в этой области бенчмарки — а также онлайн-оценки на основе использования системы. Что мы хотим, чтобы наши оценки отражали?
В первую очередь, они должны оптимизировать то, что важно для наших пользователей, а не просто сообщать, правильно ли агент редактирует код. Они также должны немедленно указывать на то, что ломается, и это должно информировать нас о том, что следует улучшать в агенте в следующую очередь. Что попадает в этот черный ящик? Мы строим новую систему, которая позволяет нам постоянно вносить улучшения. Система выглядит следующим образом.
У нас есть две опоры. С одной стороны, у нас есть стандартные старые добрые бенчмарки. Обычно они используются перед выпуском новой версии агента. Думайте о них как о своего рода стоп-кране, как о шлюзе, который решает, стоит ли запускать новую версию. Если есть серьезная регрессия на офлайн-бенчмарке, вы, конечно, останавливаете релиз.
Если изменений нет или они положительные, вы знаете, что можно продолжать. Но часть, которая более интригует и помогает нам постоянно прогрессировать, заключается в том, что мы проводим много A/B-тестирования. А также мы кластеризуем все трейсы, полученные в продакшене. И пытаемся извлечь из них инсайты. В этом случае онлайн-опора работает уже после того, как вы выпустили версию агента. И она заставляет вас реагировать как можно быстрее.
И цикл здесь такой: когда обе опоры на месте, вы анализируете результаты, которые они дают. Вы, скорее всего, снова меняете код, запускаете оценки, и так по кругу. И это цикл, который мы проходим каждый день.
Я упоминал об этом ранее. И хочу кратко объяснить, почему мы работаем над чем-то более мощным, чем SuiteBench, или, по крайней мере, более адаптированным к нашему случаю использования. Такие инструменты, как WeBench и Minival, сыграли ключевую роль в нашей области, позволив нам подняться по ним и сделать модели более мощными. Но в конечном итоге все они следуют одному и тому же протоколу. Вы убеждаетесь, что код сгенерирован и соответствует запросу пользователя. Затем вы применяете патч к своему репозиторию. Вы запускаете тест. Если тесты проходят, вы получаете более высокий балл в бенчмарке. Это не отражает того, что происходит в байт-кодинге. Как я упоминал ранее, пользователи не пишут тесты. Они часто начинают с полностью пустой кодовой базы. Так что нет сценария, где можно просто применить патчи. Вы строите всё с нуля. Поэтому нам нужно улавливать другое: делает ли приложение то, что хочет пользователь? Таким образом, существует разрыв в функциональной корректности между тем, что предоставляет Zuibench, и тем, над чем мы работали. И сегодня на сцене я запускаю ByteBench. Это новый публичный бенчмарк для сквозного байт-кодинга, над которым мы работали несколько месяцев. Я расскажу вам все подробности после URL и так далее. Но давайте начнем с настройки бенчмарка. Входные данные — это просто PRD. Буквально длинный промпт, описывающий, как создать приложение. Вместо того чтобы создавать их из синтетических данных, мы выбрали 20 реальных трейсов из использования Rapid, просто описания на простом английском без каких-либо ограничений по реализации. Затем у нас есть обвязка, которая строит приложение от начала до конца, то есть от пустого репозитория до чего-то функционального. И ключевая идея в том, что вместо того, чтобы останавливать бенчмарк на этом и затем привлекать людей для оценки результатов этих PRD, мы построили автоматизированные оценщики. Это позволяет перейти от бенчмарка, который вы запускаете, возможно, еженедельно, к чему-то, что можно запускать каждый раз. Буквально, когда в ваш репозиторий добавляется новый PR. И, как вы можете себе представить, у нас есть ИИ, выполняющий все оценки за нас.