Не менее важным аспектом, чем корректность вызова инструментов, является эффективность их использования. Неоптимальные паттерны вызова инструментов могут привести к увеличению времени отклика, раздражению пользователей и значительному росту операционных затрат.
Представьте, что вы общаетесь с чат-ботом, помогающим забронировать авиабилет. Если сначала он проверяет погоду, потом конвертирует валюту, и только потом запрашивает доступные рейсы — это излишне запутанный путь. Да, в конечном итоге задача может быть выполнена, но разве не было бы лучше сразу обратиться к API бронирования?
Рассмотрим, как можно оценивать эффективность использования инструментов, начиная с детерминированных методов:
- Redundant Tool Usage — измеряет количество инструментов, вызванных без необходимости, то есть тех, которые не вносят прямого вклада в достижение целевого результата. Эта метрика может быть рассчитана как процент ненужных вызовов по отношению к общему количеству вызовов инструментов.
- Tool Frequency — оценивает, не вызываются ли инструменты чаще, чем необходимо. Этот метод штрафует вызовы, которые превышают заранее заданный порог количества обращений (в большинстве случаев это просто 1 вызов).
Хотя эти детерминированные метрики дают прочную основу, оценка эффективности использования инструментов в более сложных LLM-агентах может быть затруднена. Поведение таких агентов при вызове инструментов может быстро становиться ветвящимся, вложенным и трудно предсказуемым (поверьте, я пытался).
Более гибкий подход — это использование LLM в роли оценщика (LLM-as-a-judge). Например, один из способов оценки tool efficiency заключается в извлечении цели пользователя (задачи, которую агент должен выполнить) и анализе трека вызовов инструментов: какие инструменты были вызваны, с какими параметрами, какие дали выход, и сравнение этого пути с предоставленным списком доступных инструментов.
Такой подход позволяет определить, был ли выбран наиболее эффективный способ достижения цели. Именно так работает методика DeepEval.