3,583 papers
arXiv:2511.10453 74 13 нояб. 2025 г. FREE

Intent Reasoning: явное перечисление интерпретаций для неоднозначных запросов

КЛЮЧЕВАЯ СУТЬ
LLM встречает неоднозначный вопрос («Покажи требуемый опыт для вакансии» — минимальный или предпочтительный?) и молча выбирает одну интерпретацию. Ты не знаешь что были альтернативы. Если выбор не совпал с намерением — фрустрация. В критичных задачах (SQL, код, действия) это ведёт к необратимым ошибкам. Intent Reasoning заставляет модель рассуждать о намерении ПЕРЕД ответом: выделить все возможные интерпретации и дать ответ для каждой. Одна генерация вместо диалога с уточняющими вопросами — формат «Если вы имели в виду X → ответ A. Если Y → ответ B». Структура легко парсится для агентов и позволяет пользователю быстро найти нужный вариант.
Адаптировать под запрос

TL;DR

Intent Reasoning — подход, который заставляет LLM генерировать несколько пар "интерпретация → ответ" для неоднозначного запроса вместо молчаливого выбора одного варианта. Вместо "вот ответ" модель выдаёт: "Если вы имели в виду X — ответ A. Если Y — ответ B. Если Z — ответ C."

Обычно LLM встречают неоднозначный вопрос (например, "Покажи требуемый опыт для лучшей вакансии" при наличии полей Min_Years и Pref_Years) и неявно выбирают одну интерпретацию, выдавая единственный ответ. Пользователь не знает, что модель рассматривала другие варианты и выбрала за него. Если выбор не совпал с намерением — фрустрация. В критичных сценариях (код, SQL, действия) это может привести к необратимым ошибкам. Модель тратит токены на рассуждения по неверной интерпретации, одновременно расходуя ресурсы и углубляя ошибку.

Метод учит модель сначала рассуждать о намерении пользователя: выделить возможные интерпретации запроса, затем дать ответ для каждой в структурированном формате. Одна генерация вместо диалога с уточняющими вопросами. Формат легко парсится для агентных систем и позволяет пользователю быстро найти нужный вариант. Исследователи обучали модель через reinforcement learning: для неоднозначных запросов максимизировали recall (покрыть все валидные интерпретации), для однозначных — precision (не генерировать лишнее).


📌

Схема подхода

ШАГ 1: Анализ запроса на неоднозначность
  ↓
ШАГ 2: Генерация структурированного вывода (один промпт)

  Если неоднозначный:
    1. [Интерпретация 1] → [Ответ 1]
    2. [Интерпретация 2] → [Ответ 2]
    3. [Интерпретация 3] → [Ответ 3]

  Если однозначный:
    1. [Переформулировка или повтор вопроса] → [Ответ]

Всё происходит в одной генерации. Каждая последующая интерпретация учитывает предыдущие (autoregressive), что обеспечивает разнообразие и согласованность интерпретаций с ответами.


🚀

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

Задача: Планируешь запуск нового продукта. Спрашиваешь у модели: "Когда мы сможем выйти на 100К пользователей?" — но не уточняешь, имеешь в виду активных пользователей, зарегистрированных или платящих.

Промпт:

Проанализируй вопрос на неоднозначность. Если есть несколько возможных 
интерпретаций — перечисли их явно и дай ответ для каждой в формате:

1. [Интерпретация] 
   Ответ: [конкретный ответ]

Вопрос: Когда мы сможем выйти на 100К пользователей?

Контекст: 
- Сейчас 5K зарегистрированных, из них 2K активных (заходят раз в неделю), 300 платящих
- Рост регистраций: 500 в месяц
- Конверсия в активных: 40%
- Конверсия в платящих: 15% от активных
- Цель компании: устойчивая монетизация

Результат: Модель выдаст структурированный список: интерпретация "100К зарегистрированных", "100К активных", "100К платящих" с отдельными расчётами и прогнозами для каждого варианта. Увидишь, что для 100К зарегистрированных нужно 16 месяцев при текущем темпе, для 100К активных — гораздо дольше с учётом конверсии, а для 100К платящих — нереально без изменения бизнес-модели. Каждая интерпретация чётко обозначена, ответы не смешиваются.


🧠

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

LLM плохо определяют границы своего понимания. Встретив неоднозначность, модель не говорит "не уверена" — она молча выбирает наиболее вероятную по её весам интерпретацию и отвечает так, будто других не существует. Пользователь не знает о существовании альтернатив.

LLM хорошо перечисляют варианты, когда их об этом попросить явно. Autoregressive генерация (каждое следующее слово учитывает предыдущие) естественно создаёт последовательное перечисление: сгенерировав первую интерпретацию, модель "видит" её в контексте и генерирует вторую как отличную от первой. Это даёт разнообразие без манипуляций температурой или параллельных сэмплов.

Метод явно инструктирует модель рассуждать о намерении перед ответом — сдвигает фокус с "как ответить" на "что имел в виду пользователь". Структурированный формат вывода делает интерпретации видимыми и заставляет модель их артикулировать, а не держать "в голове". Каждая интерпретация получает свой ответ, что делает связь "интерпретация → ответ" прозрачной.

Рычаги управления:

  • Число интерпретаций: исследователи ограничили 5 максимум. Можно снизить до 3 для простоты или увеличить, если задача сложная
  • Формат интерпретаций: можно попросить короткие ("Min years" vs "Pref years") или развёрнутые ("Вопрос относится к минимально требуемому опыту")
  • Условие включения: добавить "генерируй несколько вариантов только если действительно неоднозначно" vs "всегда рассматривай альтернативы"
  • Стиль ответов: "только факт" vs "с объяснением логики"

📋

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

Проанализируй вопрос на возможную неоднозначность.

Если вопрос может иметь несколько разных интерпретаций — перечисли их 
явно и дай ответ для каждой интерпретации.

Если вопрос однозначен — дай один ответ.

Формат вывода:
1. [Интерпретация 1]
   Ответ: [конкретный ответ для этой интерпретации]

2. [Интерпретация 2]
   Ответ: [конкретный ответ для этой интерпретации]

[и так далее, максимум 5 интерпретаций]

Контекст: {контекст}
Вопрос: {вопрос}

Что подставлять: - {контекст} — информация, относящаяся к вопросу (документ, данные, схема базы, предыдущие сообщения) - {вопрос} — сам запрос пользователя

Адаптация под задачу: Можно добавить ограничения на формат ответа (например, "SQL запрос", "число в рублях", "список действий"). Можно указать типы неоднозначности, которые ожидаешь ("референс может относиться к разным объектам", "может быть несколько подходящих временных периодов").


⚠️

Ограничения

⚠️ Переоценка неоднозначности: Модель иногда видит неоднозначность там, где её нет, генерируя избыточные интерпретации для простых вопросов. Precision для однозначных вопросов ~40-70%, что означает — каждый третий-пятый "простой" вопрос получит несколько вариантов ответа.

⚠️ Качество интерпретаций не контролируется напрямую: Метод не включает явной проверки качества самих интерпретаций — только соответствие ответов эталонам. Интерпретация может быть сформулирована невнятно, но если ответ совпал с эталоном, reward высокий.

⚠️ Требует эталонных ответов для обучения: Полноценное применение подхода (с RL) требует датасет с несколькими валидными ответами на вопрос. Через промптинг можно использовать идею, но без гарантии покрытия всех интерпретаций.

⚠️ Не заменяет уточняющие вопросы в сложных случаях: Если интерпретаций больше 5 или они требуют знания намерений пользователя (например, "подходящий стиль текста"), перечисление всех вариантов становится громоздким — лучше спросить.


🔍

Как исследовали

Исследователи взяли две задачи: Abg-CoQA (conversational QA, ~6K примеров для обучения) и Ambrosia (text-to-SQL, ~3.4K примеров). Обе содержат вопросы с несколькими валидными ответами — естественный сигнал неоднозначности без дорогой аннотации интерпретаций.

Обучали Qwen 4B Instruct через reinforcement learning (DAPO — улучшенная версия GRPO). Ключевая идея: разные reward-функции для разных типов вопросов. Для неоднозначных максимизировали recall (Hungarian algorithm для оптимального matching предсказаний и эталонов), для однозначных — precision. Это учит модель когда генерировать несколько вариантов, а когда один.

Данные ребалансировали 3:1 в пользу неоднозначных примеров — иначе модель училась только отвечать однозначно (supervised fine-tuning дал 70% precision, но лишь 48% recall и 20% full coverage для неоднозначных).

Сравнивали с zero-shot промптингом (4B и 235B MoE модели, обычные и thinking варианты), SFT, многоэтапным методом (сначала интерпретации, потом SQL) и ACT (multi-turn clarification через RL).

Результаты удивили: IntentRL достиг 78% recall и 61% full coverage на Abg-CoQA (то есть в 61% случаев модель покрыла ВСЕ валидные интерпретации), обогнав даже модели в 50+ раз крупнее (235B Thinking: 69% recall, 50% full coverage). На Ambrosia — 75% recall, 57% full coverage.

Неожиданное: thinking-модели не превзошли обычные instruct-модели на этой задаче, иногда даже уступали. Длинные reasoning traces не помогли — модель тратила тысячи токенов на неверную интерпретацию вместо перечисления альтернатив. Крупные модели склонны подозревать неоднозначность чаще (высокий recall, низкий precision) — пытаются выдать несколько ответов, но неэффективно.

Практический инсайт: Одношаговая генерация всех интерпретаций эффективнее multi-turn диалога с уточнениями. IntentRL (83% similarity на Abg-CoQA) обогнал ACT (75%) при том, что ACT требовал несколько раундов взаимодействия с симуляцией пользователя.


💡

Адаптации и экстраполяции

📌

🔧 Техника: Гибридный формат → показать уверенность

Можно комбинировать перечисление интерпретаций с оценкой вероятности каждой:

Проанализируй вопрос на неоднозначность. Для каждой интерпретации укажи 
насколько она вероятна (высокая/средняя/низкая) и дай ответ.

Формат:
1. [Интерпретация 1] — вероятность: [высокая/средняя/низкая]
   Ответ: [...]

Контекст: {контекст}
Вопрос: {вопрос}

Это позволяет пользователю сразу видеть, какую интерпретацию модель считает наиболее вероятной, сохраняя альтернативы.


📌

🔧 Техника: Запрос на пояснение → чем интерпретации отличаются

Добавить после каждой интерпретации короткое объяснение почему это отдельный вариант:

Для каждой интерпретации объясни в одном предложении, чем она 
отличается от других.

1. [Интерпретация 1]
   Отличие: [что делает эту интерпретацию уникальной]
   Ответ: [...]

Полезно для обучения или когда пользователь хочет понять логику модели.


🔗

Ресурсы

Reasoning About Intent for Ambiguous Requests

Исследование с кодом: https://github.com/saparina/intentRL

Irina Saparina, Mirella Lapata — University of Edinburgh

Упоминаемые датасеты и методы: - Abg-CoQA (Guo et al., 2021) — conversational QA с неоднозначностью - Ambrosia (Saparina & Lapata, 2024) — text-to-SQL с multiple valid queries - ACT (Chen et al., 2025) — multi-turn clarification через preference optimization - DAPO (Yu et al., 2025) — RL алгоритм с decoupled clipping


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

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

LLM встречает неоднозначный вопрос («Покажи требуемый опыт для вакансии» — минимальный или предпочтительный?) и молча выбирает одну интерпретацию. Ты не знаешь что были альтернативы. Если выбор не совпал с намерением — фрустрация. В критичных задачах (SQL, код, действия) это ведёт к необратимым ошибкам. Intent Reasoning заставляет модель рассуждать о намерении ПЕРЕД ответом: выделить все возможные интерпретации и дать ответ для каждой. Одна генерация вместо диалога с уточняющими вопросами — формат «Если вы имели в виду X → ответ A. Если Y → ответ B». Структура легко парсится для агентов и позволяет пользователю быстро найти нужный вариант.

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

Обычная генерация: модель видит неоднозначность → молча выбирает наиболее вероятную по весам интерпретацию → выдаёт единственный ответ как факт. Intent Reasoning: модель анализирует запрос на неоднозначность → генерирует структурированный список «[Интерпретация 1] → [Ответ 1], [Интерпретация 2] → [Ответ 2]...» → пользователь видит все варианты. Последовательная генерация (каждая интерпретация учитывает предыдущие) естественно создаёт разнообразие без манипуляций температурой. Сгенерировав первую интерпретацию, модель «видит» её в контексте и формулирует вторую как отличную.

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

LLM плохо определяют границы своего понимания — встретив неоднозначность, модель не говорит «не уверена», она молча выбирает наиболее вероятную по весам интерпретацию. Структурированный формат сдвигает фокус с «как ответить» на «что имел в виду пользователь» — модель вынуждена артикулировать интерпретации, а не держать их «в голове». Каждая интерпретация получает свой ответ — связь «интерпретация → ответ» становится прозрачной. LLM хорошо перечисляют варианты когда их об этом просить явно — autoregressive генерация (каждое следующее слово учитывает предыдущие) создаёт последовательное перечисление без дублей.

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

Работа с данными → запросы к базам (SQL), поиск в документах, аналитика, особенно когда в схеме есть похожие поля (min_experience vs preferred_experience) или многозначные термины. Критичные задачи → генерация кода, построение action-планов для агентов, финансовые расчёты — там где ошибка из-за неверной интерпретации дорого стоит. НЕ подходит для случаев когда интерпретаций больше 5 или они требуют знания контекста пользователя («подходящий стиль текста») — там лучше спросить напрямую.

Мини-рецепт

1. Добавь инструкцию в промпт: Проанализируй вопрос на неоднозначность. Если может иметь несколько интерпретаций — перечисли их явно и дай ответ для каждой. Формат: 1. [Интерпретация] → Ответ: [конкретный ответ]
2. Укажи контекст: Дай модели всю информацию для понимания вопроса — документ, схему базы данных, предыдущие сообщения переписки
3. Ограничь число интерпретаций: Добавь максимум 3-5 интерпретаций — без этого модель может уйти в избыточное перечисление
4. Для агентных систем: Парси структурированный вывод — каждая пара [Интерпретация] → [Ответ] как отдельный элемент списка для UI или дальнейшей обработки

Примеры

[ПЛОХО] : Когда мы сможем выйти на 100К пользователей? Контекст: 5К зарегистрированных, 2К активных, 300 платящих. Рост 500/месяц Модель выдаст один ответ (скорее всего про зарегистрированных как самую простую метрику) — ты не узнаешь что она могла посчитать для активных или платящих.
[ХОРОШО] : Проанализируй вопрос на неоднозначность. Если несколько интерпретаций — перечисли явно в формате: 1. [Интерпретация] → Ответ: [расчёт]. Максимум 5 вариантов. Вопрос: Когда выйдем на 100К пользователей? Контекст: 5К зарегистрированных, 2К активных (раз в неделю), 300 платящих. Рост регистраций 500/мес, конверсия в активных 40%, в платящих 15% от активных Получишь: «1. 100К зарегистрированных → 16 месяцев при текущем темпе. 2. 100К активных → ~40 месяцев с учётом конверсии 40%. 3. 100К платящих → нереально без изменения модели (нужна конверсия 15% от 666К активных)». Видишь все варианты сразу.
Источник: Reasoning About Intent for Ambiguous Requests
ArXiv ID: 2511.10453 | Сгенерировано: 2026-01-12 18:17

Проблемы LLM

ПроблемаСутьКак обойти
Модель выбирает интерпретацию молчаЗапрос можно понять по-разному. Модель выбирает один вариант и отвечает. Не говорит что были другие варианты. Пользователь не знает о выборе. Если выбор неверный — получает не тот ответ. Особенно опасно для SQL, кода, действий — ошибка может быть необратимойПопроси модель сначала перечислить все возможные интерпретации. Потом дать ответ для каждой. Формат: "1. [Интерпретация А] Ответ А. 2. [Интерпретация Б] Ответ Б". Всё в одной генерации, не диалог

Методы

МетодСуть
Явное перечисление интерпретаций перед ответомЧто делать: Добавь в промпт: "Если вопрос неоднозначен — перечисли возможные интерпретации. Дай ответ для каждой. Формат: 1. [Интерпретация] Ответ: [текст]". Модель сначала рассуждает о намерении пользователя, потом отвечает. Почему работает: Autoregressive генерация создаёт естественное перечисление — каждая следующая интерпретация "видит" предыдущие в контексте и генерируется как отличная от них. Структурированный формат заставляет модель артикулировать скрытые варианты вместо молчаливого выбора. Когда да: неоднозначные термины, множество референсов, критичные действия (SQL, код). Когда нет: вопрос однозначен, интерпретаций больше 5-7 (становится громоздко)

Тезисы

ТезисКомментарий
LLM плохо определяют границы понимания но хорошо перечисляют вариантыМодель встречает неоднозначность — молча выбирает наиболее вероятную интерпретацию и отвечает будто других нет. Не говорит "не уверена". Но если явно попросить "перечисли варианты" — сделает это хорошо. Разница в инструкции. Применяй: Не полагайся на то что модель скажет о неоднозначности сама. Всегда инструктируй явно: "если есть несколько вариантов — покажи все"
Структурированный формат делает неявные выборы видимымиКогда модель должна записать "Интерпретация 1: ..., Интерпретация 2: ..." — вынуждена артикулировать то что иначе осталось бы внутри. Формат превращает внутреннее рассуждение во внешний вывод. Связь "интерпретация ответ" становится прозрачной для пользователя и самой модели. Применяй: Для критичных запросов требуй структурированный вывод с явным разделением вариантов. Шаблон: "1. [Вариант А] Ответ: ... 2. [Вариант Б] Ответ: ..."
📖 Простыми словами

Языковые модели — те еще самоуверенные типы. Когда ты задаешь им неоднозначный вопрос, они не переспрашивают, а просто молча выбирают один вариант и выдают его за истину. Это фундаментальный баг современных LLM: они обучены минимизировать потери, а не признавать, что данных не хватает. В итоге, если ты спросил «как его зовут?», имея в виду сына, а модель решила, что речь о муже, ты получишь уверенную дезу. Исследователи из Эдинбурга решили это исправить, научив модель не гадать, а вываливать сразу все логичные варианты в формате интерпретация + ответ.

Это как если бы ты пришел к юристу с кривым договором. Обычный юрист (стандартная LLM) просто сказал бы: «подписывай, тут все ок», выбрав одну трактовку. А крутой эксперт разложит по полочкам: «Смотри, если мы трактуем пункт А так — то риск такой, а если вот так — то сякой». Модель теперь работает именно так: она не просто выдает текст, а сначала рассуждает о намерениях, а потом генерирует список из 2–5 сценариев. Причем делает это за один проход, а не в режиме бесконечного чата «уточни, что ты имел в виду».

Чтобы эта магия заработала, использовали reinforcement learning с хитрой системой наград. Метод назвали IntentRL, и его фишка в dual reward: если вопрос мутный, модель хвалят за recall (чтобы не забыла ни одну версию), а если вопрос четкий — за precision (чтобы не плодила лишнюю сущность). В итоге на задачах text-to-SQL модель находит 82% всех верных трактовок, а в обычном диалоге — 78%. Главный инструмент здесь — autoregressive conditioning: модель видит, что она уже написала первую версию, и это заставляет её придумывать вторую, которая от первой отличается. Никакого самоповтора, только хардкорное разнообразие.

Тестировали всё это на SQL-запросах и диалогах, но принцип универсален. Это критически важно для любых систем, где цена ошибки высока: медицина, юриспруденция или сложные корпоративные базы данных. Если твоя модель пишет код или лезет в БД, она обязана показывать, как именно она поняла задачу. SEO для роботов уходит в прошлое, наступает эра прозрачности намерений. Если модель не умеет сказать «я вижу тут два варианта», она профнепригодна для серьезных задач.

Короче: хватит надеяться, что промпт «будь внимателен» спасет от галлюцинаций. Нужно либо дообучать модель через RL на датасетах с несколькими ответами, либо как минимум внедрять структуру анализ → список интерпретаций. Да, барьер входа тут приличный — нужны GPU и прямые руки для RL — но результат того стоит. Либо ты учишь модель признавать неоднозначность, либо продолжаешь играть в рулетку с её ответами. 82% покрытия смыслов — это уже не шутки, это уровень, когда AI реально начинает понимать контекст, а не просто имитировать речь.

Сгенерировано: 21.12.2025 16:57 | ArXiv Data Collector

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

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

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