TL;DR
LLM при анализе данных систематически выходит за рамки того, что данные реально показывают — заполняет пробелы правдоподобными, но ничем не подкреплёнными объяснениями. Попросил модель объяснить падение конверсии по цифрам из таблицы — она уверенно назовёт "сезонность", "усталость аудитории" или "изменение алгоритма", даже если в данных нет ни намёка на причину. Звучит убедительно. Ощущается как инсайт. Но это домысел.
Главная ловушка — это не обычная галлюцинация (когда модель говорит что-то явно ложное). Это тихий сдвиг: модель правильно описывает что произошло, а потом прибавляет уверенный ответ на вопрос почему — хотя данных на почему нет. Причём если дать модели больше данных, проблема не уходит — она генерирует более детальные, но столь же неподкреплённые истории.
Работает одно: явно инструктировать модель держаться в рамках доступных данных, признавать пробелы и разделять наблюдение и вывод. Исследователи назвали такой подход bounded prompting (ограниченное промптирование) — он снижает проблему, хотя и не устраняет полностью.
Схема метода
ПРОБЛЕМА (по умолчанию):
Данные → LLM → "Это произошло потому что [уверенное объяснение]"
↑
Данных на "почему" нет, но звучит правдоподобно
РЕШЕНИЕ — добавить 4 явных ограничения в промпт одним блоком:
ОГРАНИЧЕНИЕ 1: Оставайся в рамках предоставленных данных
ОГРАНИЧЕНИЕ 2: Явно укажи, каких данных не хватает для уверенного вывода
ОГРАНИЧЕНИЕ 3: Разделяй: "данные показывают X" vs "можно предположить Y"
ОГРАНИЧЕНИЕ 4: Калибруй уверенность — не говори уверенно о том, чего не видно
→ Всё это вставляем в один промпт, до задачи
Схема работает в одном промпте. Отдельного запроса не нужно.
Пример применения
Задача: Маркетолог в небольшом интернет-магазине видит в Яндекс.Метрике, что в прошлый вторник конверсия упала с 3,2% до 1,1%. Просит ChatGPT объяснить что произошло.
Что происходит без bounded prompting: Модель уверенно выдаёт: "Вероятно, причиной стала усталость аудитории от рекламных кампаний, возможное изменение алгоритма Яндекса или технические проблемы на сайте..." — ни одна из причин не следует из данных.
Промпт с bounded prompting:
Вот данные по конверсии магазина за последние 7 дней:
[вставить данные]
Проанализируй аномальный день (вторник, падение с 3,2% до 1,1%).
Важно: работай строго в рамках этих правил:
1. Опирайся только на то, что видно в предоставленных данных
2. Явно укажи, каких данных не хватает для уверенного вывода о причине
3. Различай: "данные показывают X" (наблюдение) и "можно предположить Y"
(гипотеза, не факт)
4. Не говори уверенно о том, что данные не подтверждают —
используй "возможно", "данных недостаточно чтобы утверждать"
Сначала опиши что данные реально показывают. Потом — гипотезы (явно
обозначив их как гипотезы). Потом — что нужно проверить дополнительно.
Результат: Модель выдаст три чётких блока: что данные показывают (факт: конверсия упала, других аномалий нет), что остаётся неизвестным (трафик, источники, поведение на странице — в данных нет), и список гипотез с явной пометкой что это предположения. Никаких уверенных "скорее всего, причина в...".
Почему это работает
LLM обучена объяснять. Её обучали на текстах, где за вопросом "почему" всегда следует ответ. Пробел в данных для неё — не повод остановиться, а повод заполнить наиболее правдоподобным вариантом. Чем лучше модель, тем убедительнее звучит заполненный пробел.
Проблема не в качестве данных, а в отсутствии инструкции остановиться. Исследование показало: давать больше данных не помогает. Модель просто строит более детальную версию той же неподкреплённой истории. Это важно — интуиция подсказывает "дай больше контекста", но решение не здесь.
Bounded prompting задаёт явный стоп-сигнал. Когда модель получает явное разрешение сказать "данных недостаточно" и инструкцию разделять факт и гипотезу — она перестаёт заполнять пробелы автоматически. Не потому что стала "честнее", а потому что инструкция меняет паттерн генерации: теперь "я не знаю" — это валидный ответ.
Пять форм epistemic overreach — чеклист для проверки любого LLM-анализа:
| Тип | Как выглядит |
|---|---|
| Причинный домысел | "Это произошло из-за X" — но X в данных не видно |
| Молчание о пробелах | Объясняет не упоминая, что ключевых данных нет |
| Уверенный язык | "Очевидно", "скорее всего", "явно" — о неизвестном |
| Временная путаница | Меняет местами причину и следствие |
| Диагноз без оснований | "Стресс", "усталость", "перегрузка" — без данных |
Шаблон промпта
Вот данные: {данные}
Проанализируй {что_анализируем}.
Правила работы — строго:
1. Опирайся только на предоставленные данные
2. Явно укажи каких данных не хватает для уверенного вывода
3. Разделяй: "данные показывают [наблюдение]" vs
"можно предположить [гипотеза]"
4. Не делай уверенных заявлений о том, что данные не подтверждают —
используй "возможно", "недостаточно данных чтобы утверждать"
Структура ответа:
— Что данные реально показывают (только факты из данных)
— Чего не хватает для полного понимания (явные пробелы)
— Гипотезы (явно обозначить как гипотезы, не факты)
— Что проверить дополнительно
Плейсхолдеры:
- {данные} — вставь таблицу, текст, цифры, логи — что есть
- {что_анализируем} — аномалию, падение, изменение, поведение
🚀 Быстрый старт — вставь в чат:
Вот шаблон bounded prompting для анализа данных без домыслов.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит что именно анализировать и какие данные есть — потому что без этого шаблон не заработает: ему нужно знать от чего отталкиваться при разделении "данные показывают" vs "гипотеза".
Ограничения
⚠️ Не устраняет, а снижает: Bounded prompting значительно уменьшает количество домыслов, но не убирает их полностью. Модели всё равно периодически выходят за рамки — особенно когда данных очень мало.
⚠️ Эффект зависит от модели: Разные LLM по-разному реагируют на эти инструкции. GPT-семейство работало лучше маленьких открытых моделей. В среднем это работает, но результат варьируется.
⚠️ Не заменяет экспертную проверку: Если решение важное — не доверяй только инструкции. Прогони ответ модели через чеклист пяти форм overreach вручную.
⚠️ Для субъективных тем — осторожно: Исследование о поведенческих данных. Для эмоциональных тем, личных интерпретаций или творческих задач проблема может быть устроена иначе.
Как исследовали
Команда взяла три реальных датасета с данными студентов — активность, сон, настроение — собранными со смартфонов на протяжении семестра или нескольких лет. Из этих данных выделили аномальные дни: дни, когда показатели конкретного человека значительно отклонились от его же обычного уровня. Получилось почти 15 000 сценариев — "вот данные, объясни почему этот день оказался аномальным".
Ключевой трюк дизайна: для каждого сценария модели давали разное количество данных — минимальный набор (только аномальный показатель) или расширенный (плюс звонки, геолокация, академический календарь). Это позволило проверить: помогает ли больше данных? Ответ оказался неожиданным — почти нет. Модели строили такие же уверенные истории про "стресс" и "усталость" независимо от объёма данных.
Второй вектор — два типа промптов: открытый ("объясни что произошло") и ограниченный ("объясни, но не выходи за данные, признавай пробелы"). Bounded prompting помогал — примерно у GPT-nano overreach снижался заметно, у маленьких открытых моделей — слабее. Интересно, что главным источником проблемы оказалось не перепутанное время или придуманные факты — а именно психологические интерпретации: модели правильно описывали что упало, но уверенно добавляли почему (стресс, социальная изоляция, переутомление) без каких-либо данных на эту тему.
Адаптации и экстраполяции
🔧 Техника: аудит уже полученного ответа
Если промпт менять поздно — попроси модель проверить уже готовый анализ:
Вот анализ который ты только что дал. Проверь его по этим критериям:
1. Какие утверждения выходят за рамки предоставленных данных?
2. Где ты говоришь уверенно о том, что данные не подтверждают?
3. Какие пункты — наблюдения, а какие — предположения?
4. Что нужно добавить чтобы сделать эти выводы обоснованными?
Отметь проблемные места явно.
Получишь авто-аудит собственного ответа модели — она часто находит свои же домыслы при явном запросе проверки.
🔧 Техника: встроить разделение прямо в формат вывода
Заставь модель структурно разделять факт и гипотезу — не как инструкцию, а как обязательные разделы:
Структура ответа — строго:
**ФАКТЫ ИЗ ДАННЫХ:** [только то, что видно в данных]
**ПРОБЕЛЫ:** [каких данных нет, но они важны для понимания]
**ГИПОТЕЗЫ:** [предположения — каждое с пометкой "гипотеза"]
**НУЖНО ПРОВЕРИТЬ:** [что добавить чтобы подтвердить гипотезы]
Когда формат требует явного раздела "пробелы" — модель вынуждена их назвать вместо того чтобы заполнить домыслом.
Ресурсы
Causal Stories from Sensor Traces: Auditing Epistemic Overreach in LLM-Generated Personal Sensing Explanations
Авторы: Shanshan Zhu, Han Zhang, J. Doris Chi, Subigya Nepal, Koustuv Saha
Организации: University of Illinois Urbana-Champaign, University of Chicago, Yale University, University of Virginia
Датасеты: StudentLife (Dartmouth), GLOBEM (University of Washington), CollegeExperience (Dartmouth)
