SAAG: фреймворк находит, где именно ИИ-агенты ошибаются при вызове функций

Стандартная проверка того, насколько хорошо модель вызывает функции (agent-calling / function-calling), обычно сводится к единой бинарной оценке: вызов либо совпал с эталоном, либо нет. Авторы работы указывают, что это скрывает качественно разные типы ошибок, модель может выбрать правильную функцию, но придумать (галлюцинировать) значения её аргументов, а может формально удовлетворить схеме вызова, но выбрать саму функцию по неверной причине. Из-за единого числа на выходе разработчики не понимают, где именно агент ломается.

Чтобы решить эту проблему, авторы предлагают SAAG (Structured Agent Assessment and Grounding), каскадный диагностический фреймворк, который раскладывает оценку вызова функции на три последовательные стадии: соответствие реестру доступных функций (registry conformance), структурная полнота вызова (structural completeness) и обоснованность аргументов (argument grounding). Каждая стадия выдаёт собственный интерпретируемый диагностический сигнал, по какой именно стадии произошёл сбой.

Эти постадийные сигналы, помимо диагностики, используются для итеративного самоисправления: если модель ошиблась, сигнал конкретной стадии направляет целевую коррекцию, при этом эталонные (истинные) значения ей не передаются, то есть модель не подглядывает в ответ, а лишь получает подсказку, в какой части вызова искать ошибку.

Фреймворк проверили на контролируемом бенчмарке, построенном на основе датасета для function-calling от Glaive, при разных размерах реестра доступных функций, 5, 10 и 15, и на трёх локальных моделях с числом параметров менее 4 миллиардов. Структурированная постадийная обратная связь стабильно повышала точность аргументов вызова и снижала долю галлюцинированных значений по сравнению как с одиночным проходом инференса без обратной связи, так и с простой неинформативной бинарной обратной связью («верно/неверно»). При этом итоговый прирост сквозной метрики F1 (по всему вызову целиком) оказался скромным и зависел от конкретной модели. Авторы заключают, что декомпозиция оценки по стадиям, необходимый инструмент для понимания и улучшения надёжности вызова функций ИИ-агентами в разных семействах моделей и при разных размерах реестра инструментов.

Ключевые факты

  • SAAG раскладывает оценку вызова функции агентом на три стадии: соответствие реестру функций, структурная полнота вызова и обоснованность аргументов, вместо одной бинарной оценки «сработало / нет»
  • Постадийный диагностический сигнал используется для самоисправления модели: при ошибке модель получает подсказку, на какой стадии искать проблему, но не сами эталонные значения
  • Тестирование проведено на бенчмарке из датасета Glaive для function-calling при размерах реестра функций 5, 10 и 15, на трёх локальных моделях с числом параметров менее 4 млрд
  • Структурированная обратная связь стабильно снижала галлюцинации значений аргументов и повышала их точность по сравнению с одиночным проходом и простой бинарной обратной связью
  • Итоговый прирост сквозной метрики F1 по всему вызову оказался скромным и зависел от конкретной модели, выигрыш заметен в диагностике и точности аргументов, но не превращается в резкий общий скачок качества

Почему это важно

Вызов функций (agent-calling / tool use), базовый механизм, на котором строятся ИИ-агенты: модель должна выбрать нужный инструмент из доступного набора и корректно заполнить его аргументы. Стандартная проверка качества такого вызова обычно даёт один бинарный ответ, совпал вызов с эталоном или нет. Эта работа показывает, что за одной и той же неудачной оценкой могут стоять разные проблемы: модель выбрала не ту функцию, выбрала правильную функцию, но по случайной причине, либо выбрала функцию верно, но придумала значения аргументов. Без разбивки на стадии разработчик не может понять, что именно чинить в модели или в промпте.

Кому это важно

Разработчикам ИИ-агентов и инструментов на базе LLM, которые используют вызов функций (tool use / function calling), для отладки и повышения надёжности агентов. Инженерам, которые строят бенчмарки и системы оценки качества моделей в задачах с внешними инструментами. Командам, которые внедряют небольшие локальные модели (до 4 млрд параметров) в агентные сценарии, где нужна экономия ресурсов, но при этом важна предсказуемость поведения агента.

Как это применить

SAAG можно использовать как надстройку над существующим бенчмарком вызова функций: вместо одного числа на выходе оценки разработчик получает три отдельных диагностических сигнала, по какой стадии (соответствие реестру, полнота структуры вызова, обоснованность аргументов) прошёл или не прошёл конкретный вызов. Дополнительно эти сигналы можно использовать в цикле самоисправления модели: при неудачном вызове модель получает не готовый правильный ответ, а указание, на каком именно этапе искать ошибку, и пробует исправить вызов сама.

Можно ли доверять

Это препринт на arXiv, то есть работа пока не прошла рецензирование в журнале или на конференции. Проверка проведена на контролируемом синтетическом бенчмарке, построенном на основе датасета Glaive для function-calling, при трёх размерах реестра функций (5, 10, 15) и на трёх локальных моделях с числом параметров менее 4 миллиардов, то есть на относительно небольших моделях, а не на топовых закрытых моделях уровня GPT или Claude. Сами авторы честно указывают на ограничение результата: прирост сквозной метрики F1 скромный и зависит от конкретной модели, то есть эффект не универсален.

Риски и подводные камни

Framework протестирован только на моделях до 4 млрд параметров и на одном производном бенчмарке, неясно, сохранится ли эффект на более крупных или на закрытых коммерческих моделях, а также на реальных промышленных наборах инструментов, а не на синтетическом датасете. Улучшение касается в первую очередь точности аргументов и диагностики, а не итогового качества вызова функции в целом: сквозной прирост F1 скромный и модель-зависимый, то есть SAAG, это в первую очередь инструмент диагностики и умеренного улучшения, а не прорывное решение проблемы галлюцинаций у ИИ-агентов.