3,583 papers
arXiv:2512.09549 74 10 дек. 2025 г. FREE

Девять подводных камней LLM: как модели ошибаются и что с этим делать

КЛЮЧЕВАЯ СУТЬ
72 научные работы о LLM проверили на корректность — каждая содержала минимум одну ловушку. Утечка 20% тестовых данных поднимает точность на 0.11, 49% кода не влезает в окно модели, версия GPT-4 вчера ≠ версия сегодня. Исследование систематизирует 9 ловушек которые искажают результаты — от обрезки контекста до неопределённости версии модели. Четыре ловушки бьют по повседневной работе: обрезка контекста (текст не влезает), чувствительность к формулировкам (мелкие изменения → разные результаты), версия модели (GPT-4 обновляется без предупреждения), LLM-судья (модель переоценивает свои результаты). Исследование даёт чеклисты как обходить эти грабли.
Адаптировать под запрос

TL;DR

Исследователи из CISPA и других институтов проанализировали 72 научные работы о безопасности LLM и нашли девять типичных ловушек, которые встречаются в каждой работе. Ловушки охватывают весь цикл: от сбора данных до оценки результатов. Самые частые проблемы — утечка данных (модель видела тестовые примеры при обучении), обрезка контекста (текст не влезает в окно модели), чувствительность к формулировкам (мелкие изменения промпта дают разные ответы), неопределённость версии модели (GPT-4 сегодня ≠ GPT-4 вчера).

Главная находка: Каждая из 72 работ содержит минимум одну ловушку, но только 15.7% случаев авторы обсудили явно. Большинство проблем остаются незамеченными. Это искажает результаты: утечка 20% тестовых данных поднимает F1-score на 0.08–0.11, а 49% уязвимых функций не влезают в стандартное окно 512 токенов — модель работает с обрезанным кодом и даёт неточные выводы.

Четыре ловушки напрямую влияют на вашу работу в чате: (1) Обрезка контекста — проверяйте длину промптов, особенно для кода и длинных документов. (2) Чувствительность к формулировкам — одна и та же задача, но разные слова → разные результаты, тестируйте варианты. (3) Версия модели — фиксируйте какую модель используете (GPT-4o vs GPT-4o-mini, дата обращения), результаты не воспроизводятся между версиями. (4) LLM-судья — не доверяйте слепо когда AI оценивает свои же результаты, перепроверяйте критические выводы.


📌

Схема девяти ловушек

Ловушки разбиты по этапам работы с LLM:

ЭТАП 1: Сбор данных - P1: Отравление данных через веб-скрапинг - P2: Неточность меток от LLM (LLM-as-judge)

ЭТАП 2: Предобучение - P3: Утечка данных (модель видела тест при обучении)

ЭТАП 3: Дообучение - P4: Коллапс модели от синтетических данных - P5: Ложные корреляции (модель учит неважные паттерны)

ЭТАП 4: Промптинг - P6: Обрезка контекста (текст не влезает) - P7: Чувствительность к формулировкам

ЭТАП 5: Оценка - P8: Ошибка замены (выводы о другой модели) - P9: Неопределённость модели (неясная версия)


📌

Что это значит для вас: применимые принципы

📌

1. Проверяйте длину контекста (P6)

Проблема: LLM обрабатывает только фиксированное окно токенов (обычно 4k–32k в зависимости от модели). Если ваш промпт + контекст длиннее — модель обрезает текст, часто с начала или конца, теряя критическую информацию.

Как проявляется: - Вставили код 2000 строк → модель видит только начало функции - Загрузили документ → модель пропустила последние разделы - В исследовании: 49% уязвимых функций не влезали в 512 токенов, 29% не влезали даже в 1024 токена

Что делать:

Перед отправкой длинного текста:

Проверь сколько токенов в моём тексте:
[вставить текст]

Если больше {лимит твоей модели} — раздели на части или сократи.

Практический чеклист: - GPT-4o: лимит 128k токенов (~96k слов) — но лучше держать в пределах 32k для стабильности - Claude 3.5: лимит 200k токенов — но качество падает на дальних концах - Для кода: одна функция на запрос, не весь файл сразу - Для документов: передавайте summary важных частей, не весь текст целиком


📌

2. Тестируйте разные формулировки (P7)

Проблема: Мелкие изменения в промпте дают совершенно разные результаты. Порядок слов, формальность тона, наличие примеров — всё влияет. Модель "настроена" на определённый стиль инструкций из дообучения (RLHF), и другие стили работают хуже.

Как проявляется: - "Найди баги в коде" vs "Проверь код на уязвимости" → разные находки - С примером vs без примера → разная точность - "Дай список" vs "Опиши подробно" → разная структура ответа

Что делать:

Техника А: A/B тест формулировок

У меня задача: {опиши задачу}.

Вот три варианта промпта:
1. [вариант 1]
2. [вариант 2]  
3. [вариант 3]

Прогони все три, покажи результаты. Какой сработал лучше и почему?

Техника Б: Попроси модель улучшить промпт

Вот моя задача: {задача}
Вот мой промпт: {текущий промпт}

Предложи 3 альтернативных формулировки, которые дадут более точный результат.
Объясни какие элементы промпта влияют на качество ответа.

Когда особенно важно: - Сложные задачи (код, анализ, рассуждения) - Когда результат критичен (безопасность, деньги, репутация) - При переходе между моделями (GPT → Claude → Llama)


📌

3. Фиксируйте версию модели (P9)

Проблема: "GPT-4" или "Claude" — это не одна модель, а семейство версий. Модели обновляются без предупреждения, меняются токенизаторы, системные промпты, веса. Результат вчера ≠ результат сегодня. В исследовании: разные снапшоты GPT-4 дают разную точность на джейлбрейках и разные precision/recall на задачах классификации.

Как проявляется: - Вчера промпт работал отлично → сегодня не работает - Коллега не может воспроизвести ваш результат (у него другая версия) - Непонятно какую модель использовали в статье → нельзя повторить

Что делать:

В ChatGPT/Claude: Указывайте точную модель в заметках: - ✅ GPT-4o (gpt-4o-2024-08-06) — фиксированная версия - ✅ Claude 3.5 Sonnet, дата обращения: 15 марта 2025 - ❌ "GPT-4" — неясно какая версия

Для API:

# Фиксируйте снапшот, не общее имя модели
model="gpt-4o-2024-08-06"  # ✅ точная версия
# НЕ "gpt-4o" — будет брать latest

Для open-source (Huggingface): Указывайте commit ID или дату скачивания:

llama-3.1-8b-instruct, commit: a2cb1b9, quantization: 4-bit

Практический чеклист: - Сохраняйте версию модели в начале проекта - Если модель обновилась — перепроверьте критические промпты - В документации пишите точную версию, не общее название


📌

4. Не доверяйте LLM-судье слепо (P2)

Проблема: Когда LLM оценивает результаты работы другой (или своей же) LLM — это удобно, но неточно. LLM-судья может ошибаться, быть предвзятым к определённому стилю, пропускать тонкие ошибки. В исследовании: 15.3% работ использовали LLM-as-judge, но только 60% из них обсудили эту проблему.

Как проявляется: - Попросили ChatGPT оценить качество своего же кода → он переоценил - LLM оценивает креатив — но судит по формальным признакам (длина, структура), не по смыслу - Модель пропускает фактические ошибки, но хвалит стиль

Что делать:

Техника: Кросс-проверка моделями

Вот задача: {задача}
Вот решение: {решение}

Оцени качество решения по критериям: {критерии}.

Затем попроси вторую модель (другую) оценить то же решение.
Сравни оценки — где расхождения? Почему?

Для критических задач: - Используйте несколько моделей для оценки (GPT + Claude) - Финальную проверку делайте вручную или автотестами (для кода) - Просите модель обосновать оценку, не только число

Когда LLM-судья ОК: - Массовая фильтрация (отсеять явно плохое) - Черновая оценка (потом человек перепроверит) - Формальные критерии (длина, структура, формат)

Когда LLM-судья НЕ ОК: - Фактическая точность (цифры, факты, логика) - Безопасность кода (уязвимости) - Тонкие смысловые различия


📌

5. Осторожность с AI→AI итерациями (P4)

Проблема: Если использовать выход LLM как вход для следующей генерации (рекурсивно) — качество падает. Модель начинает усиливать свои же ошибки, терять разнообразие, генерировать шаблонные ответы. Это называется Model Collapse. В исследовании: рекурсивная генерация кода повышает perplexity (модель становится менее уверенной), результаты деградируют.

Как проявляется: - Цикл: генерируй текст → улучши его → улучши ещё раз → ... → текст становится шаблонным - Используете AI-generated примеры для обучения AI → качество падает - Iterative refinement без внешнего контроля → модель "зацикливается" на своих паттернах

Что делать:

Правило: После 2-3 итераций AI→AI вводите внешнюю проверку.

Плохо (без контроля):

1. Сгенерируй черновик
2. Улучши черновик
3. Улучши ещё раз
4. Улучши финально
→ риск деградации

Хорошо (с контролем):

1. Сгенерируй черновик
2. [ЧЕЛОВЕК проверяет] — выделяет слабые места
3. Улучши с учётом feedback
4. [ТЕСТЫ или критерии] — проверка формальная
→ стабильное качество

Для кода:

1. LLM генерит код
2. [АВТОТЕСТЫ] — работает ли?
3. LLM фиксит ошибки
4. [ПОВТОРИТЬ тесты]
→ итерации с внешним критерием

Когда итерации OK: - Короткие циклы (1-2 итерации) - Есть внешняя проверка (человек, тесты, формальный критерий) - Задача узкая (форматирование, рефакторинг)

Когда осторожно: - Длинные цепочки AI→AI без проверок - Креативные задачи (риск шаблонности) - Обучение на AI-generated данных


📌

6. Критически оценивайте "известные" задачи (P3)

Проблема: LLM обучены на огромных корпусах из интернета (GitHub, Wikipedia, Reddit, etc.). Если ваша задача или данные были доступны публично до даты обучения модели — модель могла их "видеть". Результат выглядит впечатляюще, но это не обобщение, а запоминание. В исследовании: утечка 20% тестовых данных повышает F1 на 0.08–0.11, рост почти линейный.

Как проявляется: - Модель идеально решает задачи из известного бенчмарка - GPT-4 отлично пишет код для популярной библиотеки (видела документацию в тренировке) - Модель "вспоминает" данные вместо того чтобы рассуждать

Что делать:

Правило: Если данные были в интернете до 2021-2023 (зависит от модели) — считайте что модель могла их видеть.

Проверка на утечку:

Вот задача: {задача}

Мог ли этот датасет быть в твоих тренировочных данных?
- Когда он был опубликован?
- Где он был доступен (GitHub, Kaggle, etc.)?
- Какие признаки что ты его "помнишь" vs "решаешь заново"?

Для своих задач: - ✅ Используйте свежие данные (после cutoff модели) - ✅ Используйте внутренние данные компании (не публичные) - ✅ Модифицируйте известные задачи (измените числа, контекст) - ❌ Не полагайтесь на бенчмарки которые модель могла видеть

Датасеты высокого риска: - GitHub repos (особенно популярные) - Wikipedia - Kaggle competitions - Известные CTF/security challenges


🧠

Почему это работает (и не работает)

Модели — это паттерн-матчеры, не мыслители. LLM обучены предсказывать следующий токен на основе предыдущих. Это делает их чувствительными к формулировкам (разные слова → разные паттерны активации) и зависимыми от тренировочных данных (если видели в тренировке → работает лучше).

Контекст = оперативная память. LLM не имеют состояния между запросами. Всё что модель знает о задаче — это текущий промпт. Если текст не влезает в окно → модель работает с неполными данными, как человек который видит только часть картины.

Версии модели меняются постоянно. Провайдеры обновляют модели для улучшения качества, безопасности, скорости. Но каждое обновление — это новая модель с другими весами. Prompt engineering — это настройка под конкретную версию, и она не переносится автоматически.

LLM-судья наследует bias. Когда LLM оценивает текст, она применяет паттерны из своего обучения: длинный = хороший, формальный = правильный, похожий на её стиль = качественный. Она не проверяет факты и логику так как человек, а сравнивает с паттернами "хорошего текста" из тренировки.

Итерации AI→AI усиливают ошибки. Каждая генерация LLM немного отклоняется от реального распределения данных. Если использовать этот output как input — следующая генерация отклоняется ещё сильнее. Без внешнего "якоря" (проверка человеком, тесты, реальные данные) система дрейфует к шаблонным, менее разнообразным ответам.

Data leakage маскируется под обобщение. Когда модель видела данные в тренировке, она не "решает" задачу, а "вспоминает" паттерн. Это работает отлично на тесте (если тест тоже утёк), но проваливается на новых данных. Пользователь видит высокую точность и думает что модель обобщает, но это иллюзия.


📌

Практический чеклист: как избежать ловушек

Перед началом работы: - [ ] Зафиксировал точную версию модели (не "GPT-4", а "GPT-4o-2024-08-06") - [ ] Проверил длину промпта (влезает ли в context window?) - [ ] Понимаю какие данные модель могла видеть в тренировке

При создании промпта: - [ ] Протестировал 2-3 разных формулировки - [ ] Добавил примеры (few-shot) если задача сложная - [ ] Указал формат вывода явно (JSON, список, текст)

При итеративной работе: - [ ] После 2-3 итераций AI→AI ввожу внешнюю проверку - [ ] Для кода: использую автотесты между итерациями - [ ] Для текста: сам читаю промежуточные версии

При оценке результатов: - [ ] Если LLM оценивает результат — перепроверяю критические моменты - [ ] Использую несколько моделей для кросс-проверки - [ ] Не доверяю только численной оценке, смотрю на обоснование

При работе с кодом: - [ ] Передаю одну функцию/модуль за раз, не весь файл - [ ] Проверяю что все важные части кода попали в контекст - [ ] Запускаю код и тесты, не доверяю только объяснению модели


⚠️

Ограничения

⚠️ Это не техники, а awareness: Чеклисты и принципы выше требуют вашего активного контроля. LLM не "исправит себя" автоматически — вы должны структурировать работу так чтобы обходить ловушки.

⚠️ Некоторые ловушки неизбежны: Data leakage в публичных датасетах, prompt sensitivity, версионность моделей — это фундаментальные ограничения LLM. Нельзя полностью избежать, можно только осознавать и минимизировать риск.

⚠️ Для исследователей больше чем для практиков: Многие ловушки (data poisoning, model collapse, spurious correlations) критичны для научных работ, но менее актуальны для ежедневного использования ChatGPT в задачах типа "напиши письмо" или "объясни концепцию". Фокус этого списка — на критичных применениях (код, безопасность, анализ).


🔍

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

Команда из 15 исследователей проанализировала все 72 работы про LLM и безопасность, опубликованные в топовых конференциях (IEEE S&P, NDSS, ACM CCS, USENIX Security, ICSE, FSE, ISSTA, ASE) за 2023-2024 годы. Это не выборка — это полный охват leading venues в Security и Software Engineering.

Сначала определили девять типов ловушек на основе структуры LLM pipeline: от сбора данных до оценки результатов. Затем разработали детальные guidelines для reviewers — как именно искать каждую ловушку в тексте работы. Каждую статью читали два человека независимо, потом обсуждали расхождения, а сложные случаи выносили на группу из 10 человек.

Результаты оказались неожиданными: 100% работ содержат минимум одну ловушку. Более того, пять ловушек (Data Leakage, Context Truncation, Prompt Sensitivity, Surrogate Fallacy, Model Ambiguity) встречаются в более чем 20% работ каждая. Но только 15.7% случаев авторы явно обсудили проблему — большинство ловушек остаются незамеченными.

Чтобы показать реальное влияние, провели четыре case study. Проверили как quantization и версии модели влияют на robustness к джейлбрейкам (Model Ambiguity), как утечка 20% данных повышает F1 на 0.08-0.11 (Data Leakage), как 49% уязвимых функций не влезают в 512 токенов (Context Truncation), и как рекурсивная генерация кода повышает perplexity и ведёт к деградации (Model Collapse).

Логика исследования: LLM research развивается быстро, но методология отстаёт. Старые гайдлайны для ML (типа Sculley et al. 2015) не покрывают специфику LLM — web-scale данные, prompt engineering, API versions, synthetic data. Авторы заполняют этот пробел систематическим анализом и дают actionable guidelines для каждой ловушки. Поддерживают living appendix на https://llmpitfalls.org с обновляемыми best practices.

Инсайт для практики: Если даже peer-reviewed работы в топовых конференциях содержат эти ловушки (часто неосознанно), то обычные пользователи LLM тем более подвержены этим проблемам. Awareness — первый шаг к более надёжной работе с моделями.


🔗

Ресурсы

Chasing Shadows: Pitfalls in LLM Security Research

Jonathan Evertz, Niklas Risse, Nicolai Neuer, Andreas Müller, Philipp Normann, Gaetano Sapia, Srishti Gupta, David Pape, Soumya Shaw, Devansh Srivastav, Christian Wressnegger, Erwin Quiring, Thorsten Eisenhofer, Daniel Arp, Lea Schönherr

CISPA Helmholtz Center for Information Security, Max Planck Institute for Security and Privacy, Karlsruhe Institute of Technology, Ruhr University Bochum, TU Wien, Sapienza University of Rome

Living appendix с best practices: https://llmpitfalls.org

Код и датасеты: https://github.com/dormant-neurons/llm-pitfalls

NDSS Symposium 2026


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

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

72 научные работы о LLM проверили на корректность — каждая содержала минимум одну ловушку. Утечка 20% тестовых данных поднимает точность на 0.11, 49% кода не влезает в окно модели, версия GPT-4 вчера ≠ версия сегодня. Исследование систематизирует 9 ловушек которые искажают результаты — от обрезки контекста до неопределённости версии модели. Четыре ловушки бьют по повседневной работе: обрезка контекста (текст не влезает), чувствительность к формулировкам (мелкие изменения → разные результаты), версия модели (GPT-4 обновляется без предупреждения), LLM-судья (модель переоценивает свои результаты). Исследование даёт чеклисты как обходить эти грабли.

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

Awareness перед автоматизмом. Перед отправкой длинного промпта проверь сколько токенов — 49% кода не влезает в 512 токенов, модель работает с обрезанным текстом. Тестируй 2-3 формулировки одной задачи — prompt sensitivity даёт разные результаты на тех же данных. Фиксируй точную версию модели: не 'GPT-4', а 'GPT-4o-2024-08-06' — обновления меняют поведение без предупреждения. Для критичных задач не доверяй LLM-судье слепо — модель переоценивает свои результаты, перепроверяй вручную или другой моделью.

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

LLM — это паттерн-матчеры, не мыслители. Модель чувствительна к формулировкам потому что разные слова активируют разные паттерны из тренировки. Контекст — это оперативная память: если текст не влезает в окно — модель видит только часть картины, как человек с завязанными глазами. Утечка 20% тестовых данных линейно поднимает F1 на 0.08–0.11 — модель 'вспоминает' паттерны из тренировки, а не решает заново. Версии модели меняются постоянно (новые веса, токенизаторы, системные промпты) — prompt engineering настроен под конкретную версию и плывёт после обновления.

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

Для критичных применений LLM → код, безопасность, анализ данных, исследования. Особенно когда результат влияет на решения (деньги, репутация, безопасность) или нужна воспроизводимость эксперимента. НЕ подходит для простых задач типа 'напиши письмо' или 'объясни концепцию' — там ловушки менее критичны, достаточно базовой проверки.

Мини-рецепт

1. Перед работой: Зафиксируй версию модели — не GPT-4, а GPT-4o-2024-08-06. Проверь длину промпта: Сколько токенов в этом тексте? [вставить текст] — если больше лимита, раздели на части

2. При создании промпта: Протестируй 2-3 формулировки одной задачи. Для длинного кода передавай одну функцию за раз, не весь файл — 49% уязвимых функций не влезают в 512 токенов

3. Для итеративной работы (AI→AI): После 2-3 итераций вводи внешнюю проверку — для кода автотесты, для текста сам читай промежуточные версии. Иначе модель усиливает свои же ошибки

4. При оценке результатов: Если LLM оценивает свой результат — перепроверяй критические моменты вручную или другой моделью. LLM-судья переоценивает качество, пропускает фактические ошибки

Примеры

[ПЛОХО] : Проанализируй этот код на уязвимости + вставка 2000 строк кода (не проверил длину контекста, модель видит только начало функции)
[ХОРОШО] : Сколько токенов в этом коде? [код] → Если больше 4k: Раздели анализ на модули. Сначала проверь функции аутентификации: [код модуля auth] + фиксируешь версию в заметках: GPT-4o-2024-08-06, дата обращения 15 марта 2025. Для критичных находок перепроверяешь второй моделью (Claude) — кросс-валидация результатов
Источник: Chasing Shadows: Pitfalls in LLM Security Research
ArXiv ID: 2512.09549 | Сгенерировано: 2026-01-08 23:37
📖 Простыми словами

Девять подводных камней LLM: как модели ошибаются и что с этим делать

arXiv: 2512.09549

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

Это как пытаться измерить точный рост прыгающего кенгуру с помощью сломанной линейки, стоя на палубе корабля во время шторма. Ты вроде бы записываешь цифры, но они не значат ровным счетом ничего, потому что контекст меняется быстрее, чем ты нажимаешь кнопку «Enter». Исследователи радуются, что модель «стала безопаснее», а на деле она просто зазубрила ответы из интернета или ей не хватило памяти, чтобы дочитать вредный промпт до конца. Формально эксперимент проведен, но по факту это имитация бурной деятельности.

Главный косяк — это утечка данных, когда модель уже видела все тестовые вопросы во время обучения и просто выдает правильный ответ по памяти. К этому добавляется чувствительность к формулировкам: поменял одну запятую в промпте — и модель, которая только что «героически сопротивлялась взлому», внезапно вываливает рецепт напалма. А если приплюсовать сюда неопределенность версии, когда OpenAI втихую обновляет GPT-4 по три раза в неделю, становится ясно: сравнивать результаты двух разных исследований сегодня просто невозможно.

Хотя ученые мучали конкретно вопросы безопасности, этот кризис воспроизводимости касается вообще любого использования нейросетей в бизнесе или разработке. Если ты внедряешь LLM и думаешь, что один удачный тест гарантирует стабильную работу, ты ошибаешься. Принцип универсален: модель — это черный ящик с плавающими параметрами, и то, что работало вчера на версии 0314, завтра превратится в тыкву на версии 0613. Стабильность в мире AI — это миф, который разбивается о первый же апдейт API.

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

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

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

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