Как мы бенчмаркаем Deep Agents

Как мы бенчмаркаем Deep Agents

@ai_longreads

LangChain рассказывает, как перестроила систему оценки своего агентного каркаса Deep Agents: end-to-end бенчмарки на базе Harbor, три набора задач под разные типы работы и практики, которые позволяют принимать решения о развитии агента с уверенностью.

Это AI-перевод статьи, сделанный каналом Про AI: Лучшие Статьи и Исследования.


Как мы бенчмаркаем Deep Agents

How We Benchmark Deep Agents Автор: LangChain OSS Оригинальный текст:

Проектировать агентов сложно — и не в последнюю очередь потому, что сложно их оценивать. По мере того как мы развиваем Deep Agents, наш агентный каркас с открытым исходным кодом, не зависящий от конкретной модели, мы постоянно сталкиваемся с множеством решений: как формулировать промпты, какие инструменты включать, какое middleware добавлять и так далее. Итерируя, мы хотим иметь надёжный набор оценок, относительно которого можно бенчмаркать наши решения. Недавно мы переработали нашу систему оценки, и в этой статье расскажем, как мы подходим к оценке Deep Agents.

End-to-end оценки с Harbor

Наша недавняя работа над оценкой сосредоточилась вокруг формирования набора end-to-end оценок (сквозных, от начала до конца). Раньше у нас были более мелкие тесты «юнит»-стиля. Они у нас по-прежнему есть, но по мере того, как мы видим, что агентные задачи становятся всё более длительными, мы сместились в сторону более сквозных оценок.

Чтобы этого добиться, мы использовали Harbor в качестве раннера оценок. Harbor — популярный фреймворк с открытым исходным кодом для запуска агентных оценок, наиболее известный тем, что на нём работает Terminal Bench (ведущий бенчмарк (эталонный тест) по кодингу).

Чтобы использовать Harbor, вы предоставляете три вещи:

  • Вашего агента: мы бенчмаркаем Deep Agents
  • Ваш датасет: см. раздел ниже
  • Вашу песочницу: мы запускаем оценки Harbor как локально, так и в LangSmith Sandboxes

Каждый датасет содержит задачи, которые состоят из:

  • Окружения (Dockerfile / Docker Compose YAML)
  • Инструкции (Markdown)
  • Скрипта оценки (test.sh)

По сравнению с более простой оценкой LLM здесь есть два главных отличия:

  • Окружение, в котором работает агент, очень важно — настолько важно, что его необходимо выделить как часть задачи! Более простым оценкам LLM окружение не нужно — они просто вызывают LLM. Агентам — нужно!
  • Оценка агента выполняется скриптом. Зачастую агент создаёт другие файлы или тем или иным образом изменяет состояние. Недостаточно просто посмотреть на финальный ответ агента — нужно смотреть на артефакты, которые он создаёт по ходу дела.

Три бенчмарка, по одному на каждый тип работы

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

  • Harbor-Index: автономная сквозная работа, 82 задачи, отобранные Harbor более чем из 6 000 кандидатов по 54 бенчмаркам, охватывающие разработку ПО, поиск, анализ данных и длительное использование инструментов
  • 𝜏³-bench: диалог, подмножество из 30 задач, покрывающее многоходовой диалог, где пользователь симулируется, но оценка проверяет реальные результаты
  • ContextBench: поиск информации, 30 откалиброванных задач, каждая из которых поставляется вместе со всем своим корпусом внутри песочницы, так что агенту приходится самому находить и связывать данные для ответа

Это только начало — со временем мы будем расширять эти наборы задач.

Что работает у нас

Несколько практик, на которые мы опираемся:

  1. Запускайте каждую задачу несколько раз. Поскольку агенты, которых мы бенчмаркаем, недетерминированы по своей природе, разброс достаточно велик, и одного запуска часто недостаточно, чтобы получить хорошо откалиброванную оценку.
  1. Держите «облегчённый» (lite) бенчмарк для быстрых итераций. У нас это зафиксированное подмножество, смещённое в сторону сложной, но решаемой границы возможностей. Этот «облегчённый» бенчмарк примерно в 8 раз быстрее и в 6 раз дешевле полного. Прогонять полный набор по каждой модели дорого, поэтому во время итераций мы тянемся именно к lite, а полный прогон приберегаем для случаев, когда это действительно важно.
  1. Держите набор проверок возможностей рядом с бенчмарками. Это быстрые детерминированные юнит-тесты, каждый из которых нацелен на конкретное поведение каркаса — например, выбор инструментов, память или файловые операции. Это слой юнит-тестов по отношению к интеграционному слою бенчмарков.

Итерировать с уверенностью

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

Конкретный пример — то, как мы использовали это при подготовке релиза 0.7 Deep Agents. В рамках этого релиза мы стремимся облегчить каркас и убрать промптинг, который когда-то, возможно, был необходим, но больше таковым не является. Для того, кто запускает Deep Agents, это окупается: меньше токенов (единиц текста) на прогон и больше внимания модели на тех инструкциях, которые написал он сам.

Два конкретных изменения, которые мы рассматриваем: удаление middleware со списком задач (todo-list) и существенное сокращение системного промпта. Мы используем этот бенчмарк, чтобы помочь решить, всё ли ещё нужны эти включения агентному каркасу или уже нет.


Подпишитесь на канал и каждый день читайте лучшие материалы про AI переведенные на русский!

Нашли интересную статью для перевода? Пришлите нашему боту: @ailongreadsbot

Report Page