3,583 papers
arXiv:2606.06284 74 4 июня 2026 г. FREE

CMTF (Causal Minimal Tool Filtering): меньше выбора — меньше ошибок

КЛЮЧЕВАЯ СУТЬ
83% → 99% точности — не от нового промпта и не от смены модели. Просто убрали лишний выбор. AI не тупит от незнания — он хватается за 'похожий на правильный' вместо 'нужного прямо сейчас'. Метод CMTF позволяет строить сложные многошаговые задачи без ошибок порядка — AI не прыгает к финалу, минуя нужные шаги. Каждый следующий инструмент открывается только после выполнения предыдущего — модель физически не видит 'ответить на письмо', пока не нашла нужное. Итог: точность 99% вместо 83% и в 90% меньше токенов.
Адаптировать под запрос

TL;DR

ToolChoiceConfusion — это явление, когда AI делает ошибку не потому что не знает ответа, а потому что видит слишком много вариантов сразу. Если перед AI лежат 100 инструментов, все они «по смыслу» связаны с задачей — модель выбирает неправильный. Не потому что глупая, а потому что релевантный и нужный прямо сейчас — разные вещи.

AI плохо фильтрует «нужно сейчас» от «нужно потом». Если попросить обработать письмо и перечислить всё что можно: поискать, прочитать, ответить, переслать, удалить — модель может сразу «ответить» до того как нашла нужное письмо. Это не ошибка понимания задачи, это ошибка очерёдности: в голове одновременно лежат все шаги, и AI хватается за ближайший по смыслу, не по порядку.

CMTF решает это жёстким ограничением: в каждый момент времени AI видит только один инструмент — тот, который нужен прямо сейчас на пути к цели. После его выполнения открывается следующий. Никакого забегания вперёд.


🔬

Схема метода

(Реализуется как система с кодом, но принцип работает в промптах)

ШАГ 1: Определи начальное состояние → что уже известно
ШАГ 2: Определи цель → что должно стать известно в конце
ШАГ 3: Построй цепочку → минимальная последовательность шагов от начала к цели
ШАГ 4: Покажи AI только ПЕРВЫЙ шаг → один вариант действия
ШАГ 5: Получи результат → обнови состояние
ШАГ 6: Покажи следующий шаг → и так далее до цели

Все шаги — отдельные запросы. Каждый следующий шаг открывается только после выполнения предыдущего.


🚀

Пример применения

Задача: Ты запускаешь Telegram-канал про инвестиции в России и хочешь через Claude подготовить разбор компании — от анализа до публикации. Обычно ты выдаёшь всё сразу: «проанализируй, сравни с конкурентами, напиши пост, предложи заголовок, сделай CTA». Часто Claude начинает писать пост, ещё не закончив анализ.

Промпт (пошаговая структура по принципу CMTF):

Работаем по шагам. На каждом шаге я даю тебе одну задачу. 
Выполни её и жди следующую. Не забегай вперёд.

ТЕКУЩЕЕ СОСТОЯНИЕ: есть название компании — Positive Technologies
ЦЕЛЬ: готовый пост для Telegram-канала об инвестиционных рисках

ШАГ 1 (только это): 
Перечисли 5 ключевых рисков для инвестора в Positive Technologies 
на основе того, что ты знаешь о компании. 
Формат: список, одна строка на риск. 
Ничего больше — только список рисков.

(После получения ответа — следующий промпт):

ТЕКУЩЕЕ СОСТОЯНИЕ: список рисков готов
ШАГ 2 (только это):
Для каждого риска из списка — одно предложение с объяснением 
почему это важно для частного инвестора с горизонтом 2 года.

(И так далее — анализ → структура поста → заголовок → CTA)

Результат: Каждый шаг даст чёткий, завершённый блок. Claude не будет смешивать анализ с написанием, не прыгнет к заголовку пока не готов контент. Итоговый пост будет логически выстроен — каждый следующий блок опирается на предыдущий.


🧠

Почему это работает

Проблема: AI не умеет хорошо управлять приоритетами во времени. Он видит все варианты сразу — и выбирает «похожий на правильный», а не «нужный прямо сейчас». «Проанализируй и напиши пост» — оба шага семантически близки к задаче, но написать без анализа — ошибка порядка. Именно так появляются поверхностные, «сначала выводы, потом аргументы» тексты.

Сильная сторона AI: он отлично справляется с одним чётким заданием. Когда перед ним один вопрос, одно действие, одна цель текущего шага — качество резко растёт. Исследование показывает: при показе всех 100 инструментов сразу — 83% успеха. При показе только нужного инструмента на каждом шаге — 99% успеха и в 90% меньше токенов.

Принцип: разделяй состояние и действие. На каждом шаге есть «что уже известно» (состояние) и «что нужно узнать дальше» (следующий шаг). Явно передавай оба в промпте. Не давай AI самому решать порядок — диктуй его искусственно через структуру запросов.

Рычаги управления: - Явное состояние (ТЕКУЩЕЕ СОСТОЯНИЕ: ...) — чем точнее описан контекст, тем меньше AI додумывает лишнего - Один глагол на шаг — «перечисли», «объясни», «напиши» — не два действия в одном промпте - Условие перехода — следующий шаг отправляй только после того как предыдущий тебя устраивает - Запрет на забегание («ничего больше», «только это») — прямо запрещает AI «помогать» лишним


📋

Шаблон промпта

Работаем по шагам. Выполни только текущий шаг, жди следующего.

ТЕКУЩЕЕ СОСТОЯНИЕ: {что уже известно / какие данные есть}
ЦЕЛЬ: {финальный результат который нужен}

ШАГ {номер} (только это):
{одно конкретное действие}
Формат: {как должен выглядеть ответ}
Больше ничего — только {название конкретного выхода}.

Что подставлять: - {что уже известно} — факты, данные, результаты предыдущих шагов - {финальный результат} — что должно получиться в самом конце всей цепочки - {одно конкретное действие} — один глагол + объект: «перечисли риски», «напиши вступление», «выбери заголовок» - {как должен выглядеть ответ} — список / абзац / таблица / одно предложение


🚀 Быстрый старт — вставь в чат:

Вот шаблон пошагового промптинга по принципу CMTF. 
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит про конечную цель и какие данные уже есть — потому что без этого нельзя выстроить правильную цепочку шагов. Она разобьёт твою задачу на последовательные блоки и подготовит промпты для каждого шага.


⚠️

Ограничения

⚠️ Линейные задачи: Метод работает когда шаги зависят друг от друга. Для простых «напиши пост про X» — избыточен.

⚠️ Требует дисциплины: Нужно действительно ждать результата каждого шага и не перескакивать. Если сразу передашь всё — эффект пропадает.

⚠️ Полноценный CMTF требует кода: Оригинальный метод — это система с графом зависимостей, контрактами инструментов и автоматическим управлением состоянием. В чате работает только принцип, не механика.

⚠️ Оценка на синтетических данных: Бенчмарк использовал моковые (имитированные) ответы инструментов, не реальные API — реальный мир сложнее.


🔗

Ресурсы

ToolChoiceConfusion: Causal Minimal Tool Filtering for Reliable LLM Agents Rahul Suresh Babu (Boston University), Laxmipriya Ganesh Iyer (Northeastern University) Independent researchers, 2025

Связанные концепции: ReAct (Yao et al.), Toolformer, ToolBench/ToolLLM, Berkeley Function-Calling Leaderboard


📋 Дайджест исследования

Ключевая суть

83% → 99% точности — не от нового промпта и не от смены модели. Просто убрали лишний выбор. AI не тупит от незнания — он хватается за 'похожий на правильный' вместо 'нужного прямо сейчас'. Метод CMTF позволяет строить сложные многошаговые задачи без ошибок порядка — AI не прыгает к финалу, минуя нужные шаги. Каждый следующий инструмент открывается только после выполнения предыдущего — модель физически не видит 'ответить на письмо', пока не нашла нужное. Итог: точность 99% вместо 83% и в 90% меньше токенов.

Принцип работы

Стандартный подход: дать задачу + все возможные шаги разом. AI видит их одновременно и выбирает по смыслу, а не по порядку. Он не проверяет 'я уже сделал шаг X?' — тянется к тому, что семантически ближе к цели. Прикол в том, что 'подходящий по смыслу' и 'нужный прямо сейчас' — разные вещи. CMTF ломает эту логику через цикл состояний: текущее состояние → единственное доступное действие → новое состояние → следующее действие. В каждый момент AI видит один вариант. Не выбирает — исполняет.

Почему работает

AI отлично справляется с одной чёткой задачей. Плохо — с выбором из 100 одновременно. Проблема не в знаниях: модель не проверяет причинно-следственную цепочку перед выбором действия. Она видит всё, что похоже на ответ, — и тянется к ближайшему. Убери 99 лишних вариантов — и модель идёт единственно возможным путём. Именно так получается рост с 83% до 99% на бенчмарке из 102 задач с четырьмя языковыми моделями. Оговорка: бенчмарк использовал имитированные ответы инструментов, не реальные вызовы к внешним сервисам — реальный мир может дать другие цифры.

Когда применять

Многошаговые задачи в ChatGPT или Claude — анализ данных, создание контента, принятие решений — когда каждый следующий шаг зависит от результата предыдущего. Особенно полезно, когда AI регулярно 'прыгает' к выводам, минуя промежуточные шаги, или смешивает анализ с написанием текста в одном ответе. НЕ подходит для простых запросов вроде 'напиши пост про X' — там выбора из шагов нет, и пошаговая структура будет лишней работой.

Мини-рецепт

1. Опиши начальное состояние: что уже известно до начала — факты, данные, исходный материал.
2. Назови финальную цель: что должно получиться в конце всей цепочки, не промежуточного шага.
3. Давай по одному действию: один глагол + объект — 'перечисли риски', 'напиши вступление', 'выбери заголовок'. Не два действия в одном запросе.
4. Запрети забегание вперёд: добавь в конце шага 'только это', 'ничего больше — только [название конкретного результата]'.
5. Передавай результат явно: следующий запрос начинай с 'ТЕКУЩЕЕ СОСТОЯНИЕ: [результат предыдущего шага]' — не рассчитывай что модель помнит контекст сама.
6. Следующий шаг — только после того как предыдущий тебя устраивает. Если отправить всё сразу — эффект пропадает.

Примеры

[ПЛОХО] : Проанализируй компанию Positive Technologies, сравни с конкурентами, напиши инвестиционный разбор с заголовком, рисками и выводами
[ХОРОШО] : Работаем по шагам. Выполни только текущий шаг, жди следующего. ТЕКУЩЕЕ СОСТОЯНИЕ: есть название компании — Positive Technologies ЦЕЛЬ: готовый инвестиционный разбор для частного инвестора ШАГ 1 (только это): Перечисли 5 ключевых рисков для инвестора в Positive Technologies. Формат: список, одна строка на риск. Ничего больше — только список рисков. (После получения ответа — следующий запрос): ТЕКУЩЕЕ СОСТОЯНИЕ: список из 5 рисков готов ШАГ 2 (только это): Для каждого риска — одно предложение: почему это важно для инвестора с горизонтом 2 года. Формат: тот же список, добавь пояснение к каждому пункту.
Источник: ToolChoiceConfusion: Causal Minimal Tool Filtering for Reliable LLM Agents
ArXiv ID: 2606.06284 | Сгенерировано: 2026-06-05 09:50

Проблемы LLM

ПроблемаСутьКак обойти
Модель путает «похожее на нужное» и «нужное прямо сейчас»Даёшь задачу с несколькими шагами сразу. Модель видит все действия одновременно. Выбирает то, что ближе по смыслу к цели — а не то, что нужно сделать первым. Пример: просишь «найди письмо и ответь». Модель начинает писать ответ раньше, чем нашла письмо. Не потому что не поняла задачу. Потому что оба шага семантически близки к цели — и она хватается за «похожий», а не «следующий»Давай модели одно действие на один запрос. Не пиши «сделай A и B». Бей на два отдельных запроса. Второй отправляй только после того как получил и проверил результат первого

Методы

МетодСуть
Явное состояние + один глагол на запросКаждый запрос строится по шаблону: ТЕКУЩЕЕ СОСТОЯНИЕ: {что уже известно} ЦЕЛЬ: {финальный результат} ШАГ N (только это): {одно действие}. Один глагол на шаг: «перечисли», «объясни», «напиши» — не два в одном. Добавляй запрет на забегание: «ничего больше — только список». Следующий запрос отправляй с обновлённым состоянием: вставляй результат предыдущего шага в поле «текущее состояние». Почему работает: модель не тратит внимание на выбор между шагами. Перед ней одна задача. Качество растёт, ошибки порядка пропадают. Когда применять: задача состоит из шагов, где каждый следующий зависит от результата предыдущего. Анализ структура текст заголовок. Когда не нужно: простой одношаговый запрос — «напиши пост про X»
📖 Простыми словами

ToolChoiceConfusion: Causal MinimalToolFiltering for ReliableLLMAgents

arXiv: 2606.06284

Проблема ToolChoiceConfusion — это когда твой AI-агент ведет себя как ребенок в магазине игрушек: он видит слишком много крутых штук сразу и впадает в ступор. На уровне архитектуры LLM это не баг знаний, а баг внимания. Модель не умеет отсекать лишнее «на лету», поэтому, когда ты даешь ей доступ к сотне инструментов или функций, она начинает путаться в показаниях. Для нее всё, что хоть немного похоже на решение задачи, кажется одинаково важным, и в итоге она выбирает неправильный инструмент, просто потому что он лежал ближе по смыслу.

Это как если бы ты попросил мастера починить кран, а вывалил перед ним ящик с тремя сотнями разных ключей, отверток и гаек. Вместо того чтобы взять один нужный ключ, мастер начинает примерять всё подряд, потому что «ну это же тоже инструмент для ремонта». В итоге работа стоит, время идет, а кран все еще течет. Избыток выбора превращает мощный интеллект в растерянного стажера, который не может расставить приоритеты.

В исследовании предлагают метод MinimalToolFiltering, и суть тут простая: нужно бить модель по рукам и прятать от нее лишнее. Если задача — «проанализировать акции», AI не должен видеть инструменты для «публикации поста» или «создания картинок». Работает жесткая фильтрация: оставляем только те 2-3 функции, которые критически важны прямо сейчас. Когда модель видит узкий коридор возможностей, она перестает лажать и начинает выдавать результат с точностью, близкой к 100%.

Этот принцип универсален и применим не только в коде, но и в обычных промптах. Если ты просишь Claude или GPT сделать сложный проект, не вываливай на него все инструкции разом. Тестировали это на сложных агентах, но логика работает везде: чем меньше «шумных» вариантов у модели перед глазами, тем меньше шансов, что она выберет красивую, но бесполезную фигню вместо нужного действия. Меньше инструментов — выше надежность.

Короче, хватит надеяться, что AI сам разберется в твоей горе инструкций и инструментов. Чтобы агент не тупил, используй динамическую фильтрацию: давай ему только то, что нужно для текущего шага, и скрывай всё остальное. Либо ты сам ограничиваешь выбор модели, либо она гарантированно выберет «похожий на правду» мусор вместо реального решения. Лишний контекст — враг логики.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с