Детекция ошибок инструментов (Tool Error Detection)¶
Метрика Tool Error Detection выявляет ошибки в паттернах использования инструментов/функций AI-агентом. В отличие от метрики Tool Correctness, которая проверяет какие инструменты были вызваны, эта метрика анализирует как они были использованы -- правильность параметров, порядок вызовов, обработку ошибок и другие аспекты.
Типы обнаруживаемых ошибок¶
| Тип ошибки | Описание |
|---|---|
parameter_error | Неправильные типы данных, отсутствующие обязательные параметры, невалидные значения |
invalid_function | Вызов несуществующих или недоступных функций |
sequence_error | Вызов инструментов в неправильном порядке (например, бронирование до поиска) |
result_ignored | Игнорирование результатов инструмента или его сообщений об ошибках |
repeated_failure | Повторение одной и той же ошибки несколько раз |
error_handling | Некорректная обработка ошибок, ложные заявления об успехе |
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | обязательный | Любая модель: "gpt-4o", "anthropic:claude-3-5-sonnet-latest", "google:gemini-2.0-flash", "ollama:llama3" или CustomLLMClient |
threshold | float | 0.7 | Минимальный порог уверенности |
error_types | list[str] | все типы | Какие типы ошибок проверять |
verbose | bool | False | Включить подробное логирование |
Обязательные поля¶
| Поле | Обязательно |
|---|---|
input | Да |
actual_output | Да |
tools_called | Рекомендуется |
reasoning | Рекомендуется |
Поля tools_called и reasoning не являются строго обязательными, но значительно повышают точность детекции ошибок, предоставляя метрике дополнительный контекст о том, что делал агент и почему.
Использование¶
from eval_lib import ToolsErrorMetric, EvalTestCase, evaluate
import asyncio
test_case = EvalTestCase(
input="Get the user's order history and calculate the total spent.",
actual_output="The user has spent $1,500 total across 12 orders.",
tools_called=["get_user_orders", "calculate_total"],
reasoning="Called get_user_orders which returned 12 orders, then calculate_total to sum them up."
)
metric = ToolsErrorMetric(
model="gpt-4o",
threshold=0.7,
error_types=["parameter_error", "sequence_error", "result_ignored"]
)
results = asyncio.run(evaluate([test_case], [metric]))
Проверка только определённых типов ошибок¶
Вы можете ограничить проверку конкретными типами ошибок, если вас интересуют только они:
# Only check for parameter and sequence errors
metric = ToolsErrorMetric(
model="gpt-4o",
threshold=0.7,
error_types=["parameter_error", "sequence_error"]
)
Формат результата¶
Лог оценки содержит обнаруженные ошибки с оценками уверенности:
result.evaluation_log = {
"errors_detected": [
{
"type": "sequence_error",
"confidence": 0.85,
"description": "calculate_total was called before get_user_orders returned"
}
]
}
Каждая обнаруженная ошибка включает тип, уровень уверенности (от 0 до 1) и текстовое описание проблемы. Это позволяет не только обнаружить ошибки, но и понять их природу для дальнейшей отладки агента.
Стоимость¶
1 вызов LLM API за одну оценку.