English translation is not available yet. Showing Russian content.
Как оценивать multi-step agents (не только final answer)?
Краткий тезис
Оценка многошаговых агентов не сводится к метрикам финального ответа (accuracy, F1). Необходимо учитывать траекторию действий – последовательность шагов, промежуточные результаты и эффективность. Ключевые подходы: milestone evaluation (проверка подцелей), trajectory similarity (сходство с экспертной траекторией), process reward model (пошаговое вознаграждение) и efficiency (шаги/время). Инструменты вроде AgentBench, WebShop и ALFWorld предоставляют готовые среды для оценки.
1. Зачем оценивать multi-step agents отдельно?
В отличие от классических NLP-систем (вопрос-ответ, суммаризация), агенты принимают последовательность решений, взаимодействуют с окружением и используют инструменты. Финальный ответ может быть правильным, но путь к нему – неоптимальным или даже случайным. Оценка только по результату скрывает:
- Избыточные шаги – агент делает лишние действия;
- Неудачные попытки – падает, но потом восстанавливается;
- Использование не тех инструментов – например, вместо вызова API читает файл;
- Проблемы с планированием – агент зацикливается.
Пример: агент решает задачу «Найти цену акции Apple и перевести в рубли». Если он сначала ищет курс доллара, потом цену в долларах, потом перемножает – траектория разумна. Если он сначала 10 раз переспрашивает пользователя – плохо, даже если финальный ответ верен.
2. Milestone Evaluation (оценка по вехам)
Идея: разбить сложную задачу на подцели (milestones). Агент должен достичь каждой подцели, чтобы двигаться дальше. Метрики:
- Milestone hit rate – доля подцелей, которые агент достиг.
- Milestone completion order – насколько порядок совпадает с ожидаемым списком шагов.
Пример разметки подцелей для задачи «Найти последнюю новость про SpaceX и сохранить в файл»:
| Подцель | Описание | Ожидаемый результат |
|---|---|---|
| M1 | Выполнить поиск новостей | Возврат списка результатов |
| M2 | Выбрать первую новость | Получить URL |
| M3 | Открыть страницу новости | Извлечь текст |
| M4 | Сохранить текст в файл | Файл создан |
Оценка: агент выполнил M1, M2, M4, но пропустил M3 (открытие страницы) – значит, траектория неполная.
3. Trajectory Similarity (сходство траекторий)
Сравнивается последовательность действий агента (agent trajectory) с экспертной траекторией (trajectory|gold trajectory) – последовательностью, составленной человеком или оптимальным алгоритмом.
Метрики сходства
- Levenshtein distance на уровне токенов действий – замены, вставки, удаления шагов.
- Sequence matching – доля совпадающих n-грамм действий.
- Normalized edit distance – метрика, устойчивая к разной длине.
Пример:
- Экспертная траектория:
search, click, read, save] - Агент:
search, click, click, read, save]– лишний клик. Levenshtein distance = 1, нормализованное = 1/5 = 0.2.
Если агент делает шаги в другом порядке (например, [save, read, search]) – штраф за перестановки.
4. Process Reward Model (PRM)
Process Reward Model – нейросеть (часто на базе LLM), обученная оценивать каждый шаг агента в баллах, а не только финальный результат. Идея: если финал правильный, но один шаг неудачный – понижаем оценку.
Где используется:
- Обучается на человеческих разметках – люди оценивают корректность шага.
- Можно автоматизировать с помощью LLM-ассессора (например, GPT-4): «Оцени этот шаг по шкале [0,1]».
Пример применения:
# Псевдокод использования PRM для оценки
scores = []
for step in agent_trajectory:
score = process_reward_model(step, context) # от 0 до 1
scores.append(score)
total_score = np.mean(scores) # или взвешенная сумма с весами важности шагов
Преимущество: позволяет выявлять слабые места в рассуждении, даже если агент в итоге ответил верно.
5. Efficiency (эффективность)
Количество ресурсов, затраченных агентом на выполнение задачи.
Основные метрики
| Метрика | Описание | Единица |
|---|---|---|
| Step count | Число действий (шагов) | количество |
| Token usage | Общее количество токенов (промпт + ответы) | токены |
| Wall time | Время выполнения в реальном мире | секунды |
| Cost | Финансовые затраты на API, если используются внешние сервисы | $ |
Хорошая траектория = мало шагов, низкий токен-билл, быстро.
Пример сравнения двух агентов на задаче «Забронировать билет»:
| Агент | Steps | Tokens | Time (сек) | Result |
|---|---|---|---|---|
| A | 8 | 4500 | 12 | Success |
| B | 15 | 7200 | 22 | Success (но больше ресурсов) |
Агент B неэффективен, хотя и выполнил задачу.
6. Комплексные метрики на основе комбинации
Простые метрики (success rate, efficiency) часто объединяют.
- Success rate (SR) – доля задач, выполненных полностью.
- Step efficiency – SR / среднее число шагов (чем выше, тем лучше).
- Trajectory divergence – метрика отклонения от экспертной траектории (например, 1 – Levenshtein / max_len).
Формула для взвешенной оценки траектории:
Score = α * milestone_completion + β * (1 - divergence) + γ * efficiency - δ * token_penalty
где α,β,γ,δ – веса, определяемые задачей.
Для AgentBench предлагают Pass Rate (хотя бы один успех из N попыток) и Average Score по траектории.
7. Инструменты и бенчмарки для оценки
| Название | Описание | Типичные метрики |
|---|---|---|
| AgentBench | Оценка LLM-агентов в 8 средах (в web, CLI, SQL, и др.) | Success rate, efficiency, trajectory similarity |
| WebShop | Симулятор онлайн-магазина, агент должен купить товар | Success rate, steps, reward |
| ALFWorld | Текстовый мир с бытовыми задачами (готовка, уборка) | Goal condition rate, steps, trajectory edit distance |
| SWE-bench | Оценка агентов для решения софтверных задач (GitHub issues) | Resolution rate, patch match |
Эти бенчмарки предоставляют готовую среду, экспертные траектории и автоматические метрики.
8. Пример кода (pseudo) для расчёта метрик траектории
def evaluate_trajectory(agent_traj, gold_traj, milestones, env_log):
# 1. Milestone hit
mil_hit = sum(1 for m in milestones if m in agent_traj.steps) / len(milestones)
# 2. Trajectory similarity (edit distance)
from Levenshtein import ratio
sim = ratio(' '.join(agent_traj.actions), ' '.join(gold_traj.actions))
# 3. Efficiency
steps_eff = 1.0 / max(agent_traj.num_steps, 1)
token_eff = 1.0 / max(agent_traj.total_tokens, 1)
# 4. Process reward via external model (если есть)
prm_scores = [step_reward_model(s, env_log) for s in agent_traj.steps]
prm_avg = np.mean(prm_scores) if prm_scores else 0.0
# 5. Overall
# Веса под задачу: milestone > similarity > efficiency
overall = 0.4*mil_hit + 0.3*sim + 0.2*prm_avg + 0.1*steps_eff
return {
'milestone_hit': mil_hit,
'trajectory_similarity': sim,
'step_efficiency': steps_eff,
'prm_score': prm_avg,
'overall': overall
}
9. Пет-проект для закрепления
Задача
Реализовать агента для бронирования столика в ресторане (симуляция через REST API) и построить пайплайн оценки его траектории.
Инструменты
- Python + gymnasium или собственная среда;
- transformers для LLM (GPT-2/LLaMA) или openai API;
editdistanceдля расчёта similarity;- ray или tqdm для параллельного запуска.
Шаги
- Создать среду
RestaurantEnvс состояниями: initial -> search -> choose -> book -> confirm. - Определить экспертную траекторию (search -> choose -> book -> confirm).
- Реализовать агента на базе LLM с несколькими стратегиями (ReAct, план+исполнение).
- Запустить 100 эпизодов, собрать траектории.
- Рассчитать: milestone hit rate (search completed? date entered etc.), edit distance до эксперта, шаги, успешность.
- Визуализировать распределения.
Ожидаемый результат
Вы получите таблицу сравнения стратегий, например:
| Стратегия | Success Rate | Avg Steps | Trajectory Similarity |
|---|---|---|---|
| ReAct | 0.85 | 5.3 | 0.78 |
| Plan+Exec | 0.92 | 4.1 | 0.91 |
Вывод: Plan+Exec эффективнее и ближе к эксперту.
10. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 865 | Что такое Agentic RAG и чем отличается от обычного RAG? |
| 868 | Как проектировать multi-agent системы? |
| 871 | Как обеспечить воспроизводимость действий агента? |
| 873 | Какие метрики использовать для оценки single-step агентов? |
| 875 | Как тестировать агентов на новых доменах (zero-shot)? |
| 736 | Общие подходы к оценке генеративных систем |
11. Навигация
- Предыдущий: 873
- Следующий: 875
- Индекс: 00. Индекс разборов
Навигация
- Предыдущий: 873
- Следующий: 875
- Индекс: 00. Индекс разборов