TL;DR
RT-ICA (Reverse Thinking for Information Completeness Assessment) — техника, которая заставляет модель идти от цели к предпосылкам, а не от данных к ответу. Вместо того чтобы пытаться решить задачу с тем что есть, модель сначала перечисляет что нужно для решения, а потом проверяет есть ли это в условии. Если чего-то нет — называет конкретно, чего не хватает.
Прямые методы (Chain-of-Thought, Tree-of-Thought) идут вперёд: берут данные и тянут рассуждение к ответу. Они предполагают, что данных достаточно. Если данных не хватает — модель всё равно выдаст ответ, только неправильный или выдуманный (галлюцинация). У CoT нет встроенного механизма спросить себя: "А всего ли мне хватает?" Это не баг реализации — это фундаментальное ограничение прямого направления.
RT-ICA переворачивает процесс: модель начинает с вопроса "что я хочу получить?", затем составляет список необходимых условий (что должно быть, чтобы это посчитать?), и проверяет каждое условие — дано в задаче или нет. Те условия, которых нет — это и есть недостающая информация. Метод работает в три шага внутри одного промпта: (1) определить цель, (2) перечислить предпосылки, (3) проверить доступность каждой.
Схема метода
Всё выполняется в одном промпте:
ШАГ 1: Определить финальную цель
→ Что нужно найти? Обозначить как X
ШАГ 2: Перечислить необходимые условия
→ Что должно быть известно, чтобы найти X?
→ Список: Условие_1, Условие_2, ..., Условие_N
ШАГ 3: Проверить доступность каждого условия
→ Для каждого условия:
- Дано явно в задаче? → доступно
- Можно вывести из контекста? → доступно
- Нигде нет? → НЕДОСТАЁТ
ВЫВОД: Если хотя бы одно условие недостаёт → перечислить какие именно
Пример применения
Задача: Проверяешь бизнес-идею знакомого — открыть кофейню в спальном районе. Он говорит: "Средний чек 250 рублей, проходимость 200 человек в день, конверсия 15%. Аренда 150 тысяч, зарплаты двум бариста по 60 тысяч. Окупится за полгода?" Хочешь понять — достаточно ли данных для расчёта или чего-то критичного не хватает?
Промпт:
Используй обратное мышление для проверки полноты данных:
ЗАДАЧА: {Открыть кофейню в спальном районе. Средний чек 250₽,
проходимость 200 человек/день, конверсия 15%. Аренда 150 000₽/мес,
зарплаты двум бариста по 60 000₽. Окупится за полгода?}
ШАГ 1 — Финальная цель:
Определи что нужно найти для ответа на вопрос.
ШАГ 2 — Необходимые условия:
Перечисли ВСЕ параметры, которые должны быть известны для расчёта окупаемости.
Для каждого параметра укажи: числовые значения, формулы, соотношения.
ШАГ 3 — Проверка доступности:
Для каждого условия из списка проверь:
- Дано явно в задаче?
- Можно вывести из контекста?
- Нигде нет информации?
ВЫВОД:
Если все условия доступны → "Данных достаточно"
Если есть недостающие → перечисли конкретно что отсутствует и почему это критично
Результат:
Модель покажет пошаговый анализ: определит цель (расчёт точки окупаемости), перечислит все необходимые параметры (выручка, операционные расходы, первоначальные вложения, налоги, себестоимость напитков), проверит каждый на наличие в условии. В финале выдаст список недостающего: себестоимость кофе и расходников, коммунальные платежи, размер первоначальных вложений (оборудование, ремонт), налоговая система, прочие операционные расходы. Объяснит почему без каждого пункта расчёт невозможен.
Почему это работает
LLM по умолчанию генерирует текст вперёд — от начала к концу, от данных к выводу. Когда модель видит задачу, она сразу пытается решить с тем что есть. Если данных не хватает — она додумает, угадает или пропустит проблему. У неё нет естественного стимула остановиться и спросить: "А точно ли мне всего хватает?" Прямое рассуждение предполагает полноту исходных данных.
Обратное направление превращает поиск пробелов в рутинную задачу. Модель хорошо умеет декомпозировать цель на составляющие ("чтобы посчитать X, нужны A, B, C") и сравнивать списки ("есть ли A в условии? а B?"). Это гораздо проще, чем во время решения заметить, что какого-то параметра не было. Обратное мышление делает проверку полноты явной и структурированной, а не побочным эффектом попытки решить.
Рычаги управления промптом:
- Глубина декомпозиции — попроси "перечислить условия второго уровня" (что нужно для самих предпосылок) → найдёшь более глубокие пробелы, но больше токенов
- Строгость проверки — добавь "считать недостающим только если нельзя вывести никак" → меньше ложных срабатываний
- Формат вывода — убери "для каждого условия проверь" и попроси сразу список недостающего → быстрее, но менее прозрачно
Шаблон промпта
Используй обратное мышление для проверки полноты данных:
ЗАДАЧА: {описание задачи}
ШАГ 1 — Финальная цель:
Определи что нужно найти или решить в этой задаче.
ШАГ 2 — Необходимые условия:
Перечисли ВСЕ условия, параметры, данные и соотношения,
которые должны быть известны для достижения цели.
ШАГ 3 — Проверка доступности:
Для каждого условия проверь:
- Дано явно в задаче?
- Можно вывести из имеющейся информации?
- Информации нет?
ВЫВОД:
Если все условия доступны → напиши "Данных достаточно для решения"
Если есть недостающие → перечисли конкретно ЧТО отсутствует и ПОЧЕМУ это критично
Подставляй:
- {описание задачи} — любая задача где нужно что-то посчитать, оценить, проверить, принять решение
🚀 Быстрый старт — вставь в чат:
Вот шаблон RT-ICA для проверки полноты данных. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит о специфике твоей задачи — потому что разные домены требуют разных типов условий (для финансов — одни параметры, для техзаданий — другие). Она возьмёт паттерн обратного мышления из шаблона и настроит под твой контекст.
Ограничения
⚠️ Ложные тревоги: Модель может пометить как "недостающее" то, что неявно задано или выводимо из общих знаний. Например, если в задаче про пропорции не указана одна величина явно, но её можно посчитать через другие — модель может всё равно сказать "не хватает". Особенно проблема с многоэквивалентными формулировками — когда задачу можно решить несколькими путями с разными наборами данных.
⚠️ Размытые описания пробелов: Когда модель правильно находит недостающее, она иногда описывает это слишком общими словами ("не хватает дополнительной информации") вместо точного указания ("не указана себестоимость единицы товара"). Читателю приходится самому додумывать конкретику.
⚠️ Больше токенов: Метод требует в 2.3 раза больше токенов чем обычный Chain-of-Thought и работает на 1.8x дольше. Для сложных задач с длинным списком условий счёт может быть ощутимым.
Как исследовали
Исследователи взяли два математических бенчмарка (GSM8K и Math500) и вручную сломали часть задач — убрали из условий критичные данные. Получилось 105 задач из GSM8K (52 неполных + 53 нормальных) и 101 из Math500 (39 неполных + 62 нормальных). Каждую сломанную задачу проверяли несколько аннотаторов, чтобы точно понимать — действительно ли данных не хватает или можно вывести из контекста.
Задача для моделей была определить есть ли пробел, без доступа к правильному ответу. Проверяли на трёх моделях: GPT-4, GPT-3.5-turbo, DeepSeek-V3. Считали три метрики: общую точность (правильно определил для любой задачи), точность на неполных задачах ("да, не хватает"), точность на полных задачах ("нет, всё есть").
Результаты оказались впечатляющими именно для слабых моделей: GPT-3.5-turbo на dataset GSM8K прыгнул с 30.77% до 82.69% в способности находить неполные задачи — почти в три раза. Для GPT-4 прирост скромнее (с 61.54% до 76.92%), но тоже значительный. Почему такая разница? Сильные модели и так умеют частично "чувствовать" недостающее через опыт обучения, а слабым нужна явная структура мышления. Обратное мышление даёт им эту структуру.
Интересная находка: метод почти не навредил способности распознавать полные задачи (где всё есть). DeepSeek-V3 даже улучшился с 82.26% до 98.39% на полных задачах из Math500. Это значит, что обратное мышление не делает модель параноиком, который везде видит пробелы — оно просто добавляет систематичность.
Авторы честно указали компромисс: в 2.3 раза больше токенов. Но это плата за то, что модель теперь не галлюцинирует ответы на вопросы без данных, а честно говорит "мне не хватает X и Y".
Адаптации и экстраполяции
🔧 Техника: Двухуровневая проверка → глубже находит зависимости
Добавь после ШАГа 2:
ШАГ 2.5 — Проверка условий второго уровня: Для каждого условия из ШАГа 2 спроси: "Что нужно, чтобы это условие САМО было выполнимо?" Перечисли предпосылки второго порядка.Это находит скрытые зависимости — например, "для расчёта прибыли нужна себестоимость" → "для себестоимости нужны цены поставщиков и объёмы закупки". Полезно для сложных многослойных задач.
🔧 Техника: Только критичное → меньше ложных тревог
В ШАГе 3 добавь:
Помечай как недостающее ТОЛЬКО если: 1. Информацию нельзя вывести из имеющихся данных никаким способом 2. Без неё невозможен расчёт (а не просто "было бы удобнее")Снижает количество ложных срабатываний на неявно заданную информацию.
🔧 Комбинация с Chain-of-Thought: сначала проверь полноту, потом реши
ЭТАП 1 — Проверка полноты (обратное мышление): [шаблон RT-ICA] ЭТАП 2 — Решение (прямое рассуждение): Если данных достаточно: Реши задачу пошагово, объясняя каждый шаг. Если данных НЕ достаточно: Реши задачу при следующих ДОПУЩЕНИЯХ: [подставь разумные значения для недостающего] Чётко укажи что это допущения, не факты.Полезно когда нужен хоть какой-то ответ, даже если данных не хватает — модель даст оценку, но честно скажет "это при условии что X примерно равен Y".
Ресурсы
Reverse Thinking Enhances Missing Information Detection in Large Language Models
Yuxin Liu, Chaojie Gu, Yihang Zhang, Bin Qian, Shibo He
Zhejiang University
Ссылки из исследования:
- Chain-of-Thought Prompting [Wei et al., 2022]
- Tree-of-Thought [Yao et al., 2023]
- Fill-in-the-blank reasoning [Deb et al., 2024]
- Reverse-enhanced thinking [Chen et al., 2024]
- GSM8K benchmark [Cobbe et al., 2021]
- Math500 benchmark [Hendrycks et al., 2021]
