3,583 papers
arXiv:2604.13006 84 14 апр. 2026 г. FREE

Двухпроходная генерация: как спасти качество текста от форматных ограничений

КЛЮЧЕВАЯ СУТЬ
Обнаружено: модель решает, сколько текста написать, ещё до первого слова — добавил «без запятых», и она уже выбрала написать вдвое меньше. Метод двухпроходной генерации позволяет получить полный развёрнутый ответ под любое форматное ограничение — без потери содержания. Шаг 1: полная генерация без ограничений. Шаг 2: переписать готовый текст с ограничением, явно добавив «сохрани все детали». Редактирование не триггерит режим «напиши поменьше» — и модель восстанавливает 60–96% объёма вместо просевшего одноходового ответа.
Адаптировать под запрос

TL;DR

Когда вы добавляете к промпту простое ограничение — «не используй запятые», «пиши без маркированных списков», «не употребляй слово "однако"» — модель не просто переформулирует тот же ответ. Она переключается в режим минимального ответа: текст становится вдвое короче, теряет структуру и половину смысла. При этом ограничение выполняется исправно. Модель сделала «как просили» — но дала вполовину меньше, чем могла.

Ключевая находка: это не проблема возможностей, а проблема планирования. Модель «решает», сколько писать, ещё до того, как напишет первое слово — и при наличии ограничения выбирает короткий путь. При этом если дать ей сначала написать свободно, а потом попросить переписать под ограничение — она восстанавливает 60–96% объёма и качества. Может, просто не хочет по умолчанию.

Решение — двухпроходная генерация: сначала попросите написать полный ответ без ограничений, потом попросите переписать его с нужным форматом, явно указав «сохрани полноту и все детали». Два запроса вместо одного — и качество возвращается.


🔬

Схема метода

ШАГ 1 (отдельный запрос): Ответь на вопрос полно, без ограничений
         → Получаем развёрнутый ответ со всей информацией

ШАГ 2 (отдельный запрос): Перепиши этот текст под ограничение,
         сохрани все детали и полноту
         → Получаем тот же объём, но в нужном формате

Оба шага — обычный чат. Ничего технического.


🚀

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

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

Промпт (шаг 1):

Напиши письмо потенциальному партнёру — инвестиционному фонду.
Мы — сервис доставки еды из ресторанов в малых городах России (100–300 тыс. жителей),
работаем в 12 городах, оборот 40 млн рублей в месяц.
Хотим обсудить раунд на расширение в 30 новых городов.

Пиши полно: покрой ценность, метрики, запрос и следующий шаг.

Промпт (шаг 2):

Вот текст письма:

[вставить результат шага 1]

Перепиши его так, чтобы в тексте не было слов: «тем не менее», «следовательно»,
«помимо этого», «таким образом», «более того», «в связи с этим».

Важно: сохрани все детали, аргументы и структуру — только замени эти слова
на живые переходы или просто убери их, перестроив предложения.

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


🧠

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

Слабость: Инструкция-туннинг (обучение модели быть assistant'ом) — это не просто «научи отвечать». Это обучение на парах «запрос → идеальный ответ» с определённым форматом. В итоге модель не просто знает, как отвечать, — она знает, как обычно выглядит ответ на похожий запрос. Форматные ограничения ломают этот привычный шаблон, и модель переключается на запасной режим: короткий, нейтральный, безопасный.

Почему это планирование, а не неспособность: Исследование показало, что решение принимается до первого сгенерированного слова — буквально в момент обработки промпта. Простой математический зонд (линейная регрессия по внутренним слоям модели) предсказывал длину будущего ответа с точностью R²=0.51–0.93 до начала генерации. То есть модель «знала», что напишет мало, ещё до того, как начала. На необученных базовых моделях этого эффекта нет — значит, его создаёт именно обучение на инструкциях.

Как двухпроходный подход обходит это: Первый запрос без ограничений активирует полный шаблон ответа. Второй запрос — это уже редакторская задача (переписать готовый текст), а не генеративная задача (создай что-то под ограничение). Редактирование не триггерит переключение в минимальный режим — модель работает с конкретным материалом и просто адаптирует его. Значит, два отдельных запроса дают лучший результат, чем один с требованиями к форме и содержанию одновременно.

Рычаги управления: - Явная инструкция «сохрани полноту» на втором шаге — ключевая. Без неё модель может снова сократить при переписывании. Пишите: «сохрани все детали, аргументы и структуру». - Чем радикальнее ограничение (частые слова вроде «the» / «и» / запятые) — тем важнее второй проход. Для мягких ограничений («пиши без нумерованных списков») разница меньше. - Степень детализации второго промпта — можно добавить: «если предложение без этого слова звучит неловко — перестрой его, не теряя смысл».


📋

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

Шаг 1 — свободная генерация:

{Вопрос или задача}

Ответь полно и развёрнуто. {Дополнительный контекст, если нужен}

Шаг 2 — переписать под ограничение:

Вот текст:

[вставить ответ из шага 1]

Перепиши его с учётом ограничения: {твоё ограничение}.

Важно: сохрани полный объём, все детали и аргументы.
Меняй только то, что нарушает ограничение.

Плейсхолдеры: - {Вопрос или задача} — ваш основной запрос - {Дополнительный контекст} — тональность, аудитория, цель - {твоё ограничение} — конкретное форматное требование: «без слова X», «без маркированных списков», «без запятых», «только короткие предложения»


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

Помоги мне применить двухпроходную генерацию для моей задачи.
Суть: сначала генерируем полный ответ без ограничений,
потом переписываем с ограничением, сохраняя объём.

Задай мне вопросы, чтобы понять: что мне нужно написать
и какое ограничение к тексту я хочу применить.
Потом дай мне два промпта: для шага 1 и шага 2.

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

LLM спросит что написать и какое ограничение применить — потому что без этого она не сможет заполнить {задача} и {твоё ограничение}. Она возьмёт паттерн из шаблона и адаптирует под твою задачу.


⚠️

Ограничения

⚠️ Очень частые токены: Если запрещать самые распространённые элементы языка — например, слово «и» или все запятые — двухпроходный подход может не дать полного восстановления. Для таких случаев переписывание само по себе трудно.

⚠️ Не для оценки по ограничениям: Двухпроходный подход устраняет потерю содержания, но не гарантирует 100% соблюдение ограничения в финальном тексте. Если соблюдение обязательно — нужна проверка.

⚠️ Стандартная оценка "хороший/плохой ответ" слепа к этой проблеме: Если вы просите модель оценить текст по шкале 1–10, она почти не замечает потерю качества от ограничений (обнаруживает 3.5% деградации там, где попарное сравнение показывает 23%). Если хотите сравнить два варианта текста — давайте их оба одновременно, а не по отдельности.

⚠️ Эффект есть даже у GPT-4o-mini и аналогов: Это не баг дешёвых моделей. Коммерческие закрытые модели теряют 31% полноты при банальном «не используй запятые». Коммерческое дообучение решает другие проблемы, но не эту.


🔍

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

Идея была жёсткой по простоте: взяли 40 обычных вопросов («объясни градиентный спуск», «как написать хорошую исследовательскую работу»), добавили к каждому одно из восьми тривиальных ограничений — и посмотрели, что получится. Никакого экзотического тестирования: запрети запятую и измерь, насколько хуже стал ответ.

Результаты сравнивали двумя способами: независимая оценка по шкале 1–10 (стандартная практика) и попарное сравнение (базовый ответ vs. ограниченный рядом — кто лучше?). Разрыв оказался семикратным: независимая оценка видела 3.5% деградации, попарная — 23%. Это важная методологическая находка: если вы оцениваете качество текстов в изоляции, вы систематически не замечаете провалы. Только когда кладёшь два варианта рядом — разница становится очевидной.

Самый убедительный эксперимент — сравнение обученных моделей с базовыми (необученными). Базовые модели под теми же ограничениями показывали случайные, несистематические эффекты — иногда ограничение даже улучшало ответ. Инструкционно обученные — системный обвал почти везде. Значит, проблему создаёт именно обучение на инструкциях, а не природа языковых моделей. Это переводит находку из категории «странный баг» в категорию «структурное свойство всех assistant-моделей».


📄

Оригинал из исследования

Two-pass recovery experiment:

For each of 10 prompts and 2 constraints (no comma, no "the"), we generate:

(1) a baseline response (no constraint),
(2) a single-pass response (constraint in prompt),
(3) a two-pass response:
    — generate baseline,
    — then rewrite it under the constraint with explicit instruction
      to maintain comprehensiveness.

We measure word-level length retention relative to the baseline.

Single-Pass vs Two-Pass Retention (word count vs baseline):

Constraint Llama 1-pass Llama 2-pass Mistral 1-pass Mistral 2-pass
No comma 51% 100% 46% 86%
No "the" 46% 92% 57% 95%
Overall 49% 96% 52% 91%

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


💡

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

💡 Адаптация для редактуры стиля: Тот же двухпроходный принцип работает для любых стилистических правок — не только форматных ограничений. Если хотите сделать текст «более разговорным», «убрать пассивный залог», «сократить до 150 слов» — сначала получите полную версию, потом адаптируйте.

Шаг 1: напиши полный черновик [тема/задача]
Шаг 2: вот текст: [черновик]
Перепиши его: [стилистическое требование].
Сохрани все ключевые мысли и аргументы.

🔧 Техника: попарное сравнение вместо изолированной оценки → честная оценка качества

Исследование показало: если просить модель оценить один текст по шкале — она не видит деградацию. Если дать два текста рядом — видит.

Применение: когда нужно выбрать лучший из двух вариантов текста — не оценивайте их по очереди. Давайте оба сразу:

Вот два варианта текста. Оцени каждый по критерию [критерий].
После сравни: какой лучше и почему?

Вариант А:
[текст А]

Вариант Б:
[текст Б]

Это касается писем, постов, скриптов — любого контента, где важно относительное качество, а не абсолютное.


💡 Принцип "разделяй что сказать и как сказать": Находка этого исследования — частный случай более широкого правила. Инструкции к содержанию и инструкции к форме конкурируют в одном промпте. Разделите их:

  • Промпт 1: что нужно сказать (содержание, аргументы, детали)
  • Промпт 2: как это должно выглядеть (формат, стиль, ограничения)

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


🔗

Ресурсы

«One Token Away from Collapse: The Fragility of Instruction-Tuned Helpfulness»

Erfan Baghaei Potraghloo, Seyedarmin Azizi, Souvik Kundu, Massoud Pedram

University of Southern California; Intel AI

Связанные работы упоминаемые в исследовании: - IFEval (Zhou et al., 2023) — бенчмарк соблюдения инструкций - MT-Bench (Zheng et al., 2023) — стандартный бенчмарк качества ответов - Format tax (Lee et al., 2026) — влияние структурных форматов (JSON/XML) на качество рассуждений


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

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

Обнаружено: модель решает, сколько текста написать, ещё до первого слова — добавил «без запятых», и она уже выбрала написать вдвое меньше. Метод двухпроходной генерации позволяет получить полный развёрнутый ответ под любое форматное ограничение — без потери содержания. Шаг 1: полная генерация без ограничений. Шаг 2: переписать готовый текст с ограничением, явно добавив «сохрани все детали». Редактирование не триггерит режим «напиши поменьше» — и модель восстанавливает 60–96% объёма вместо просевшего одноходового ответа.

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

Модель как архитектор, который чертит план до того, как взял карандаш. Форматное ограничение в промпте — сигнал «задача нетипичная», и план автоматически сжимается. Два требования в одном промпте («напиши про X, без слова Y») — это генеративная задача под ограничение: модель планирует объём заново и выбирает короткий путь. Редактирование обходит этот триггер: у модели уже есть материал — планировать объём не нужно. Она просто адаптирует готовый текст под ограничение, не переключаясь в минимальный режим. Поэтому два отдельных запроса дают лучший результат, чем один с требованиями к форме и содержанию одновременно.

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

Это установили измеримо, а не на глазок. Простая линейная регрессия по внутренним слоям модели предсказывала длину ответа с точностью R²=0.51–0.93 — до начала генерации. Модель буквально «знала», что напишет мало, ещё до первого слова. На необученных базовых моделях этого эффекта нет — режим «пиши меньше» создаёт именно обучение на инструкциях-ответах. Это не баг дешёвых моделей: GPT-4o-mini теряет 31% содержания от простого «без запятых». И оценка текстов по шкале 1–10 фактически слепа к этой проблеме — замечает 3.5% деградации там, где парное сравнение показывает 23%.

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

Любая задача с форматными ограничениями: деловые письма без канцелярита, тексты без конкретных слов-паразитов, контент без маркированных списков, объяснения без жаргона. Особенно важно когда содержание критично — техническое объяснение, деловое предложение, аналитический отчёт: там потеря 30–50% объёма — это не стилистика, это потеря смысла. НЕ подходит как единственная защита если нужно 100% соблюдение ограничения: двухпроходный подход снижает потери содержания, но финальный текст всё равно стоит проверить на соответствие ограничению. Также двухпроходная схема менее эффективна если запрещать самые частотные элементы языка — типа слова «и» или всех запятых сразу.

Мини-рецепт

1. Сформулируй задачу и ограничение отдельно. Сначала пойми: что хочешь получить по содержанию (письмо, объяснение, список аргументов) и какое ограничение по форме (без каких слов, без каких знаков, без какой структуры). Два разных вопроса — не смешивай их в один промпт.

2. Шаг 1 — свободная генерация: пошли промпт без ограничений, явно попроси писать полно.
[Твоя задача]. Ответь развёрнуто, не пропускай детали.

3. Шаг 2 — редактирование под ограничение: вставь результат первого шага и попроси переписать с ограничением, сохранив всё содержание.
Вот текст: [результат шага 1]. Перепиши его с учётом ограничения: [твоё ограничение]. Важно: сохрани полный объём, все аргументы и детали. Меняй только то, что нарушает ограничение.

4. Добавь явную «страховку» в шаг 2. Фраза «сохрани все детали и структуру» — не лирика, а ключевой сигнал. Без неё модель может снова сократить при переписывании. Пиши её каждый раз.

Примеры

[ПЛОХО] : Напиши письмо инвестору о нашем стартапе. Пиши без слов "тем не менее", "следовательно", "таким образом" (Модель выдаст письмо вдвое короче — ограничение выполнено, содержание потеряно)
[ХОРОШО] : Шаг 1: Напиши письмо инвестиционному фонду. Мы — сервис доставки еды в малых городах, 12 городов, оборот 40 млн в месяц, хотим раунд на расширение в 30 новых городов. Пиши полно: ценность, метрики, запрос, следующий шаг. Шаг 2: Вот текст письма: [результат шага 1]. Перепиши его так, чтобы в тексте не было слов: "тем не менее", "следовательно", "таким образом", "более того". Важно: сохрани полный объём, все аргументы и структуру. Меняй только эти слова — заменяй живыми переходами или перестраивай предложения.
Источник: One Token Away from Collapse: The Fragility of Instruction-Tuned Helpfulness
ArXiv ID: 2604.13006 | Сгенерировано: 2026-04-15 05:28

Проблемы LLM

ПроблемаСутьКак обойти
Форматное ограничение режет содержание вдвоеДобавляешь в запрос ограничение: «без запятых», «без слова X», «только короткие предложения». Модель выполняет его исправно. Но ответ становится вдвое короче и беднее. Это не проблема понимания. Это не проблема возможностей. Модель решает «напишу мало» ещё до первого слова. Ограничение ломает привычный шаблон ответа. Модель переключается в минимальный режимРазбей на два запроса. Первый — без ограничений, только задача + «ответь полно». Второй — «перепиши вот этот текст под ограничение. Сохрани все детали и объём». Два запроса вместо одного — и содержание возвращается

Методы

МетодСуть
Двухпроходная генерация — полнота + нужный форматШаг 1: Отдельный запрос без ограничений. {Задача}. Ответь полно и развёрнуто. Получаешь полный текст со всей информацией. Шаг 2: Отдельный запрос на редактуру. Вот текст: [вставить]. Перепиши с учётом ограничения: {ограничение}. Важно: сохрани полный объём, все детали и аргументы. Меняй только то, что нарушает ограничение. Почему работает: Первый запрос — генерация. Активирует полный шаблон ответа. Второй запрос — редактура. Модель работает с готовым материалом, не создаёт с нуля. Редакторская задача не включает минимальный режим. Когда особенно нужно: Ограничение затрагивает частые элементы — конкретные слова-связки, маркированные списки, запятые. Когда разница меньше: Мягкие ограничения по структуре

Тезисы

ТезисКомментарий
Модель решает сколько писать до первого словаДлина ответа закладывается при обработке запроса. Не в процессе генерации. До неё. Именно поэтому форматное ограничение так сильно режет объём: решение «напишу мало» принято раньше, чем написано что-либо. Это эффект обучения на инструкциях. Базовые модели без такого обучения так не делают. Применяй: Если нужен длинный ответ — явно скажи «ответь полно и развёрнуто» в самом запросе, не рассчитывай что модель сама выберет нужный объём
📖 Простыми словами

One Token Away from Collapse: The Fragility of Instruction-Tuned Helpfulness

arXiv: 2604.13006

Суть проблемы в том, что современные нейронки — это не гибкие мыслители, а заложники своих привычек. Когда ты просишь модель написать текст, но ставишь мелкое условие вроде «не используй запятые» или «забудь про слово "однако"», у неё внутри происходит коллапс системы. Вместо того чтобы просто заменить слова, модель ломает свой привычный алгоритм «хорошего ответа» и переходит в режим выживания. Она выдает текст в два раза короче, выбрасывает важные детали и превращается в робота-минималиста, который формально выполнил приказ, но по факту выдал бесполезный огрызок.

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

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

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

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

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

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

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