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

Детекция ошибок инструментов (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 за одну оценку.