TL;DR
Когда промпт становится длинным, модель начинает приоритизировать связность повествования вместо соблюдения твоих ограничений. Это не баг — это фундаментальное свойство: чем больше контекста, тем сильнее "размывается" внимание на исходные правила. Исследователи из IIT Patna, IIT BHU и NIT Trichy тестировали 10 открытых моделей на 167 атакующих промптах — и зафиксировали этот паттерн у всех.
Главная находка — не то, что модели взламываются. А то, как именно они ломаются. Если написать длинный промпт с постепенной эскалацией, модель начинает следовать нарративу — и забывает про ограничения. Чем длиннее и связнее текст, тем слабее соблюдаются правила из начала. Это объясняет знакомую боль: написал 20 правил в системном промпте — модель выполнила 12.
Параллельно исследователи проверили 5 защитных механизмов и нашли два, которые работают даже в обычном чате без кода: самопроверка (модель оценивает свой ответ по критериям) и голосование (несколько вариантов, выбор лучшего). Оба применимы прямо сейчас, в любом LLM-чате.
Схема метода
Это исследование-находка, а не одна техника. Из него вытаскиваем три принципа, каждый применим отдельно:
ПРИНЦИП 1: Дублируй ограничения
Длинный промпт → ключевые правила размываются
Решение: повтори критические ограничения в КОНЦЕ промпта
(один запрос, без лишних шагов)
ПРИНЦИП 2: Самопроверка (Self-Examination)
Шаг 1: Получи ответ от модели
Шаг 2: Отдельным запросом попроси модель оценить
ответ по твоим критериям → получи вердикт SAFE/НУЖНА ПРАВКА
Шаг 3: Если нужна правка — уточни и перегенерируй
(два запроса, второй запускаешь сам)
ПРИНЦИП 3: Голосование (Voting)
Шаг 1: Попроси N вариантов одного результата
Шаг 2: Выбери лучший сам или попроси модель выбрать по критерию
(один или два запроса)
Пример применения
Задача: Ты пишешь продающий пост для Telegram-канала про инвестиции в недвижимость. Промпт длинный — есть целевая аудитория, тон, структура, запреты (никаких гарантий доходности, никаких англицизмов, строго до 800 символов). После пяти итераций модель начинает писать "assets" и обещать "стабильный пассивный доход".
Промпт (Принцип 1 + Принцип 2 вместе):
Напиши продающий пост для Telegram-канала про апартаменты в новостройках
Санкт-Петербурга.
КОНТЕКСТ:
Аудитория — мужчины 35-50 лет, накопили 3-7 млн рублей, хотят
вложить в недвижимость, но боятся ошибиться. Читают канал Максима
Оверченко "Квадратный метр".
СТРУКТУРА:
— Крючок (боль или вопрос)
— 2-3 аргумента в пользу апартаментов в СПб прямо сейчас
— Призыв к действию (написать в директ)
ТОНАЛЬНОСТЬ: живо, по-человечески, без пафоса
СТРОГИЕ ОГРАНИЧЕНИЯ — ОБЯЗАТЕЛЬНО СОБЛЮСТИ:
✗ Никаких гарантий доходности ("будете получать", "стабильный доход")
✗ Никаких иностранных слов: assets, investment, cashflow — запрещено
✗ Не более 800 символов с пробелами
✗ Никаких восклицательных знаков
[Повторяю ключевые ограничения, потому что они критичны:]
Ещё раз: без гарантий доходности, без англицизмов, строго до 800 символов.
После того как напишешь пост — оцени его сам по этим 4 критериям.
Выведи: ✓ или ✗ для каждого. Если хотя бы один ✗ — сразу перепиши.
Результат:
Модель сначала напишет пост, потом сама проверит его по четырём критериям с маркерами ✓/✗. Если найдёт нарушение — перепишет без твоего участия. Ты получаешь сразу проверенную версию и видишь, что именно было исправлено.
Почему это работает
Почему длинные промпты ломают ограничения. Модель обрабатывает текст последовательно, и чем дальше от конца находится правило — тем меньше оно "весит" при генерации. Правило из начала 2000-символьного промпта конкурирует со всем, что было написано после. Повтор в конце — это не костыль, это перебалансировка.
Почему самопроверка работает. Модель генерирует ответ и оценивает его — это два разных режима. При генерации она "следует нарративу". При оценке — читает текст с позиции стороннего судьи по чётким критериям. Разные задачи активируют разные паттерны. Именно поэтому модель может написать "стабильный доход" и сама же поймать это нарушение при проверке.
Рычаги управления: - Количество повторений ограничений — для сложных требований повтори 2-3 раза в разных местах промпта - Детализация критериев проверки — чем конкретнее формулировка ("не более 800 символов" vs "лаконично"), тем точнее самопроверка - Количество вариантов при голосовании — для творческих задач попроси 3 варианта и выбери; для точных задач хватит 2 - Кто судья — модель может оценивать сама, или можно вставить роль ("оцени как строгий редактор Esquire")
Шаблон промпта
Шаблон: Жёсткие ограничения + Самопроверка
{задача с контекстом и структурой}
СТРОГИЕ ОГРАНИЧЕНИЯ:
✗ {ограничение 1}
✗ {ограничение 2}
✗ {ограничение 3}
[Повторяю критически важные ограничения:]
Ещё раз: {перечисли 1-2 самых важных ограничения}.
После выполнения — проверь результат по каждому ограничению.
Выведи ✓ или ✗ для каждого пункта.
Если хотя бы один ✗ — перепиши и покажи исправленную версию.
Что подставлять:
- {задача с контекстом и структурой} — подробное описание задачи, аудитория, формат
- {ограничение 1-3} — конкретные запреты: лимит символов, запрещённые слова, обязательные элементы
- Повтор в конце — выдели самое важное, что модель чаще всего нарушает
Шаблон: Голосование
Дай {число} варианта {задача}.
Варианты должны различаться по {что должно различаться: тон / структура / подход}.
Общие требования для всех вариантов:
— {требование 1}
— {требование 2}
После — выбери лучший вариант и объясни почему одним предложением.
Что подставлять:
- {число} — обычно 2-3; больше 3 снижает качество каждого
- {что должно различаться} — тон, структура, угол подачи
- Последний пункт можно убрать — тогда выбираешь сам
🚀 Быстрый старт — вставь в чат:
Вот шаблон с самопроверкой ограничений. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про твои ограничения и критерии проверки — потому что без конкретных запретов она не сможет настроить блок самопроверки. Она возьмёт паттерн из шаблона и подставит твои данные.
Ограничения
⚠️ Самопроверка не ловит смысловые ошибки: Модель хорошо проверяет формальные критерии (длина, запрещённые слова, структура), но плохо оценивает "правдивость" или "убедительность". Для субъективных критериев нужна твоя оценка или роль конкретного читателя.
⚠️ Повтор ограничений помогает, но не гарантирует: Очень длинные промпты (5000+ символов) с множеством правил всё равно теряют часть ограничений — даже с повторами. Для критически важных задач используй короткий фокусный промпт или разбивай на шаги.
⚠️ Голосование увеличивает токены: Три варианта = три ответа. На длинных задачах это ощутимо по времени ответа и лимитам в бесплатных версиях.
⚠️ Исследование — про открытые маленькие модели (1B-7B): Тестировали Phi, Mistral, Llama, DeepSeek, Qwen, Gemma. Паттерны поведения схожи с ChatGPT и Claude, но не идентичны. Закономерности про длинные промпты и внимание — универсальные; конкретные цифры уязвимости — нет.
Ресурсы
Статья: "Analysis of LLMs Against Prompt Injection and Jailbreak Attacks" — Piyush Jaiswal, Aaditya Pratap, Shreyansh Saraswati, Harsh Kasyap, Somanath Tripathy
Институты: NIT Trichy, NCE Chandi, IIT BHU, IIT Patna
Связанные техники: HarmBench, JailbreakBench, PromptRobust — бенчмарки для оценки устойчивости моделей
