Метрики агентов¶
Eval AI Library предоставляет специализированные метрики для оценки AI-агентов -- систем, которые используют инструменты (tools), поддерживают многоходовые диалоги и автономно выполняют задачи пользователя.
В отличие от стандартных RAG-метрик, метрики агентов фокусируются на поведенческих аспектах: правильно ли агент выбирает инструменты, достигает ли он цели пользователя, сохраняет ли контекст на протяжении всего разговора и придерживается ли назначенной роли.
Доступные метрики¶
| Метрика | Что измеряет | Вызовы LLM | Порог по умолчанию |
|---|---|---|---|
| Корректность инструментов | Были ли вызваны правильные инструменты | 0 | 0.5 |
| Успешность задач | Была ли достигнута цель пользователя | 4 | 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."
),
]
)
Выбор метрик¶
Выбор метрик зависит от типа вашего агента и того, какие аспекты его работы вы хотите оценить:
| Сценарий | Рекомендуемые метрики |
|---|---|
| Агенты с инструментами | Корректность инструментов + Детекция ошибок инструментов |
| Диалоговые ассистенты | Успешность задач + Следование роли + Сохранение знаний |
| Многоходовые агенты с инструментами | Все метрики агентов |
| Оценка выполнения задач | Успешность задач |
Быстрый пример¶
В этом примере мы оцениваем агента, который должен получить погоду и конвертировать валюту. Метрика 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))