Перейти к содержанию

Метрики агентов

Eval AI Library предоставляет специализированные метрики для оценки AI-агентов -- систем, которые используют инструменты (tools), поддерживают многоходовые диалоги и автономно выполняют задачи пользователя.

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

Доступные метрики

Метрика Что измеряет Вызовы LLM Порог по умолчанию
Корректность инструментов Были ли вызваны правильные инструменты 0 0.5
Успешность задач Была ли достигнута цель пользователя (чек-лист) 2–4 0.7
Достижение цели Действительно ли пользователь получил то, что хотел (результат) 3–4 0.7
Естественность диалога Насколько естественным и связным получается диалог 1 0.7
Детекция повторяющихся паттернов Не застрял ли агент в цикле 1 0.7
Поведение при неуверенности Как агент обрабатывает неуверенность (честный отказ vs галлюцинация) 1 0.7
Следование роли Насколько хорошо ИИ поддерживает свою роль 2 0.7
Сохранение знаний Насколько хорошо запоминается контекст между ходами 2 0.7
Детекция ошибок инструментов Ошибки в использовании инструментов/функций 1 0.7

Тестовые кейсы для агентов

Агентские метрики работают с двумя типами тестовых кейсов: одноходовыми (single-turn) для оценки использования инструментов и многоходовыми (multi-turn) для оценки диалогового поведения.

Одноходовой (использование инструментов)

В одноходовом сценарии вы указываете, какие инструменты были вызваны агентом (tools_called) и какие ожидались (expected_tools):

from eval_lib import EvalTestCase

test_case = EvalTestCase(
    input="Book a flight to Paris for next Monday",
    actual_output="I've booked a flight to Paris for next Monday, March 10th.",
    tools_called=["search_flights", "book_flight"],
    expected_tools=["search_flights", "book_flight"],
)

Многоходовой (диалог)

Для оценки диалогового поведения используется ConversationalEvalTestCase, содержащий список ходов (turns) и опциональную роль чат-бота:

from eval_lib import ConversationalEvalTestCase, EvalTestCase

conversation = ConversationalEvalTestCase(
    chatbot_role="You are a financial advisor assistant.",
    turns=[
        EvalTestCase(
            input="I have $10,000 to invest.",
            actual_output="Let's discuss your risk tolerance and investment timeline."
        ),
        EvalTestCase(
            input="I'm moderate risk, investing for 5 years.",
            actual_output="For a moderate risk profile with a 5-year horizon, I recommend a diversified portfolio: 60% stocks, 30% bonds, 10% alternatives."
        ),
    ]
)

Выбор метрик

Выбор метрик зависит от типа вашего агента и того, какие аспекты его работы вы хотите оценить:

Сценарий Рекомендуемые метрики
Агенты с инструментами Корректность инструментов + Детекция ошибок инструментов + Детекция повторяющихся паттернов
Диалоговые ассистенты Успешность задач + Достижение цели + Следование роли + Сохранение знаний
Аудит качества диалогов Естественность диалога + Детекция повторяющихся паттернов
Safety-critical / knowledge-heavy агенты Поведение при неуверенности + Достижение цели
Многоходовые агенты с инструментами Все метрики агентов
Оценка выполнения задач Успешность задач (с task_description + success_criteria для детерминированной оценки)

Быстрый пример

В этом примере мы оцениваем агента, который должен получить погоду и конвертировать валюту. Метрика ToolCorrectnessMetric проверяет правильность вызова инструментов (без обращений к LLM), а TaskSuccessRateMetric использует LLM для оценки того, была ли достигнута цель пользователя:

import asyncio
from eval_lib import (
    evaluate,
    EvalTestCase,
    ToolCorrectnessMetric,
    TaskSuccessRateMetric,
)

test_case = EvalTestCase(
    input="What's the weather in Tokyo and convert 100 USD to JPY?",
    actual_output="Tokyo weather: 22°C, sunny. 100 USD = 15,000 JPY.",
    tools_called=["get_weather", "convert_currency"],
    expected_tools=["get_weather", "convert_currency"],
)

metrics = [
    ToolCorrectnessMetric(threshold=0.5),
    TaskSuccessRateMetric(model="gpt-4o", threshold=0.7),
]

results = asyncio.run(evaluate([test_case], metrics))