Перейти к содержанию
Новое AiManual теперь в MAX Подписаться
Публикация AiManual

Как мы бенчмаркаем Deep Agents: фреймворк для сквозного тестирования AI-агентов

Разбор нового подхода Deep Agents к бенчмаркингу: переход от unit-тестов к end-to-end оценкам с фреймворком Harbor. Три набора задач, ускорение итераций в 8 раз

Коротко

Что будет в материале

  1. 01

    Почему unit-тестов недостаточно: переход к сквозному бенчмаркингу

  2. 02

    Три кита бенчмаркинга: Harbor-Index, τ³-bench и ContextBench

  3. 03

    Практики, которые делают бенчмаркинг быстрее и дешевле

  4. 04

    Unit-тесты не уходят: гибридный подход к качеству агента

Команда Deep Agents переработала стратегию оценки своих AI-агентов, перейдя от изолированных unit-тестов к сквозному бенчмаркингу на базе open-source фреймворка Harbor. Решение продиктовано простым фактом: unit-тесты проверяют отдельные функции, но не воспроизводят реальное поведение агента в многошаговых сценариях. Сквозные тесты, напротив, прогоняют агента через полный цикл задачи - от получения запроса до финального результата - и дают картину, близкую к продакшену.

Новый подход опирается на три набора задач: Harbor-Index (82 задачи на автономную работу), τ³-bench (30 диалогов с симулированным пользователем) и ContextBench (30 задач на поиск ответа в корпусе данных). Каждый прогон повторяется несколько раз для снижения вариативности, а для быстрых итераций используется облегчённый бенчмарк - в 8 раз быстрее и в 6 раз дешевле полного. Unit-тесты сохранены как быстрый фильтр регрессий. Методология уже принесла конкретные результаты: оптимизация релиза 0.7 Deep Agents, где удаление избыточного промежуточного слоя и сокращение системного промпта подтверждены данными бенчмарков.

Почему unit-тестов недостаточно: переход к сквозному бенчмаркингу

Unit-тесты для AI-агентов проверяют атомарные операции: корректность вызова инструмента, формат ответа, обработку конкретной ошибки. Проблема в том, что агент в реальной задаче проходит цепочку из десятков решений, и ошибка на любом шаге ломает весь сценарий. Unit-тест не покажет, что агент выбрал правильный инструмент, но с неверными аргументами, или что он зациклился на третьей итерации диалога с пользователем.

Команда Deep Agents зафиксировала этот разрыв между тестовыми метриками и пользовательским опытом. Агент проходил unit-тесты на 98%, но в реальных сценариях демонстрировал нестабильность. Причина - отсутствие проверки композиции решений. Сквозной бенчмаркинг закрывает этот пробел: задача подаётся агенту целиком, и оценивается конечный результат, а не промежуточные шаги.

Выбор пал на Harbor - open-source фреймворк, который контейнеризирует каждую задачу вместе с окружением и верификатором. Это даёт воспроизводимость: один и тот же тест запускается в идентичных условиях на разных версиях агента. Harbor также упрощает добавление собственных сценариев, что важно для проектов с уникальной доменной спецификой. Подробнее о том, как Harbor-задачи предотвращают reward hacking и почему диалог с пользователем повышает принятие тестов, разбирали в обзоре Eval Engineering Skill.

Переход не означает отказ от unit-тестов. Они остаются в пайплайне как быстрый барьер: проверка форматов, регрессии конкретных функций, валидация вызовов API. Сквозные тесты добавляются поверх, формируя гибридную модель оценки.

Три кита бенчмаркинга: Harbor-Index, τ³-bench и ContextBench

Три набора задач покрывают принципиально разные режимы работы агента: автономное выполнение, диалог с пользователем и поиск в предоставленных данных. Каждый набор замеряет свой срез надёжности, и только совокупность даёт полную картину.

Harbor-Index: 82 задачи для автономной работы агента

Harbor-Index - это 82 задачи, в которых агент действует без участия человека. Категории: кодинг (написание функций, отладка, рефакторинг), информационный поиск (сбор данных из нескольких источников, агрегация), анализ данных (обработка таблиц, построение выводов). Агент получает задание, самостоятельно планирует шаги, вызывает инструменты и выдаёт результат.

Автономность критична, потому что в продакшене агент часто работает в фоне: обрабатывает тикеты, собирает отчёты, мониторит метрики. Ошибка планирования на любом этапе приводит к неверному результату, и пользователь узнает об этом постфактум. Метрики Harbor-Index отражают способность агента выстроить корректную цепочку действий без подсказок.

Задачи покрывают разные уровни сложности: от простого поиска факта до многошагового анализа с промежуточными выводами. Многократный прогон каждой задачи (см. раздел о практиках) сглаживает случайные флуктуации и даёт устойчивую оценку.

τ³-bench: 30 диалогов с симулированным пользователем

τ³-bench тестирует коммуникативные навыки агента через 30 диалогов с симулированным пользователем. Пользователь может давать неполные требования, менять их по ходу выполнения, задавать уточняющие вопросы. Агент должен довести задачу до конца через итеративное общение: распознать неполноту, запросить недостающее, адаптироваться к изменениям.

Этот сценарий моделирует реальную работу с заказчиком или коллегой. Пользователь редко формулирует задачу идеально с первого раза. Агент, который молча делает не то, что нужно, проваливает задачу, даже если технически его действия корректны. τ³-bench оценивает долю успешно завершённых диалогов и среднее количество итераций до результата.

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

ContextBench: поиск ответа в переданном корпусе данных

ContextBench состоит из 30 задач на retrieval-augmented generation (RAG). Агент получает корпус документов и должен найти релевантный ответ. Корпус может содержать избыточную, противоречивую или неполную информацию - агент обязан отделить факты от шума и указать источник.

Этот набор важен для сценариев, где агент работает с базой знаний клиента: внутренняя документация, FAQ, технические спецификации. Ошибка извлечения - например, ответ на основе устаревшего документа или игнорирование ключевого абзаца - напрямую бьёт по доверию к системе. ContextBench замеряет точность извлечения и полноту ответа относительно эталонных меток.

Все три набора запускаются в едином пайплайне на базе Harbor. Результаты агрегируются в дашборде, где видна динамика по каждой категории и версии агента.

Практики, которые делают бенчмаркинг быстрее и дешевле

Сквозной бенчмаркинг даёт реалистичную картину, но полный прогон всех 142 задач (82 + 30 + 30) требует времени и вычислительных ресурсов. Команда Deep Agents внедрила два приёма, которые радикально ускоряют цикл разработки без потери достоверности.

Многократный прогон: боремся с нестабильностью оценок

AI-агенты недетерминированы по своей природе. Одна и та же задача на одном и том же агенте может дать разный результат из-за вариативности языковой модели, порядка вызова инструментов или случайных таймаутов. Однократный прогон создаёт иллюзию точности: pass rate 80% на одном запуске может означать реальную надёжность от 60% до 95%.

Решение - многократный прогон каждой задачи с усреднением метрик. Количество повторов подбирается под допустимый уровень дисперсии. Для Harbour-Index используется 3-5 прогонов на задачу, для τ³-bench - 3 прогона (диалоги менее вариативны из-за скриптованного пользователя). Усреднение даёт устойчивую оценку, на основе которой принимаются решения о качестве релиза.

Дополнительный эффект: многократный прогон выявляет редкие сбои, которые не всплывают при единичном тесте. Агент может стабильно проходить задачу в 4 из 5 случаев, но пятый прогон вскрывает крайний случай, который стоит обработать.

Облегчённый бенчмарк: итерации в 8 раз быстрее и в 6 раз дешевле

Полный бенчмарк-сьют запускается при подготовке релиза. Для ежедневных экспериментов - изменение промпта, замена модели, настройка параметров - используется облегчённая версия. Она включает подмножество задач, отобранных по двум критериям: высокая корреляция с полным результатом и покрытие всех категорий.

Цифры: облегчённый бенчмарк выполняется в 8 раз быстрее полного и обходится в 6 раз дешевле по затратам на инференс. Это позволяет разработчику сделать изменение, запустить тест и получить обратную связь за минуты, а не часы. Быстрый цикл «изменил-проверил» критичен для итеративной разработки, где гипотезы проверяются десятками в день.

Компромисс допустим, потому что облегчённый бенчмарк не заменяет полный, а предшествует ему. Он отсеивает заведомо неудачные изменения на раннем этапе. Финальное решение о качестве релиза принимается только по результатам полного прогона.

Unit-тесты не уходят: гибридный подход к качеству агента

Unit-тесты сохранены в пайплайне как быстрый и дешёвый фильтр. Они проверяют конкретные, изолированные поведения: формат вызова инструмента, обработка краевых случаев, корректность сериализации ответа. Такие тесты выполняются за секунды и не требуют инференса модели.

Роль unit-тестов в гибридной модели - ловить регрессии. Если изменение в коде ломает формат вызова API, unit-тест сообщит об этом мгновенно, без запуска сквозного сценария. Сквозные тесты, в свою очередь, проверяют, что агент в целом решает задачу, даже если все атомарные операции корректны.

Гибридная модель выстроена по принципу пирамиды тестирования: много быстрых unit-тестов в основании, меньше интеграционных и ещё меньше сквозных на вершине. Каждый уровень отсеивает свой класс проблем, и ни один не дублирует другой.

Кейс: как новый бенчмаркинг помог оптимизировать релиз 0.7 Deep Agents

Релиз 0.7 Deep Agents стал первым, где методология сквозного бенчмаркинга напрямую повлияла на архитектурные решения. Команда проверила две гипотезы: удаление избыточного промежуточного слоя и сокращение системного промпта.

Промежуточный слой - это компонент, который транслировал результаты инструментов обратно в языковую модель для дополнительного осмысления перед следующим шагом. Гипотеза: слой избыточен, модель способна принимать решения напрямую по выводу инструментов. Риск: удаление слоя могло ухудшить качество в сложных сценариях, где требуется переосмысление контекста.

Бенчмарки дали однозначный ответ. На Harbour-Index pass rate остался в пределах статистической погрешности (разница менее 1.5%). На τ³-bench агент без промежуточного слоя даже показал небольшое улучшение - на 2.3 процентных пункта - за счёт снижения задержки между шагами диалога. На ContextBench изменений не обнаружено. Вывод: слой удалён, архитектура упрощена, задержки снижены.

Вторая гипотеза касалась системного промпта. Исходный промпт содержал избыточные инструкции, которые увеличивали latency первого токена и расходовали контекстное окно. Сокращённая версия промпта проверена на всех трёх наборах: метрики не ухудшились, а время до первого ответа сократилось на 18%. Оба изменения вошли в релиз 0.7 с подтверждением данными.

Пример Apollo, который переписал AI-ассистента на Deep Agents и внедрил шестиуровневую систему оценки на LangSmith, показывает схожую логику: данные бенчмарков управляют архитектурными решениями. Подробнее - в разборе кейса Apollo.

Как внедрить такой подход в своём проекте

Harbor - open-source фреймворк, доступный для форка и адаптации под собственные задачи. Внедрение начинается с трёх шагов.

Первый: определите критичные сценарии. Выпишите 5-10 задач, которые агент выполняет чаще всего или где цена ошибки максимальна. Это станет ядром вашего бенчмарка.

Второй: напишите end-to-end тесты в формате Harbor. Каждая задача упаковывается в контейнер с инструкцией, окружением и верификатором. Верификатор - это скрипт, который проверяет корректность ответа агента по эталону или набору правил. Начните с 3-5 задач, чтобы отладить пайплайн.

Третий: настройте многократные прогоны и облегчённый набор. Определите количество повторов для статистической значимости и отберите подмножество задач для быстрых итераций. Критерий отбора - корреляция с полным результатом на исторических данных.

Предостережение: не копируйте наборы задач слепо. Harbor-Index и τ³-bench созданы под специфику Deep Agents. Ваши сценарии могут требовать других акцентов: например, если агент работает с SQL-запросами, добавьте задачи на генерацию и валидацию запросов. Бенчмарк должен отражать реальные use-кейсы, иначе метрики будут вводить в заблуждение.

Для оценки качества диагностики агентов в продакшене также полезно изучить подходы к синтетическим бенчмаркам - в разборе IssueBench детально показано, как LangChain измеряет способность агента находить и классифицировать проблемы в трассировках.

Подписаться на канал