Пользователь просит ИИ-агента определить, какие устройства сейчас находятся в корпоративной сети. Роутер не находит подходящего раздела и не передаёт модели ни одного инструмента. Агент не сообщает об ограничении, а пишет: «Выполняю сканирование сети…» Затем он описывает работу, которой в действительности не было.
Этот случай разобран в инженерной публикации на Хабре. Исполнитель команд в описанной системе намеренно изолирован от корпоративной сети, поэтому провести сканирование агент всё равно не мог. Корректным поведением был бы отказ с объяснением ограничений среды. Однако предварительный роутер оставил модель без инструментов, после чего она сымитировала действие.
Такой эпизод показывает, почему сравнение двадцати и девяноста описаний в промпте ещё не доказывает эффект размера каталога. Вместе с длиной списка меняются состав кандидатов и число похожих инструментов. В результат вмешиваются качество роутера, возможности модели и правило, по которому ответ признают правильным.
Что представляет собой источник
Автор публикации использует имя vad_bel. В профиле на Хабре указаны Москва, Россия, а также специализации менеджера продукта и промпт-инженера. Точную календарную дату публикации установить по предоставленной копии страницы нельзя: на ней была только относительная отметка «9 часов назад». Месяцы отдельных прогонов автор называет, но год в тексте не указан.
Хабр пометил материал как «Мнение». Это полный авторский рассказ о собственном ИИ-оркестраторе, а не рецензируемая научная статья, препринт или независимый аудит. У публикации нет DOI. Автор не приложил исходные ответы модели, полный корпус запросов, версии промптов или репозиторий эксперимента. Поэтому перед нами инженерный кейс, из которого можно вывести проверяемую гипотезу, но не установленная закономерность.
Как работал узкий режим
Каталог оркестратора включал более девяноста инструментов для таблиц, документов, почты, задач, веб-страниц и презентаций. Для позднего этапа автор приводит точное число: 91 инструмент.
В полном режиме модель получала описания всего каталога. В узком режиме сначала срабатывал отдельный роутер:
«Перед основным вызовом модели работает роутер: по тексту запроса он выбирает раздел [...] и внутри раздела подраздел. Модель получает недевяносто описаний инструментов, а около двадцати».
Это вмешательство меняет сразу два свойства входа. Список становится короче, но одновременно из него исчезают некоторые кандидаты. Если среди удалённых вариантов есть правильный инструмент, основная модель уже не может сделать нужный вызов. Если исчезают только похожие по названию отвлекающие варианты, выбор упрощается.
Поэтому опубликованный опыт проверяет весь режим предварительного отбора, а не изолированное влияние количества инструментов.
Что измерял автор
Первый основной замер относился к локальной модели, названной в публикации Qwen3.6 27B. Она работала на RTX 3090 с 24 ГБ памяти. Автор подготовил корпус из 49 пользовательских запросов и провёл два прогона в один день. По его описанию, они различались длиной списка кандидатов.
«На узком наборе — 43 верных выбора из 44, на полном — 39. Контекст на полном в 2,7 раза больше, прогон дольше на треть».
Узкий режим дал на четыре правильных выбора больше. Ошибки полного режима возникали среди близких по смыслу инструментов: объединение датасетов путалось с управлением датасетами, построение графика и переименование колонок уходили в анализ датасета, а извлечение содержания новостных сайтов заменялось сырой загрузкой страницы.
Эти наблюдения совместимы с объяснением автора: модели могли мешать похожие «соседи». Но они не показывают, что причиной была именно длина контекста. Двадцать хорошо различимых инструментов и двадцать инструментов одного семейства создают разные задачи, хотя размер списка одинаков.
Есть и неразрешённая арифметическая проблема. Корпус состоял из 49 запросов, а результат приведён для 44 случаев. Почему пять запросов не вошли в показатель, текст не объясняет. Без покейсной таблицы нельзя установить, одинаково ли применялись правила исключения в обоих режимах.
Что показали восемь запросов
В отдельном разведочном сравнении было всего восемь запросов. Локальная модель получила 7 правильных ответов из 8 на узком наборе и 6 из 8 на полном. Для gpt-4.1 направление различия оказалось обратным: 7 из 8 на узком наборе и 8 из 8 на полном.
В проигранном случае роутер не передал gpt-4.1 инструмент, необходимый для запроса, который затрагивал два раздела. Отсюда появилась гипотеза: слабой модели сокращение числа кандидатов помогает, а более сильную модель предварительный фильтр может ограничивать. Автор не выдаёт этот результат за доказательство и пишет: «Конечно восемь запросов — это еще не доказательство, но это повод для замера».
Позднее тот же корпус прогнали на GigaChat-2-Max и gpt-oss 120B во всех четырёх режимах отбора, предусмотренных продуктом. К этому моменту каталог вырос до 91 инструмента. Автор сообщает, что узкий набор выиграл у обеих моделей по точности, размеру контекста и задержке. Полной числовой разбивки по четырём режимам в доступном тексте нет, поэтому величину и устойчивость различий проверить нельзя.
Этот этап нельзя считать прямым повторением первого опыта. Изменились модели и каталог. Автор также не указывает идентификаторы конкретных версий моделей, параметры генерации, промпты и число повторных запусков каждого запроса.
Когда ошибка становится уточнением
Три провала GigaChat в узком режиме были уточняющими вопросами, например «какой ключ проекта?» и «в каком слоте датасет?». Если признать разумное уточнение допустимым поведением, результат меняется с 41 из 44 до 44 из 44.
Это не техническая мелочь. Показатель точности имеет смысл только при заранее определённом критерии успеха. Для рабочего агента правильными могут быть разные исходы: вызов нужного инструмента с подходящими аргументами, запрос обязательного параметра, обоснованный отказ при недоступной операции или обычный текстовый ответ, когда инструмент не требуется.
В исходном корпусе уточнение засчитывалось как успех только в одном случае из 49. Альтернативная трактовка появилась после разбора ошибок. Она может быть полезна для совершенствования продукта, но первоначальную и ретроспективную оценки следует показывать раздельно.
Как проверить влияние размера каталога
Следующая схема является нашей методологической интерпретацией, а не описанием уже проведённого автором эксперимента.
Сначала нужно зафиксировать полный каталог: названия, описания, схемы аргументов, порядок инструментов и доступные функции. Версии каталога и промпта можно сохранять вместе с их контрольными суммами. Если между сериями добавить или переписать инструмент, получится уже другое условие.
Затем для каждого запроса заранее размечают допустимые действия. Разметка должна указывать правильный инструмент, обязательные аргументы, допустимость уточнения, основания для отказа и случаи, когда вызов не нужен. Спорные примеры полезно передать двум независимым разметчикам, а разногласия разрешить до запуска моделей.
После этого сравнивают как минимум четыре условия:
- Полный каталог. Модель видит все зафиксированные инструменты.
- Контролируемый узкий каталог. Правильный инструмент гарантированно присутствует, а число кандидатов задано заранее. Это позволяет проверить влияние размера и состава списка без ошибок реального роутера.
- Узкий каталог от роутера. Правильный инструмент может исчезнуть. Разница с контролируемым условием показывает, какую долю ошибок добавляет маршрутизация.
- Режим без инструментов. Он проверяет, отличает ли система отсутствие доступной операции от разрешения выдумать её выполнение.
Одного сокращённого списка мало. Если убрать из него самые похожие инструменты, эксперимент снова смешает размер каталога с трудностью выбора. Нужны вложенные наборы разного объёма и отдельное управление числом близких по смыслу кандидатов. При одинаковом размере можно сравнить список со случайными нерелевантными инструментами и список с инструментами одного семейства. Тогда станет понятнее, мешает ли модели длина каталога или конкуренция похожих описаний.
Что измерять отдельно
Для роутера нужен отдельный показатель: как часто среди переданных кандидатов сохраняется хотя бы один допустимый инструмент. Если правильного инструмента нет, записывать ошибку только на счёт основной модели нельзя.
Выбор функции и правильность аргументов тоже следует разделять. Модель может назвать нужный инструмент, но передать неверный идентификатор проекта, слот датасета или другой обязательный параметр. Это частично правильное действие, а не полностью выполненная задача.
На уровне всего агента оценивают конечное поведение. Выполнил ли он операцию? Задал ли уместный вопрос? Честно ли сообщил об ограничении среды? Фразу «Выполняю сканирование сети» при отсутствии вызовов стоит относить к отдельному классу ложных заявлений о совершённом действии.
Задержку и расход контекста также лучше не сводить к одной фразе вроде «быстрее на треть». Для каждого режима нужны число входных токенов, время роутинга, время генерации и полная задержка. Распределение по запросам покажет, является ли ускорение общим или возникает только на отдельных задачах.
Зачем нужны повторные запуски
Если модель использует недетерминированную генерацию, единичный ответ может измениться при повторном запуске. Поэтому следует фиксировать доступные параметры генерации и повторять каждый запрос несколько раз. Если поставщик API не позволяет задать seed или гарантировать воспроизводимость, это нужно прямо указать среди ограничений.
Поскольку через все режимы проходят одни и те же запросы, сравнивать следует не только итоговые суммы, но и результаты по каждой паре. Важны случаи, где полный режим оказался правильным, а узкий ошибся, и обратные переходы. При 44 оценённых примерах изменение одного ответа сдвигает долю более чем на два процентных пункта, поэтому округлённый процент без покейсных данных может выглядеть убедительнее, чем позволяет выборка.
Корпус полезно разделить на разработочную и тестовую части. На первой можно менять роутер и описания инструментов. Вторая должна оставаться закрытой до фиксации системы. Иначе последовательный разбор ошибок подгонит каталог под уже известные запросы, а новый прогон покажет качество этой доработки на знакомом наборе.
Вывод автора и наша интерпретация
Вывод автора относится к его оркестратору. Для трёх моделей, проверенных на полном корпусе, лучшим оказался узкий набор. Автор рекомендует настраивать роутинг отдельно для каждой модели, сравнивать режимы на одном корпусе и в один день, сохранять отпечаток каталога, отделять уточнения от промахов и проводить оценку по тому же пути, которым работает конечный продукт.
Наша интерпретация осторожнее. Публикация описывает правдоподобный механизм пользы короткого списка: модель реже путает похожие инструменты, получает меньший контекст и может отвечать быстрее. Тот же кейс обнаруживает цену фильтрации. Роутер способен удалить правильный инструмент или оставить модель без доступных действий.
Заявленных данных недостаточно, чтобы утверждать, что около двадцати инструментов в общем случае лучше девяноста. Состав корпуса не раскрыт, расхождение между 49 запросами и 44 оценёнными случаями не объяснено, полные логи отсутствуют. Результат gpt-4.1 на восьми запросах дополнительно показывает, что направление различия может зависеть от модели и типа задачи.
Практический смысл кейса состоит не в поиске универсального порога. Проверять нужно всю цепочку: работу роутера, наличие правильного инструмента, выбор модели, аргументы вызова и окончательный ответ. Только такое разложение покажет, помог ли короткий список самой модели или значительную часть задачи за неё выполнил фильтр.
Источники
- vad_bel. «Сколько инструментов показывать языковой модели: гипотеза, которую перечеркнул замер». Хабр. Полный авторский текст со статусом «Мнение». Точная календарная дата в доступной копии не указана.
- Профиль vad_bel на Хабре. Источник сведений о заявленных специализациях и местонахождении автора.
- Talos13. «Хорош хардкодить кривые MCP: превращаем любой скрипт в инструмент LLM за 2 секунды». Связанный инженерный материал о древовидной навигации по инструментам. Он описывает другой продукт и не подтверждает независимо результаты основного источника.
