3,583 papers
arXiv:2604.08417 70 9 апр. 2026 г. FREE

Context Overload: больше контекста в промпте ухудшает анализ LLM

КЛЮЧЕВАЯ СУТЬ
Парадокс: добавляешь «поясняющие» материалы — теряешь 25 процентных пунктов точности. GPT-4o mini при добавлении связанных фрагментов кода терял именно столько — не потому что задача усложнилась, а потому что нерелевантный контекст создаёт шум. Модель его не фильтрует. Она обрабатывает всё подряд. Метод позволяет получать структурированный анализ любого объекта — договор, код, оффер, письмо — с конкретными выводами по каждой оси: тип проблемы, место, причина, сценарий, исправление. Фишка: сначала бинарная позиция (1/0), потом объяснение. Когда просишь «просто объясни» — модель уплывает в нюансы. Когда требуешь сначала «да/нет» — дальнейшее объяснение становится обоснованием уже зафиксированной позиции. Никакого «с одной стороны... с другой стороны».
Адаптировать под запрос

TL;DR

Более длинный промпт с дополнительным контекстом не помогает LLM анализировать — и часто делает результат хуже. Исследователи проверили, что происходит когда просят модель найти уязвимость в коде: сначала давали только нужный фрагмент, потом добавляли связанные функции. Чем больше контекста — тем хуже работали слабые модели. Полученный эффект не специфичен для кода — он про то, как LLM вообще обрабатывает объём информации.

Слабость LLM — шум в контексте. Когда ты просишь модель что-то оценить или классифицировать и добавляешь «для понимания картины» дополнительные материалы, часть моделей начинает путаться. GPT-4.1 Mini при добавлении связанных функций потерял 25 процентных пунктов точности. Не потому что задача стала сложнее — а потому что модель «отвлекается» на нерелевантный контекст. При этом сильные модели (Claude Haiku 4.5, Gemini Flash) оставались стабильными независимо от объёма.

Выход — структурированный запрос с минимально необходимым контекстом. Prompt из исследования работает по схеме: целевой объект → бинарная классификация → объяснение по фиксированным критериям. Никакого «для полной картины прикладываю всё». Только то, что нужно для конкретного суждения — и явный запрос на структурированный вывод.


🔬

Схема метода

Один промпт, три обязательных блока:

БЛОК 1: Инструкция
  → Что анализировать
  → Бинарный вопрос: уязвимо / не уязвимо (1 / 0)
  → Формат ответа: сначала оценка, потом объяснение

БЛОК 2: Целевой объект
  → Только тот фрагмент, который нужно оценить
  → Без «для контекста прикладываю ещё вот это»

БЛОК 3: Критерии объяснения
  → Тип проблемы / уязвимости
  → Где именно (конкретное место, строка, фрагмент)
  → Корневая причина
  → Вектор эксплуатации или способ исправления

Всё в одном промпте. Отдельных запросов не нужно.


🚀

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

Задача: Ты получил оферту от потенциального партнёра по совместному бизнесу — хочешь понять, есть ли в условиях риски для тебя. Обычный инстинкт — скинуть весь документ целиком «для контекста». Но по логике исследования: лучше взять конкретный спорный пункт и работать с ним напрямую.

Промпт:

Проанализируй следующий пункт договора на наличие рисков для стороны-получателя.

ЗАДАЧА:
Оцени: несёт ли этот пункт правовой или финансовый риск? 
Ответь сначала: ДА (1) или НЕТ (0).
Затем дай структурированное объяснение.

АНАЛИЗИРУЕМЫЙ ПУНКТ:
«Сторона А вправе в одностороннем порядке изменять условия 
настоящего договора, уведомив Сторону Б не позднее чем за 
3 (три) рабочих дня до вступления изменений в силу.»

ФОРМАТ ОБЪЯСНЕНИЯ:
1. Тип риска: [название категории]
2. Где именно: [конкретная фраза или конструкция]
3. Корневая причина: [почему это проблема]
4. Вектор использования против тебя: [как партнёр может это применить]
5. Как исправить: [что изменить в формулировке]

Результат: Модель выдаст сначала «ДА (1)» — потом пять заполненных блоков. В блоке «Тип риска» — категория проблемы (асимметрия прав, односторонний выход и т.д.). В «Корневой причине» — почему именно эта формулировка опасна. В «Векторе» — сценарий как партнёр может использовать пункт. В «Как исправить» — конкретная альтернативная формулировка. Никаких общих рассуждений — только структура по критериям.


🧠

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

LLM не «читает» контекст как человек. Когда ты добавляешь дополнительные материалы «для понимания картины», модель не фильтрует их по релевантности — она обрабатывает всё. Нерелевантный контекст создаёт шум, который сбивает классификацию. Это особенно заметно на моделях среднего уровня.

Структура объяснения — это явная инструкция по критериям оценки. Когда ты просишь «объясни почему» — модель выбирает угол сама. Когда задаёшь пять конкретных осей (тип / место / причина / вектор / исправление) — получаешь пять заполненных ответов. Модель генерирует текст по паттерну из промпта, и чем конкретнее паттерн, тем точнее вывод.

Бинарный ответ перед объяснением фиксирует позицию. Если сначала попросить объяснение — модель может «уплыть» в нюансы. Если сначала потребовать чёткий ответ 1/0 — дальнейшее объяснение идёт как обоснование уже принятой позиции. Это снижает «размытые» ответы типа «с одной стороны… с другой стороны».

Рычаги управления промптом: - Количество критериев → убери «Вектор использования» для быстрой проверки - Бинарность → замени 1/0 на шкалу 1-5 если нужна градация - Целевой объект → ТОЛЬКО нужный фрагмент, не весь документ - Модель → для этого формата Claude и Gemini стабильнее GPT-4o mini


📋

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

Проанализируй следующий {объект анализа} на наличие {тип проблемы}.

ЗАДАЧА:
Содержит ли {объект} {тип проблемы}?
Ответь сначала: ДА (1) или НЕТ (0).
Затем дай структурированное объяснение.

АНАЛИЗИРУЕМЫЙ {ОБЪЕКТ}:
{вставь только конкретный фрагмент — без «для контекста» и лишних материалов}

ФОРМАТ ОБЪЯСНЕНИЯ:
1. Тип проблемы: [категория]
2. Где именно: [конкретное место в тексте]
3. Корневая причина: [почему это проблема]
4. Как это может навредить: [конкретный сценарий]
5. Как исправить: [что изменить]

Что подставлять: - {объект анализа} — пункт договора / абзац / УТП / условие оффера / фрагмент письма - {тип проблемы} — юридический риск / слабое место / манипуляция / противоречие / финансовая ловушка - {объект} — повтор для согласования


🚀 Быстрый старт — вставь в чат:

Вот шаблон структурированного анализа. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит что именно анализировать и какой тип проблемы искать — потому что без этого она не сможет заполнить блок «Тип проблемы» и поставить бинарную оценку. Она возьмёт структуру из шаблона и адаптирует под твою задачу.


⚠️

Ограничения

⚠️ Слабые модели + объёмный контекст: GPT-4o mini, GPT-4.1 Mini теряют в точности при добавлении дополнительного материала. Если нужна стабильность — используй Claude или Gemini.

⚠️ Не для субъективных суждений: Метод оптимален там, где есть объективные критерии (риск есть / нет, противоречие есть / нет). Для оценки «насколько интересно написан текст» бинарная схема работает хуже.

⚠️ C++ и малые выборки: Для редких языков и узких доменов результаты менее надёжны — выборка слишком маленькая для выводов.

⚠️ Python — исключение: Для Python-кода добавление контекста иногда помогало. Принцип «меньше контекста = лучше» — не абсолютный закон, а тенденция.


🔍

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

Команда из NC State University и Federal University of Alagoas взяла 509 реальных уязвимостей из базы данных ReposVul — CVE-записей из открытых проектов на C, C++ и Python. Для каждой уязвимости они сгенерировали три версии промпта: только уязвимая функция, функция + вызываемые функции (callees), функция + вызывающие функции (callers). Это позволило напрямую сравнить: что происходит когда добавляешь контекст?

Тестировали четыре модели: Claude Haiku 4.5, Gemini 3 Flash, GPT-4.1 Mini, GPT-5 Mini. Все запросы через API при температуре 0 — для воспроизводимости. Измеряли точность, F1 и стоимость на конфигурацию.

Главное удивление: Code Only часто побеждал. Исследователи ожидали, что дополнительный контекст поможет — ведь некоторые уязвимости проявляются только при взаимодействии функций. Оказалось обратное: у GPT-4.1 Mini точность упала с 75% до 54% при добавлении callees. Статистически значимо, с большим размером эффекта (φ = 0.4). Claude Haiku 4.5 и Gemini Flash остались стабильными — разница незначимая. Это подтвердило гипотезу: проблема не в задаче, а в том, как разные модели справляются с «шумным» контекстом.

Отдельно оценивали качество объяснений вручную на 1004 сэмплах по двум осям — корректность (тип + место + причина) и полнота (тип + место + причина + вектор/исправление). Claude Haiku 4.5 дал правильные и полные объяснения в 93.6% случаев. GPT-модели имели процент «нулевых» объяснений в пять раз выше.


💡

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

🔧 Техника: градация вместо бинарности → для неоднозначных задач

Бинарное 1/0 хорошо для чётких категорий. Если задача субъективнее — замени на шкалу:

Оцени риск по шкале: 
НИЗКИЙ (1) / СРЕДНИЙ (2) / ВЫСОКИЙ (3)

Это сохраняет принцип «сначала оценка — потом объяснение», но даёт больше градации для переговорной позиции.


🔧 Техника: два независимых анализа → для важных решений

Запусти один и тот же структурированный промпт дважды — с формулировкой «найди риски» и «найди возможности». Сравни результаты. Модель с разными инструкциями даст разные акценты в тех же пяти блоках.

ПРОМПТ 1: Содержит ли этот пункт риск для меня? (1/0)
ПРОМПТ 2: Содержит ли этот пункт возможность для меня? (1/0)

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


🔗

Ресурсы

Название работы: Vulnerability Detection with Interprocedural Context in Multiple Languages: Assessing Effectiveness and Cost of Modern LLMs

Конференция: EASE 2026 (International Conference on Evaluation and Assessment in Software Engineering), Glasgow

Авторы: Kevin Lira, Baldoino Fonseca, Davy Baía, Márcio Ribeiro, Wesley K. G. Assunção

Организации: North Carolina State University; Federal University of Alagoas (Brazil)

Датасет: ReposVul — публичный датасет уязвимостей из NVD CVE


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

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

Парадокс: добавляешь «поясняющие» материалы — теряешь 25 процентных пунктов точности. GPT-4o mini при добавлении связанных фрагментов кода терял именно столько — не потому что задача усложнилась, а потому что нерелевантный контекст создаёт шум. Модель его не фильтрует. Она обрабатывает всё подряд. Метод позволяет получать структурированный анализ любого объекта — договор, код, оффер, письмо — с конкретными выводами по каждой оси: тип проблемы, место, причина, сценарий, исправление. Фишка: сначала бинарная позиция (1/0), потом объяснение. Когда просишь «просто объясни» — модель уплывает в нюансы. Когда требуешь сначала «да/нет» — дальнейшее объяснение становится обоснованием уже зафиксированной позиции. Никакого «с одной стороны... с другой стороны».

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

Модель как студент на экзамене, которому дали стопку лишних учебников. «Вот весь договор — там где-то есть проблема». Он честно листает все 15 страниц. Неудивительно, что путается. Правило: минимально необходимый фрагмент + пять конкретных осей объяснения. Не «объясни что не так» — а «заполни: тип / место / причина / сценарий / исправление». Чем жёстче паттерн в промпте, тем точнее его заполняет модель. Что убираешь: — Весь документ «для общей картины» — вставляй только нужный фрагмент — «Объясни своими словами» — меняй на пять конкретных осей — Объяснение до позиции — сначала 1/0, потом обоснование

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

LLM обрабатывает весь промпт, не фильтруя по важности. Видит лишнее — тратит на него внимание. Это не баг конкретной модели — так работает архитектура: она не умеет сказать «это нерелевантно, пропускаю». Лишний материал буквально тянет её в сторону от нужного. Бинарная позиция перед объяснением работает как якорь: модель сначала выносит вердикт, потом ищет аргументы в его поддержку. Это надёжнее чем генерировать объяснение в пустоту — так модель не уплывает в двусмысленность. Сильные модели (Claude Haiku 4.5, Gemini Flash) пережили объёмный контекст без потерь. Слабые просели на 25 п.п. Разрыв в том, насколько модель умеет игнорировать шум. Пока эта способность у неё не прокачана — помогаешь ей сам: даёшь только то, что нужно.

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

Анализ конкретных объектов с объективными критериями — договорные пункты (риск есть / нет), код (уязвимость есть / нет), условия оффера (ловушка есть / нет), фрагменты текста (противоречие есть / нет). Особенно помогает именно тогда, когда хочется «скинуть всё целиком для контекста» — это и есть момент остановиться и вырезать только нужный фрагмент. НЕ подходит для субъективных суждений: «насколько текст интересен», «нравится ли мне этот оффер», «хорошо ли написано». Там нет объективных осей для заполнения — бинарная схема не поможет.

Мини-рецепт

1. Вырежи только нужный фрагмент: не весь документ, не «для контекста» — только то, что оцениваешь. Один пункт договора. Одна функция. Один абзац.
2. Задай бинарный вопрос первым: Содержит ли этот фрагмент [тип проблемы]? Ответь сначала: ДА (1) или НЕТ (0).
3. Добавь пять осей объяснения: тип проблемы / где именно / корневая причина / как это может навредить / как исправить
4. Выбери стабильную модель: Claude или Gemini держат точность при любом объёме. GPT-4o mini лучше использовать с минимальным контекстом — иначе просядет.

Примеры

[ПЛОХО] : Вот весь договор (15 страниц). Скажи, есть ли там риски для меня?
[ХОРОШО] : Проанализируй следующий пункт договора. ЗАДАЧА: Несёт ли этот пункт правовой или финансовый риск для стороны-получателя? Ответь сначала: ДА (1) или НЕТ (0). Затем заполни: 1. Тип риска 2. Где именно (конкретная фраза) 3. Корневая причина 4. Как партнёр может это использовать 5. Как исправить формулировку АНАЛИЗИРУЕМЫЙ ПУНКТ: «Сторона А вправе в одностороннем порядке изменять условия договора, уведомив Сторону Б за 3 рабочих дня.»
Источник: Vulnerability Detection with Interprocedural Context in Multiple Languages: Assessing Effectiveness and Cost of Modern LLMs
ArXiv ID: 2604.08417 | Сгенерировано: 2026-04-10 05:23

Проблемы LLM

ПроблемаСутьКак обойти
Лишний контекст "для полноты картины" сбивает модельДобавляешь дополнительные материалы — "чтобы модель лучше поняла ситуацию". Модель не отфильтровывает нерелевантное. Обрабатывает всё подряд. Нерелевантный текст конкурирует с нужным и создаёт шум. Слабые и средние модели теряют в точности — иногда сильно. Работает против тебя при любой задаче классификации или оценкиОставляй только тот фрагмент, который нужно оценить. Никакого "для контекста прикладываю вот ещё это". Чем меньше нерелевантного — тем точнее ответ

Методы

МетодСуть
Бинарный ответ перед объяснением — фиксирует позициюСначала требуй чёткий ответ: да/нет, 1/0, есть/нет. Потом — объяснение. Схема в запросе: Есть ли проблема? Ответь сначала: ДА (1) или НЕТ (0). Затем объясни по пунктам. Почему работает: Когда позиция зафиксирована — объяснение идёт как обоснование уже принятого решения. Без фиксации — модель "уплывает" в "с одной стороны… с другой стороны". Когда применять: задачи с объективным критерием (риск есть / нет, ошибка есть / нет, противоречие есть / нет). Когда не работать: субъективные оценки без чёткого критерия ("насколько интересно написано")

Тезисы

ТезисКомментарий
Модель не фильтрует контекст по важностиЧеловек читает документ и понимает что важно, что — фон. Модель обрабатывает всё с одинаковым "вниманием". Нерелевантный текст в запросе — не нейтральный балласт. Он конкурирует с нужным содержимым. Чем больше нерелевантного — тем сильнее сигнал размывается. Применяй: перед отправкой запроса убери всё что не нужно для конкретного суждения. Оставь только целевой фрагмент
📖 Простыми словами

Vulnerability Detection with Interprocedural Context in MultipleLanguages: Assessing Effectiveness and Cost of ModernLLMs

arXiv: 2604.08417

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

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

В цифрах и методах все еще прозаичнее. Проверяли разные языки программирования и разные уровни «добавок» к промпту. Выяснилось, что эффективность падает пропорционально объему, особенно у моделей среднего звена. Если топовые гиганты еще как-то держатся, то остальные просто лажают. Метод добавления связанных функций, который по идее должен был прояснить логику вызовов, на деле сработал как информационный мусор. Модель отвлекается на нерелевантные переменные и забывает, что она вообще искала в исходном фрагменте.

Этот принцип универсален и выходит далеко за пределы написания кода. Будь то анализ юридического договора, проверка финансового отчета или поиск багов — избыточность убивает результат. Мы привыкли думать, что «дать больше данных» всегда полезно, но для LLM это правило не работает. Принцип «чем больше, тем лучше» здесь превращается в «чем больше, тем тупее». Если хочешь адекватный ответ, нужно подавать информацию хирургически точно, вырезая всё, что не относится к делу напрямую.

Короче, не пытайся скормить нейронке всю библиотеку проекта, чтобы она нашла ошибку в одной функции. Локальный контекст бьет глобальный в 9 из 10 случаев. Вместо того чтобы расширять промпт до бесконечности, лучше потрать время на фильтрацию данных. Иначе ты получишь не экспертный аудит, а галлюцинации уставшего алгоритма, который запутался в трех соснах собственного контекстного окна. Кто умеет лаконично ставить задачу, тот и получает рабочий код, остальные — просто тратят токены впустую.

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

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

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