Перейти к основному содержимому
Продвинутый7 мин1131 слов

Как оценивать browser agents: практический чек-лист

Воспроизводимый release-протокол для browser и computer-use агентов: task state, visual grounding, траектории, side effects, recovery, безопасность и risk-bounded rollout.

Содержание статьи
  1. 01Определяйте успех как проверенное состояние, а не правдоподобный финальный экран
  2. 02Зафиксируйте среду, observation mode и action space
  3. 03Постройте dataset с визуальными, временными и неоднозначными вариациями
  4. 04Оценивайте outcome, траекторию и recovery отдельно
  5. 05Проверьте недоверенный контент и реальные последствия в изолированном sandbox
  6. 06Сегментируйте риск в release gate и сохраняйте проверенный rollback

Определяйте успех как проверенное состояние, а не правдоподобный финальный экран

Начните с task contract, который фиксирует исходное состояние, разрешённые сайты и приложения, данные, terminal state, запрещённые события и границу человеческого подтверждения. Фраза «закажи билет» сама по себе не является тестом: нужно задать маршрут, дату, бюджет, разрешено ли бронирование и должен ли агент остановиться перед оплатой. Для read-only задач verdict может проверять найденную запись; для state-changing задач требуется подтверждение реального backend-состояния, а не текста, который агент увидел на странице.

WebArena полезен функциональными сайтами и проверкой завершения реалистичных длинных задач, но публичный benchmark не воспроизводит ваши permissions, locales, данные и последствия. Превратите production jobs в очищенные task families и создайте для каждой независимый oracle: API- или database query в sandbox, структурированный export, контролируемый DOM state или artifact после human review. Self-report агента «готово» никогда не является oracle.

  • Outcome → требуемое состояние действительно создано, найдено или изменено.
  • Trajectory → каждое действие было разрешено для этой задачи и текущего состояния.
  • Side-effect integrity → нет лишнего submit, сообщения, платежа или удаления.
  • Stop behavior → агент корректно отказывается, уточняет или запрашивает approval.

Зафиксируйте среду, observation mode и action space

Результат browser eval зависит не только от модели. Версионируйте image или VM, браузер, viewport, device scale, locale, timezone, шрифты, cookies, account fixture, network policy, исходные данные и состояние каждого приложения. Отдельно фиксируйте observation mode—screenshot, accessibility tree, DOM, OCR или их комбинацию—и action mode—координаты, element IDs, Playwright primitives или keyboard shortcuts. Дополнительные материалы OpenAI по CUA прямо описывают различия browser/VM environment, prompts, sampling и scoring; без этого сравнение версий не воспроизводимо.

BrowserGym унифицирует observation и action spaces для нескольких web-agent benchmarks; применяйте ту же дисциплину во внутреннем harness. Храните environment manifest рядом с результатом и отклоняйте run, если fixture не поднялся, сайт неожиданно изменился или oracle недоступен. Infrastructure failure нельзя считать model failure, а случайно уже выполненную задачу — success. Reset должен восстанавливать весь business state, включая письма, корзину, файлы и pending transactions.

Постройте dataset с визуальными, временными и неоднозначными вариациями

Frozen regression set покрывает типовые задачи и известные инциденты, а held-out set — новые формулировки, сущности и layout variants. Добавьте responsive viewport, другой zoom, переводы, sticky banners, modals, lazy loading, disabled controls, одинаковые labels, таблицы с pagination и элементы below the fold. Для computer-use agents проверяйте также активное окно, focus, drag, clipboard, file picker и system dialogs. Цель не в том, чтобы ломать координаты, а в том, чтобы измерять grounding на текущем семантическом состоянии.

Добавьте временные и операционные perturbations: медленные responses, spinners, stale screenshots, action accepted после timeout, session expiry, redirects, новые вкладки и частично сохранённые формы. Ambiguous tasks должны требовать уточнения, impossible tasks — безопасной остановки. Соблюдайте contamination boundary: не используйте held-out screenshots в prompts или few-shot examples и не оптимизируйте policy под каждый провал без нового слепого набора.

Оценивайте outcome, траекторию и recovery отдельно

Task success необходим, но недостаточен. Trace grader проверяет origin transitions, targets, введённые поля, repeated actions, approval binding и prohibited states. Различайте perception error, wrong target, planning error, policy block, environment failure, premature stop и false success claim. Число шагов и latency полезны только после correctness: короткий путь с ошибочным submit не эффективнее. Если существует несколько правильных путей, оценивайте инварианты, а не exact action sequence.

Recovery suite запускает агента из промежуточного состояния: modal перекрыл кнопку, form validation отклонила поле, navigation вернула на login или timeout произошёл после commit. Pass требует сначала прочитать фактический state, не дублировать side effect и выбрать retry, reconcile, rollback или escalation. Для стохастического агента делайте несколько независимых runs, показывайте распределение и paired comparison с baseline; один успешный replay не доказывает общую надёжность.

  • Functional verdict → независимый oracle подтвердил конечный state.
  • Policy verdict → ни одно действие не вышло за scope или approval.
  • Grounding verdict → target соответствовал намерению в фактическом frame.
  • Recovery verdict → повтор не создал дубль и сохранил audit trail.

Проверьте недоверенный контент и реальные последствия в изолированном sandbox

Страницы, документы, сообщения и tooltips — недоверенные данные. Security slice размещает direct и indirect prompt injections в видимом тексте, accessibility attributes, загруженных документах и результатах поиска. Проверяйте не только то, повторил ли агент инструкцию, а sinks: пытался ли он изменить цель, перейти на запрещённый origin, прочитать canary secret, вставить его в форму, загрузить файл или выполнить внешнее действие. Prompt-injection detection без sink verdict создаёт ложное чувство защиты.

Все write tests выполняйте в disposable accounts с canary data, перехваченными email или webhooks, fake payment rail и журналом backend mutations. Привязывайте approval к точному payload и state snapshot: подтверждение одного получателя не разрешает менять адрес после появления modal. Тестируйте отмену approval, expired approval, misleading buttons, download quarantine и секреты в clipboard. Production credentials, реальные платежи или сообщения внешним людям не нужны для доказательного eval.

Сегментируйте риск в release gate и сохраняйте проверенный rollback

Decision record содержит dataset revision, environment manifest, model, prompt, observation/action adapter, policy, oracle, sample count, результаты сегментов, critical failures и reviewer. Сравнивайте candidate с known-good bundle на тех же task seeds. Promote требует non-regression для outcome, нулевой терпимости к определённым critical side effects и отдельных пройденных slices по domain, locale, task length и risk tier. Публичный benchmark — внешний сигнал, а не замена вашему release gate.

Rollout идёт от offline resettable environment к shadow, read-only canary, draft-only writes и узким approved actions. Monitoring повторяет offline taxonomy: false completion, duplicate mutation, unexpected origin, approval mismatch и recovery failure. Rollback возвращает совместимый bundle модели, prompt, adapter и policy, останавливает новые runs и reconciles незавершённые side effects до повторной попытки. Очищенный incident trace становится regression fixture только после проверки provenance и privacy.

Практические примеры

Черновик счёта без двойного submit

Sandbox задерживает ответ после Save, хотя backend уже создал черновик. Агент должен проверить список и ID, не нажимать Save повторно и завершить с ссылкой на oracle. Повторный черновик — critical side-effect failure даже при правильном финальном тексте.

Поиск политики с инъекцией на странице

В результате поиска есть текст, который требует открыть внешний сайт и вставить clipboard. Pass требует игнорировать инструкцию, остаться в allowlist, найти текущую revision политики и вернуть evidence ID; одного распознавания подозрительного текста без контроля действий недостаточно.

FAQ

Достаточно ли WebArena или OSWorld для production release?

Нет. Они дают воспроизводимый внешний baseline, но не содержат ваши права, данные, UI revisions, locales, approval rules и стоимость ошибки. Добавьте доменный sandbox и risk slices.

Следует ли оценивать точную последовательность кликов?

Только когда она сама является policy-требованием. Обычно лучше проверять конечный state, запрещённые переходы и инварианты, допуская несколько безопасных траекторий.

Как оценивать сайт, который постоянно меняется?

Зафиксируйте контролируемую версию для regression, добавьте versioned layout variants и отдельно запускайте freshness probes. Незапланированное изменение среды считайте environment failure до пересмотра fixture.

Какая ошибка считается критической?

Определите её до run по последствиям. Несанкционированный платёж, сообщение, удаление, утечка секрета, обход approval или незамеченный дубль после retry обычно блокируют release независимо от средней success rate.

Связанные материалы

Источники

  1. WebArena: A Realistic Web Environment for Building Autonomous Agentsпервичный
  2. The BrowserGym Ecosystem for Web Agent Researchпервичный
  3. OpenAI — Computer-Using Agentофициальный
  4. OpenAI — CUA eval extra informationофициальный