Перейти к содержимому
Экосистема AI Vibe

Новости

Evals для агентов: пирамида тестов и Harbor на примере CLI

Редакция 12 ноября 2026 г.

Агент в песочнице повторяет заказ кофе через CLI, пока верификатор сверяет напиток, время и бюджет с запросом пользователя.

Если агент ходит в ваш API, CLI или MCP-сервер, логи могут быть зелёными, а заказ — не тот: горячий латте вместо айсед. Eval отвечает на другой вопрос — как часто финал совпадает с запросом пользователя, если гонять одни и те же сценарии до и после правки промпта, тулов или skills.

Воронка как у человека: Discovery, Selection, Access, Success. Для продуктов с ботами чаще всего важна последняя стадия — довёл ли агент дело до правильного итога. Из‑за разброса ответов LLM одного ручного прогона мало: нужны повторы и сводка по исходам.

Пирамида по числу вызовов модели

Обычный тест — «сработало?», eval — «как часто и насколько хорошо». Уровни:

  • детерминированные тесты — 0 вызовов LLM;
  • one-turn evals — одно решение за один вызов;
  • E2E evals — вся цепочка, 2+ вызова; для Success важен этот верх.

Нижние слои дешевле, их должно быть больше. Отдельный шаг может выглядеть разумно, а заказ всё равно мимо — для такого сценария берут E2E. SWE-bench и Terminal-Bench — известные примеры.

Цифры на вымышленном CLI sfbeans

Демо — заказ кофе в Сан‑Франциско: агент сверяет температуру, бюджет с налогом и чаевыми и время pickup. Пять прогонов Claude Code с Opus 5.5 через AI Gateway: success rate 60%, три pass из пяти.

Pass@5 ≈ 99% — за пять попыток почти наверняка один раз верно; Pass^5 ≈ 8% — пять удач подряд. Для ежедневного заказа кофе важнее Pass^k (перезапуска нет), для coding-агента с тестами — Pass@k (провал дешёв, есть retry).

Harbor: среда, прогоны, верификатор

E2E eval собирают на Harbor — open-source от авторов Terminal-Bench: агент в контейнере, trace с сообщениями, tool calls и итогом. Task — среда и проверка, Variant — модель и промпт, Trial — одна попытка, Run — все варианты × задачи × повторы.

  • iced-latte-mission — типичный заказ;
  • usual-unavailable — любимое кафе без напитка;
  • team-order — шесть напитков, бюджет $45;
  • impossible-request — корректный отказ.

После агента верификатор пишет скор в /logs/verifier/reward.json; check_orders.py ставит reward 1 только если все ограничения выполнены. Среду частично фиксируют — seeded cafes.json и 8:30 в sfbeans при реальном CLI. Интеграция Harbor с Vercel гоняет trials параллельно в Sandbox и кеширует окружения, чтобы CI не простаивал часами.

Источник: WTF are evals? How to test agents and the software they use.