TL;DR
Когда LLM выбирает из набора вариантов, качество выбора падает с ростом списка. Покажи 2–3 варианта вместо 5–10 — и модель выберет правильный на 6–30 процентных пунктов чаще. Это работает не потому что список "проще" — а потому что каждый лишний вариант создаёт шум, в котором модель теряет нужное.
Главная находка: LLM хуже всего выбирает на задачах средней сложности — когда правильный вариант есть в списке, но не стоит первым. Именно там разница между коротким и длинным списком максимальна: 77% против 61% при уменьшении с 5 до 2–3 вариантов. В "лёгких" случаях (правильный ответ очевиден) разница невелика. В "тяжёлых" — тоже. Больнее всего — посередине.
Метод решает это в два шага: сначала сужаем большой список до 2–3 лучших кандидатов, потом выбираем финальный из короткого. Оба шага выполняет сама LLM, но в отдельных запросах — это и есть ключ.
Схема метода
Два запроса подряд:
ЗАПРОС 1 — Сужение:
Из большого списка → выбрать 2–3 лучших кандидата
(без финального решения, только отбор)
ЗАПРОС 2 — Выбор:
Из короткого списка → выбрать оптимальный + обоснование
Важно: Два запроса — не лишний шаг, а суть метода. В одном запросе модель стреляет по всем сразу и промахивается чаще.
Пример применения
Задача: Ты запускаешь новый телеграм-канал о личных финансах. Нужно выбрать формат монетизации из 12 вариантов — от рекламы до курсов и платной подписки. Просишь Claude выбрать лучший.
Промпт (Запрос 1 — Сужение):
Вот 12 вариантов монетизации телеграм-канала о личных финансах.
Аудитория: 5 000 подписчиков, средний возраст 28–40 лет, тема —
накопления и инвестиции для начинающих.
Варианты:
1. Реклама брокеров
2. Реклама банков
3. Платная подписка (Boosty)
4. Курс по инвестициям
5. Марафон 21 день
6. Консультации 1 на 1
7. Клуб подписчиков в закрытом канале
8. Партнёрские ссылки на сервисы
9. Книга (PDF)
10. Вебинары
11. Курс на GetCourse
12. Спонсорские посты от финтех-стартапов
Выбери 3 наиболее подходящих формата для этой аудитории
и этого этапа роста. Только перечисли их без объяснений.
Промпт (Запрос 2 — Выбор):
Из этих трёх форматов монетизации:
[вставить результат запроса 1]
Выбери один оптимальный для старта.
Объясни: почему именно он, какой первый шаг для запуска,
какой реалистичный доход в первые 3 месяца.
Результат:
В первом запросе модель выдаст 3 варианта — без объяснений, без борьбы с 9 оставшимися. Во втором запросе она сосредоточится только на этих трёх и выдаст конкретный, аргументированный выбор с планом действий. Без размытых "с одной стороны, с другой стороны".
Почему это работает
Слабость LLM при выборе из многих вариантов. Когда список длинный, модель генерирует ответ, одновременно удерживая в фокусе все варианты. Чем их больше — тем сильнее они "тянут" ответ в разные стороны. Похожие варианты особенно мешают: модель начинает путаться между ними и выбирает не лучший, а ближайший к началу списка или самый "токенно громкий".
Сильная сторона LLM — оценка малого набора. Когда вариантов 2–3, модель делает то, в чём сильна: сравнивает по нескольким критериям, взвешивает, выбирает. Это похоже на то, как человек легко выбирает из трёх ресторанов, но теряется в меню на 40 позиций.
Как работает двухшаговый подход. Первый запрос использует LLM как фильтр — она отсекает явно лишнее и оставляет лучших кандидатов. Второй запрос — уже чистое решение без шума. Разделение задач убирает конфликт между "кого выкинуть" и "кого выбрать" внутри одного ответа.
Рычаги управления: - Размер короткого списка — 2 варианта дают максимальную точность выбора, 3–4 дают компромисс между точностью и охватом. Для сложных задач лучше 3. - Критерий сужения — чем точнее сформулирован критерий отбора в первом запросе, тем лучше фильтрует. "Наиболее релевантных" хуже, чем "наиболее подходящих для аудитории 28–40 лет с бюджетом до 10 000 ₽". - Порядок вариантов — если знаешь, что один вариант явно слабее, поставь в конец: модели свойственно "примагничиваться" к началу списка на этапе сужения.
Шаблон промпта
=== ШАГ 1: СУЖЕНИЕ ===
Вот {N} вариантов {тип_объектов}.
Контекст: {описание_задачи_и_ограничений}.
{список_вариантов_пронумерованный}
Выбери {2-3} наиболее подходящих для контекста выше.
Только перечисли их без объяснений.
---
=== ШАГ 2: ВЫБОР (отдельный запрос) ===
Из этих вариантов:
{результат_шага_1}
Выбери оптимальный для задачи: {задача}.
Обоснуй выбор. {дополнительные_инструкции_по_формату}.
Что подставлять:
- {тип_объектов} — инструментов / стратегий / форматов / кандидатов
- {N} — общее количество вариантов в исходном списке
- {2-3} — рекомендуется 3 для задач с неочевидным правильным ответом
- {дополнительные_инструкции} — "укажи первый шаг", "дай оценку рисков", "в формате таблицы"
🚀 Быстрый старт — вставь в чат:
Вот шаблон двухшагового выбора. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про количество вариантов, контекст задачи и критерий отбора — потому что без этого первый шаг (сужение) не работает точно. Она возьмёт двухшаговую структуру и подготовит оба запроса.
Ограничения
⚠️ Задачи с очевидным ответом: Если правильный вариант явно выделяется на фоне остальных, двухшаговость не нужна — модель выберет верно и с длинным списком. Метод работает там, где варианты реально похожи или конкурируют.
⚠️ Плохой первичный список: Если в исходном списке нет хорошего варианта — метод не поможет. Сужение поднимает лучшее из имеющегося, не создаёт новое.
⚠️ Зависимость от качества критерия сужения: В первом запросе важно чётко описать контекст. Размытый критерий → модель выберет "общепринятые" варианты, а не оптимальные для твоей ситуации.
⚠️ Не для генерации: Метод работает на задачах выбора из готового списка. Если нужно сгенерировать варианты с нуля — другой случай.
Ресурсы
How Many Tools Should an LLM Agent See? A Chance-Corrected Answer Vyzantinos Repantis, Ameya Gawde, Harshvardhan Singh, Joey Blackwell II Meta Platforms, 2025
Использует метрику BoR (Bits-over-Random) из более ранней работы Repantis et al. [30]. Бенчмарки: BFCL (Berkeley Function Calling Leaderboard), MetaTool, ToolBench. Валидация: Claude Sonnet 4.6.
