TL;DR
Метод ставит между вопросом пользователя и финальным ответом промежуточный шаг: модель сначала строит список возможных гипотез-ответов, находит какая именно недостающая информация о человеке различает эти гипотезы, задаёт один точный вопрос по этой переменной, обновляет список гипотез по ответу — и повторяет, пока не наберётся достаточно контекста для уверенного ответа.
Когда модель отвечает на неполный вопрос напрямую, она не спрашивает "чего не хватает" — она молча достраивает недостающие детали из самого частого паттерна в обучении. На вопрос "что принять от головной боли" модель выберет "усреднённого" пациента без беременности, без антикоагулянтов, без болезни печени — и это может быть неправильно для конкретного человека. Простое переформулирование вопроса (без сбора новой информации) вообще не помогает: точность точного диагноза при таком подходе была около 1-11%, потому что переформулировка меняет слова, но не добывает новых фактов.
Метод разделяет две задачи, которые обычно свалены в одну: сбор недостающего контекста и генерацию финального ответа. Сначала — цикл из явных гипотез и целевых вопросов, который сужает пространство возможных ответов. Потом — финальный ответ уже на основе полного контекста. Именно эта развязка подняла точность точного диагноза с 1-11% до 58-71%.
Схема метода
ШАГ 1: Разобрать запрос → сгенерировать список плausible гипотез-ответов
ШАГ 2: Найти переменную о пользователе, которая сильнее всего различает гипотезы → сформулировать ОДИН целевой вопрос
ШАГ 3: Получить ответ пользователя → сузить/обновить список гипотез
ШАГ 4: Повторить шаги 2-3, пока не выполнится одно из условий:
- осталась одна уверенная гипотеза
- осталась группа близких по смыслу гипотез (можно дать общий ответ)
- информации всё равно недостаточно → честно сказать "не могу ответить без Х"
ШАГ 5: Собрать финальный промпт = исходный вопрос + весь собранный контекст → сгенерировать финальный ответ
Это диалог из нескольких запросов, не один промпт: модель должна получить реальный ответ пользователя перед следующим уточнением.
Пример применения
Задача: Пользователь спрашивает юридического бота (или просто ChatGPT) "Можно ли вернуть телефон, который я купил в интернет-магазине?" — вопрос понятный, но ответ зависит от срока покупки, был ли товар в использовании, есть ли брак, и относится ли смартфон к технически сложным товарам, которые не возвращают без брака.
Промпт:
Ты — юридический консультант по правам потребителей. Пользователь задал вопрос,
на который нельзя дать точный ответ без дополнительной информации.
Вопрос пользователя: "Можно ли вернуть телефон, который я купил в интернет-магазине?"
Действуй по циклу:
1. Составь список из 3-5 гипотез — возможных исходов (можно вернуть без проблем /
можно вернуть только при браке / нельзя вернуть / зависит от условий магазина и т.д.)
2. Определи ОДНУ переменную (дату покупки, наличие брака, состояние товара,
был ли товар в упаковке), которая сильнее всего сужает список гипотез.
3. Задай мне ОДИН точный вопрос по этой переменной. Не задавай общий вопрос
"расскажите подробнее" — задавай конкретный.
4. После моего ответа — обнови список гипотез и повтори шаг 2-3,
если гипотез больше одной.
5. Как только гипотеза станет одной (или группой очень похожих) —
дай финальный развёрнутый ответ с учётом всего собранного контекста.
Если после 3-4 вопросов данных всё равно недостаточно — честно скажи об этом
и укажи, чего именно не хватает.
Результат: Модель не выдаст сразу общий ответ типа "зависит от обстоятельств". Она задаст 2-3 конкретных уточняющих вопроса по очереди (например: "сколько дней прошло с покупки?", "телефон был в использовании или в оригинальной упаковке?", "есть ли у вас чек?"), после каждого ответа сузит список возможных исходов, и в конце даст точный вывод — можно вернуть или нет, и почему.
Почему это работает
Модель, отвечая на неполный вопрос "в лоб", не осознаёт, что у неё нет ключевой информации — она просто заполняет пробел самым вероятным вариантом из обучения. Переформулировка вопроса эту проблему не решает: она меняет слова, но не добывает новых фактов, поэтому точность почти не растёт.
Зато модель хорошо умеет перечислять альтернативы и находить, что их разделяет — это структурная задача, которая ей даётся легче, чем угадать правильный ответ с первой попытки. Явное построение гипотез превращает угадывание в поиск: вместо "какой ответ выбрать" модель решает "какой вопрос задать, чтобы сократить список вариантов".
Метод снимает с модели двойную нагрузку. Обычно она одновременно должна и додумывать контекст, и формулировать финальный ответ. Разделение на "сначала собери контекст, потом отвечай" убирает эту путаницу — каждый шаг решает одну задачу.
Рычаги управления: - Число раундов уточнения — ограничь ("максимум 3 вопроса"), если не хочешь долгий диалог - Условие остановки — замени "одна гипотеза" на "группа похожих гипотез", если тебе достаточно приблизительного ответа - Видимость гипотез — попроси показывать список гипотез на каждом шаге, чтобы видеть логику модели, или скрыть для чистого диалога
Шаблон промпта
Ты — консультант по теме: {тема_задачи}.
Пользователь задал вопрос, на который нельзя дать точный ответ без дополнительной информации.
Вопрос пользователя: "{вопрос}"
Действуй по циклу:
1. Составь список из {число_гипотез} гипотез — возможных исходов/ответов.
2. Определи ОДНУ переменную, которая сильнее всего сужает список гипотез.
3. Задай мне ОДИН точный вопрос по этой переменной.
4. После моего ответа — обнови список гипотез и повтори шаг 2-3, если гипотез больше одной.
5. Как только гипотеза станет одной (или группой похожих) — дай финальный ответ.
Если после {максимум_вопросов} вопросов данных всё равно недостаточно —
честно скажи, чего не хватает, вместо того чтобы гадать.
Подставь: {тема_задачи} — область консультации (юрист, HR, финансы, здоровье), {вопрос} — реальный запрос, {число_гипотез} — обычно 3-5, {максимум_вопросов} — сколько уточнений допустимо (2-4).
🚀 Быстрый старт — вставь в чат:
Вот шаблон Hypothesis-Driven Clarification. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про тему консультации и реальный вопрос пользователя — потому что без них не построить список гипотез. Она возьмёт паттерн из шаблона и адаптирует под твою область.
Ограничения
⚠️ Требует диалога, не один запрос: метод не работает как "промпт-и-готово" — пользователь должен реально отвечать на уточняющие вопросы. Не подходит, если нужен мгновенный ответ без переписки.
⚠️ Без специализированной базы знаний точность ниже: в оригинале модель опиралась на специальный граф медицинских знаний (UMLS). В обычном чате модель генерирует гипотезы из своих общих знаний — это менее надёжно в узких профессиональных темах (сложная юриспруденция, редкие медицинские состояния).
⚠️ Не замена специалисту: метод повышает точность модели, но в медицине, праве и финансах финальный ответ всё равно должен проверить человек-эксперт — особенно если ставки высоки.
Как исследовали
Исследователи протестировали пять языковых моделей (GPT-5.5, Claude Opus 4.8, Gemini 3.1 Pro, LLaMA 3.3 70B, Mistral Large) на двух задачах: определение диагноза по симптомам (1034 случая, часть симптомов специально скрыли) и оценка безопасности еды при заболевании (487 запросов, скрыли ключевое условие здоровья, например диабет или беременность). Сравнили три подхода: прямой ответ на неполный вопрос, переформулировка вопроса без новой информации, и агент с уточняющими вопросами на основе графа знаний.
Результат оказался резким: переформулировка почти не помогала — точность точного диагноза держалась на уровне 1-11%, тогда как агент с уточнениями поднял её до 58-71%. Любопытная деталь: на уровне широкой категории диагноза (не точного названия) разница была куда меньше — модели неплохо угадывали общее направление и без уточнений, но терялись именно в деталях. Это подсказывает практический вывод: чем точнее и персонализированнее должен быть ответ, тем важнее добыть недостающий факт, а не просто красивее переспросить.
