TL;DR
Исследователи из IBM обнаружили три системных слабости всех современных LLM при работе с длинными текстами и кодом. Первая и главная: модели не понимают — они угадывают. Когда есть варианты ответа, модель сопоставляет слова из вопроса с вариантами и выбирает похожий. Уберите варианты — точность падает на 15–35 пунктов у всех моделей без исключения. Claude Sonnet: 80% с вариантами → 42% без. Llama 405B: 76% → 32%. Это не конкретная модель плохая — это системное свойство.
Вторая слабость — рассеянность в длинном тексте. Чем дальше от конца контекста важная информация, тем хуже модель её использует. Факт в начале длинного промпта часто игнорируется — факт в конце обрабатывается намного лучше. Третья слабость — чувствительность к мусору: вставьте в контекст нерелевантную информацию, и точность падает даже когда правильный ответ там есть.
Три практических вывода: тестируйте AI без вариантов ответа — получите честную картину. Кладите критически важное в конец длинного контекста. Убирайте лишнее из промпта — каждый нерелевантный абзац вредит точности.
Схема метода
Это не техника, а три принципа работы с LLM, вытекающих из исследования:
ПРИНЦИП 1: Проверка понимания
Вместо: "Какой ответ верный? A/B/C/D"
Использовать: "Ответь своими словами" → выявляет реальное понимание
ПРИНЦИП 2: Позиция критических данных
Вместо: важная инструкция → [длинный контекст]
Использовать: [длинный контекст] → важная инструкция в конце
ПРИНЦИП 3: Чистота контекста
Вместо: весь документ целиком
Использовать: только релевантные разделы → убрать шум
Все три принципа применяются в обычном чате, без дополнительных инструментов.
Пример применения
Задача: Вы попросили ChatGPT проверить договор аренды офиса на Павелецкой — 15 страниц. Хотите знать: можно ли досрочно расторгнуть без штрафа? Обычно вставляете весь текст и спрашиваете "Что по поводу расторжения?". Модель что-то отвечает — но вы не уверены, что она действительно разобралась, а не нашла ближайший абзац со словом "расторжение".
Промпт (все три принципа вместе):
Вот договор аренды. Прочитай его.
[ТЕКСТ ДОГОВОРА — только разделы про расторжение, штрафы,
уведомления. Остальные разделы про оплату мебели, ТО лифтов
и т.д. — не вставляй]
---
После текста договора — мой вопрос:
Объясни своими словами: при каких конкретных условиях
арендатор может расторгнуть договор досрочно без штрафных
санкций? Какой срок уведомления нужен?
Не угадывай — если в договоре этого нет явно, скажи что не нашёл.
Результат:
Модель даст конкретный ответ на основе только релевантных разделов. Фраза "не угадывай — скажи если не нашёл" блокирует галлюцинацию вместо признания незнания. Критический вопрос стоит в конце — после всего контекста, в зоне лучшего внимания. Открытый вопрос вместо "да/нет" вскрывает реальное понимание — если модель начинает мямлить или придумывать условия которых нет, вы сразу видите.
Почему это работает
Слабость LLM: у модели нет "понимания" в человеческом смысле. Она генерирует следующий токен на основе паттернов. Когда есть варианты ответа A/B/C/D, задача резко упрощается: найди в вариантах слова, которые встречаются рядом с вопросом в тексте. Это распознавание по совпадению, а не рассуждение.
Почему рецентность работает: трансформерная архитектура (механизм внимания, на котором построены все GPT/Claude/Gemini) физически ближе к токенам в конце последовательности при генерации ответа. Информация в начале длинного контекста "дальше" — модель не "забывает" её, но обрабатывает с меньшим весом. Разрыв особенно заметен при 128k+ токенах.
Почему чистота контекста критична: нерелевантный текст создаёт ложные паттерны. Если в договоре есть раздел про "штрафы за порчу мебели", модель может связать слово "штраф" с вопросом о расторжении и выдать неверный ответ. Модель не фильтрует релевантность — она обрабатывает всё. Ваш выбор что вставить — это фактически инструкция модели на что обращать внимание.
Рычаги управления: - "Не угадывай — скажи если не нашёл" → блокирует галлюцинацию, обязывает к честности - Вопрос в конце промпта → максимальная близость к зоне генерации - Открытая формулировка вместо вариантов → честный тест реального понимания - Только релевантные разделы → убираем шум, снижаем риск ложных паттернов
Шаблон промпта
Принцип 1: Проверка понимания без вариантов
{контекст или документ}
---
На основе текста выше: {вопрос в открытой форме}
Если ответ явно не указан в тексте — так и скажи,
не додумывай.
Плейсхолдеры:
- {контекст} — только релевантные части документа, не весь текст
- {вопрос в открытой форме} — "объясни как", "при каких условиях", "что именно написано про" — не "да или нет", не варианты
Принцип 2: Позиция критической инструкции
{длинный контекст / документ / фон задачи}
---
[ГЛАВНАЯ ЗАДАЧА — читай внимательно]
{критически важная инструкция или вопрос}
Фокус именно на: {ключевой аспект}
Плейсхолдеры:
- {длинный контекст} — всё вспомогательное идёт первым
- {критически важная инструкция} — главное всегда в конце
Принцип 3: Очистка контекста перед основным вопросом
Вот {тип документа}. Перед ответом на вопрос —
выдели только те части, которые касаются {тема}.
Остальное игнорируй.
{полный текст документа}
---
Теперь на основе только релевантных частей: {вопрос}
Плейсхолдеры:
- {тип документа} — договор, отчёт, техническое задание
- {тема} — конкретный аспект который важен
- {вопрос} — открытый вопрос в конце
🚀 Быстрый старт — вставь в чат:
Вот три принципа работы с длинным контекстом от IBM Research.
Адаптируй их под мою задачу: [твоя задача с длинным документом].
Задавай вопросы если нужно уточнить контекст.
[вставить шаблон выше]
LLM спросит какой документ, какой вопрос, какие разделы релевантны — потому что без этого не сможет правильно применить принцип очистки контекста и расположить инструкцию.
Ограничения
⚠️ Короткие задачи: Все три принципа дают эффект только при длинном контексте (от ~10-15 тысяч токенов). На коротких промптах позиция инструкции и чистота контекста почти не влияют — модель и так обрабатывает всё.
⚠️ Не заменяет понимание структуры документа: Принцип "убери лишнее" требует что вы сами понимаете что релевантно. Если не знаете — попросите модель сначала выделить разделы по теме, потом отвечать.
⚠️ Gemini держится лучше других: При открытых вопросах на длинных контекстах Gemini 2.5 Pro/Flash стабильно превосходит GPT-4o и Claude. Если длинный контекст — критична задача, выбор модели имеет значение.
⚠️ Рецентность не абсолютна: Это тенденция, не закон. Хорошо структурированный промпт с явными маркерами (
[ГЛАВНАЯ ЗАДАЧА]) частично компенсирует позиционный эффект.
Как исследовали
IBM Research взяли бенчмарк для длинного кода LongCodeBench (Python) и расширили его двумя языками — Java (из реальных open-source репозиториев: Kafka, Elasticsearch, Cassandra) и COBOL (из медицинской системы CMS и внутренней системы IBM). Итого: сотни вопросов, контексты от 32k до 1M токенов, 10+ моделей.
Главная идея эксперимента была простой и жёсткой: задать один и тот же вопрос с вариантами ответа И без вариантов — и сравнить результаты. Параллельно перемешивали порядок вариантов (чтобы проверить: модель понимает или запомнила "правильный обычно второй"?) и вставляли нерелевантный код в разные позиции контекста — в начало, середину, конец.
Результат удивил масштабом разрыва. Ожидали эффект — но не 30-60 пунктов на COBOL. Оказалось, высокие результаты с вариантами — частично иллюзия: модели эксплуатируют лексические совпадения между вопросом и вариантами, а не понимают код. Особенно жёстко это вскрылось на COBOL: 98% с вариантами → 32-62% без. Это не падение — это обрушение. Вероятно, потому что COBOL мало представлен в обучающих данных, и "настоящего" понимания у моделей меньше, чем кажется по тестам с вариантами.
Адаптации и экстраполяции
🔧 Самопроверка AI через "открытый вопрос" после получения ответа
Если получили ответ от AI и не уверены в его качестве — не спрашивайте "ты уверен?". Попросите объяснить без опоры на ваши слова:
Объясни своими словами, без повторения моего вопроса:
почему именно такой ответ? Что конкретно в тексте
это подтверждает — процитируй фрагмент.
Если модель угадала по паттерну — она не сможет нормально процитировать. Это быстрый "детектор галлюцинации" на основе принципа recognition-generation gap.
🔧 Техника "сначала карта, потом ответ" для очень длинных документов
Вместо того чтобы самому решать что релевантно — двухшаговый подход:
Шаг 1 (отдельный запрос):
Вот {документ}. Выдели все разделы, которые касаются {тема}.
Дай только заголовки разделов и первое предложение каждого.
Шаг 2 (следующий запрос):
Вот только релевантные разделы: {вставить выбранное}.
Теперь ответь: {вопрос}
Модель сама убирает шум на первом шаге — вы работаете с чистым контекстом на втором.
Ресурсы
Название работы: Robustness and Reasoning Fidelity of Large Language Models in Long-Context Code Question Answering
Датасет: huggingface.co/datasets/mjkishan/LongContextCodeQA
Авторы: Kishan Maharaj, Nandakishore Menon, Ashita Saxena, Srikanth Tamilselvam
Организация: IBM Research
Связанные работы: LongCodeBench (Rando et al., 2025), LongCodeU (Li et al., 2025), Needle-in-a-Haystack evaluation (Gregory, 2023)
