中文翻译暂不可用,显示俄语原文。

Как оценивать 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, если используются внешние сервисы$

Хорошая траектория = мало шагов, низкий токен-билл, быстро.

Пример сравнения двух агентов на задаче «Забронировать билет»:

АгентStepsTokensTime (сек)Result
A8450012Success
B15720022Success (но больше ресурсов)

Агент 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 для параллельного запуска.

Шаги

  1. Создать среду RestaurantEnv с состояниями: initial -> search -> choose -> book -> confirm.
  2. Определить экспертную траекторию (search -> choose -> book -> confirm).
  3. Реализовать агента на базе LLM с несколькими стратегиями (ReAct, план+исполнение).
  4. Запустить 100 эпизодов, собрать траектории.
  5. Рассчитать: milestone hit rate (search completed? date entered etc.), edit distance до эксперта, шаги, успешность.
  6. Визуализировать распределения.

Ожидаемый результат

Вы получите таблицу сравнения стратегий, например:

СтратегияSuccess RateAvg StepsTrajectory Similarity
ReAct0.855.30.78
Plan+Exec0.924.10.91

Вывод: Plan+Exec эффективнее и ближе к эксперту.


10. Связь с другими вопросами

ВопросТема
865Что такое Agentic RAG и чем отличается от обычного RAG?
868Как проектировать multi-agent системы?
871Как обеспечить воспроизводимость действий агента?
873Какие метрики использовать для оценки single-step агентов?
875Как тестировать агентов на новых доменах (zero-shot)?
736Общие подходы к оценке генеративных систем

11. Навигация


Навигация