3,583 papers
arXiv:2601.18730 84 26 янв. 2026 г. FREE

Reflect: пост-генерационная проверка соблюдения принципов

КЛЮЧЕВАЯ СУТЬ
Парадокс: LLM лучше находит нарушения принципов в готовом тексте, чем избегает их при генерации. Просишь «соблюдай 5 правил» — модель упускает половину. Показываешь готовый текст и спрашиваешь «что нарушено?» — точно находит проблему. Reflect использует это: модель сначала пишет текст, потом сама проверяет каждый принцип и переписывает где нужно. Разделение на «генератор» и «критик» в одном чате — снижает долю грубых нарушений в 2-3 раза, особенно для tone-of-voice и бренд-гайдлайнов.
Адаптировать под запрос

TL;DR

Reflect — техника, которая улучшает ответы LLM через пост-генерационную проверку на соблюдение принципов. Модель сначала генерирует ответ с учётом принципов, потом сама оценивает каждый принцип по шкале 1-5, и если находит нарушение — критикует себя и переписывает ответ. Всё происходит в обычном чате, без fine-tuning.

LLM лучше распознают нарушения принципов в готовом тексте, чем избегают их при генерации. Если попросить модель "соблюдать принцип X" — она может нарушить. Но если показать текст и спросить "нарушен ли принцип X?" — она точно найдёт проблему. Когда ты перечисляешь 4-5 правил в начале промпта, модель может упустить какое-то — особенно если принципы сложные или противоречат друг другу. Это происходит из-за causal attention в архитектуре Transformer: при проверке модель видит и принцип, и весь текст одновременно, а при генерации — только принцип в начале.

Reflect использует эту особенность: модель генерирует текст → сама оценивает по каждому принципу → если балл ниже 3 из 5, запускается критика и ревизия в одном промпте. Особенно эффективно для редких, но серьёзных нарушений (tail safety) — когда в среднем модель соблюдает принцип, но 5-10% ответов грубо нарушают. Reflect снижает долю таких случаев в 2-3 раза.

🔬

Схема метода

ШАГ 1: Генерация с учётом принципов
→ Промпт: "Вот принципы [список]. Ответь на вопрос: [вопрос]"
→ Результат: базовый ответ

ШАГ 2: Самооценка
→ Промпт: "Оцени свой ответ по каждому принципу от 1 до 5"
→ Результат: список оценок по принципам

ШАГ 3: Критика и ревизия (если балл < 3)
→ Промпт: "Принципы с низкой оценкой: [список]. Критикуй ответ и перепиши."
→ Результат: улучшенный ответ

Все шаги выполняются в одной сессии чата, выводы копируешь между запросами.
🚀

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

Задача: Написать пост для Telegram-канала вашего стартапа по доставке еды. У вас есть tone-of-voice guidelines: (1) без агрессивных продаж, (2) используй юмор поколения Z, (3) не обещай то, чего не можем гарантировать, (4) упоминай конкурентов только нейтрально.

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

Вот принципы коммуникации нашего бренда:
1. Избегай агрессивных продаж и манипуляций
2. Используй юмор поколения Z (мемы, самоирония, культурные отсылки)
3. Не обещай то, что не можем гарантировать (доставка "за 15 минут всегда")
4. Упоминай конкурентов только нейтрально, без агрессии

Напиши пост для Telegram-канала про запуск доставки в новом районе (Кунцево, Москва).

Промпт (шаг 2, после получения первого варианта):

Оцени свой пост по каждому принципу от 1 (полностью нарушает) до 5 (полностью соблюдает).
Дай оценку и краткое обоснование по каждому принципу.

Промпт (шаг 3, если нашлись оценки < 3):

Принципы с низкой оценкой: юмор поколения Z, реалистичные обещания.

Сделай критику текста по этим принципам. Затем перепиши пост с учётом критики.

Формат:
КРИТИКА: [что не так]
РЕВИЗИЯ: [новый текст]

Результат:

Модель выдаст критику (например: "юмор слишком формальный, фраза 'гарантируем 30 минут' звучит как обещание") и переписанный пост с мемной подачей и осторожными формулировками ("обычно привозим за 30-40 минут, но пробки есть пробки 🤷").

🧠

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

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

Сильная сторона LLM: Модель отлично анализирует готовый текст. Если дать ей текст и спросить "нарушен ли принцип X?" — она точно найдёт проблему. Это работает благодаря causal attention: при проверке модель видит и принцип, и весь текст в контексте одновременно. Она может "сканировать" готовый текст и сопоставлять с каждым принципом по отдельности.

Как метод использует это: Reflect разделяет процесс на два этапа — генерация и проверка. Сначала модель пытается следовать принципам (как умеет), потом переключается в режим аналитика — видит готовый текст целиком и точно определяет нарушения. Критика и ревизия в одном промпте даёт модели контекст: она понимает что именно нарушено, и может целенаправленно исправить эти места, не трогая остальное.

Рычаги управления:

  • Порог оценки (по умолчанию 3 из 5): Снизь до 2, если хочешь ревизию только для грубых нарушений — экономия токенов. Подними до 4, если стандарты строгие и нужна полировка даже мелких отклонений.

  • Число циклов: Одного цикла достаточно для 5-12 принципов. Можешь добавить второй цикл для особо сложных задач (запусти шаг 2 и 3 повторно для ревизии), но эффект убывает.

  • Структура самооценки: Вместо "оцени от 1 до 5" можешь попросить "выпиши нарушенные принципы" — проще для модели, но теряешь градацию серьёзности.

  • Детализация критики: Добавь "укажи конкретные фразы, которые нарушают" или "объясни ЧЕМ это вредит цели текста" — модель даст более практичную ревизию, не абстрактную.

📋

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

Шаг 1: Генерация с учётом принципов

Вот принципы, которые нужно соблюдать:
{список_принципов}

{твоя_задача}

Шаг 2: Самооценка

Оцени свой ответ по каждому принципу от 1 (полностью нарушает) до 5 (полностью соблюдает).

Формат:
Принцип 1: [оценка]/5 — [краткое обоснование]
Принцип 2: [оценка]/5 — [краткое обоснование]
...

Шаг 3: Критика и ревизия (если есть оценки ниже 3)

Принципы с низкой оценкой: {список_нарушенных_принципов}

Сделай критику своего ответа по этим принципам. 
Затем перепиши ответ с учётом критики.

Формат:
КРИТИКА: [что именно нарушено и почему это проблема]
РЕВИЗИЯ: [улучшенный ответ]

Что подставить: - {список_принципов} — правила, которым должен следовать текст (tone-of-voice, бренд-гайдлайны, редполитика, compliance требования) - {твоя_задача} — что написать (пост, ответ клиенту, статья, письмо) - {список_нарушенных_принципов} — принципы с оценкой 1-2 из предыдущего шага


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

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

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

LLM спросит какие принципы важны и какой текст нужен — чтобы подставить в структуру оценки. Она возьмёт паттерн "генерация → самооценка → критика" и адаптирует под твою задачу.

⚠️

Ограничения

⚠️ Требует несколько запросов: Полный цикл Reflect — это 2-3 запроса к модели (генерация, оценка, ревизия). Для простых задач это избыточно — если текст итак хорош, самооценка покажет 4-5 баллов и ревизия не нужна. Для массовой генерации контента overhead может быть критичным.

⚠️ Зависит от формулировки принципов: Размытые принципы ("будь креативным", "пиши интересно") работают хуже чётких ("используй метафоры из природы", "каждый абзац начинай с вопроса"). Модель может по-разному интерпретировать абстрактные правила.

⚠️ Не заменяет fine-tuning для постоянных требований: Если ты каждый день генеришь контент с одними и теми же принципами, fine-tuning модели будет эффективнее по токенам и времени. Reflect — для гибкости и разных контекстов.

⚠️ Работает хуже для противоречивых принципов: Если принципы конфликтуют ("будь максимально кратким" + "глубоко объясни каждый пункт"), модель может снизить оценку обоим, но не найти баланс. Нужно либо приоритизировать, либо разделить на два цикла.

🔍

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

Исследователи взяли три модели (GPT-4-Mini, Claude-Haiku-3.5, Mistral-7B) и проверили как Reflect помогает следовать сложным и непривычным принципам — тем, на которых модели НЕ были дообучены. Например: "избегай антропоцентризма" или "используй исторические параллели из незападных культур". Идея была простой: если модель научилась быть "helpful and harmless" при fine-tuning, сможет ли она в рантайме адаптироваться к совсем другим ценностям?

Протестировали на 500 промптах из двух датасетов red-teaming (PKU-Safe-RLHF и Anthropic HH-RLHF) — это промпты, которыми обычно проверяют безопасность моделей и пытаются выявить нарушения. Для каждого промпта запустили Reflect и оценили соблюдение каждого принципа по шкале 1-5 через GPT-4 в роли судьи. Сравнивали три варианта: (1) промпт без принципов (baseline), (2) промпт с принципами в начале (constitution-conditioned), (3) полный Reflect (pre-conditioning + post-generation critique).

Что удивило: Post-generation reasoning дал скачок даже для продвинутых моделей типа GPT-4 и Claude. Особенно сильный эффект — на редких, но серьёзных нарушениях (tail cases). В среднем модель могла соблюдать принцип на 3.8/5, но 5-10% ответов грубо нарушали (1-2 балла). Reflect снизил долю таких нарушений в 2-3 раза — критично для safety и compliance.

Ключевой инсайт: Модели уже умеют определять нарушения принципов — просто не используют эту способность при генерации с нуля. Разделение "генерация → проверка" разблокировало то, что модель знала, но не применяла. Это не добавило новых знаний, а изменило процесс — модель получила возможность "посмотреть на себя со стороны".

Дополнительно проверили может ли Reflect генерировать данные для fine-tuning. Взяли 2000 промптов, прогнали Reflect, сохранили пары (базовый ответ, улучшенный ответ) и дообучили Mistral-7B через DPO. Результат: дообученная модель стала лучше соблюдать принципы даже БЕЗ Reflect на inference — то есть inference-time техника создала тренировочные данные сама, без человеческой разметки.

📄

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

Контекст: Исследователи описывают промпт для шага "Critique and Revision". Ниже — структура из статьи (упрощённая версия, полная с XML-тегами в Appendix G.3).

You are tasked with improving a response to the user's query by ensuring it 
conforms to the following principles:

{Constitution}

Here is the user's query:
{User Query}

Here is the initial response:
{Base Response}

Here is the self-evaluation of the response:
{Self-Evaluation Scores}

The following principles have been flagged as potentially violated:
{Flagged Principles}

Please do the following:
1. CRITIQUE: Explain specifically how the response violates each flagged principle
2. REVISION: Rewrite the response to better conform to all principles

Format your response as:
CRITIQUE: [your critique]
REVISION: [your revised response]
💡

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

💡 Адаптация для tone-of-voice control:

Вместо этических принципов используй Reflect для контроля стиля и голоса бренда.

Принципы tone-of-voice для {название_бренда}:
1. Говорим на "ты", но без фамильярности — как друг, не как приятель с района
2. Короткие предложения (до 15 слов) — читают с телефона
3. Избегаем канцеляризмов ("осуществляем", "в целях") и штампов ("рады сообщить")
4. Один эмодзи на абзац — для тепла, но не переборщить

Напиши {тип_контента}: {задача}

---

(шаг 2)
Оцени текст по каждому принципу от 1 до 5. Укажи конкретные фразы для низких оценок.

---

(шаг 3, если есть < 3)
КРИТИКА: [что нарушено]
РЕВИЗИЯ: [исправленный текст]

🔧 Техника: два раунда проверки для сложных задач

Если принципов больше 10 или они конфликтуют, раздели на два цикла:

Цикл 1: Проверь принципы группы A (например, tone-of-voice и стиль) Цикл 2: Проверь принципы группы B (например, фактическая точность и compliance)

Модель лучше справляется с 5-6 принципами за раз, чем с 12 одновременно. После первого цикла ревизии запусти второй — уже на улучшенном тексте.


💡 Адаптация для code review:

Используй Reflect для проверки кода на соблюдение code style guidelines.

Принципы code style для проекта:
1. Имена переменных — существительные, функций — глаголы
2. Максимум 3 уровня вложенности if/for — если глубже, выносить в функции
3. Каждая функция — одна ответственность (Single Responsibility Principle)
4. Комментарии на русском, код на английском
5. Избегай magic numbers — используй named constants

Напиши функцию для {задача}

---

Оцени код по каждому принципу. Укажи строки кода, которые нарушают.

---

КРИТИКА: [что не так, номера строк]
РЕВИЗИЯ: [исправленный код]

🔧 Техника: добавь "покажи примеры нарушений" → точнее критика

В шаге самооценки добавь требование конкретики:

Для каждого принципа с оценкой ниже 4:
- Оценка: [балл]/5
- Что нарушено: [конкретные фразы или фрагменты]
- Почему это проблема: [как это вредит цели текста]

Это даёт модели зацепки для ревизии вместо абстрактной критики "стиль недостаточно живой". Модель увидит "фраза X формальная" → заменит именно её, не переписывая весь текст.

🔗

Ресурсы

Reflect: Transparent Principle-Guided Reasoning for Constitutional Alignment at Scale

Henry Bell, Caroline Zhang, Mohammed Mobasserul Haque, Dhaval Potdar, Samia Zaman, Brandon Fain

Duke University, 2026

Связанные концепции: - Constitutional AI (Anthropic, 2022) — оригинальный подход с critique-revision для reward modeling - Chain-of-Thought prompting — структурированные рассуждения улучшают качество - Self-Refine (Madaan et al., 2023) — итеративная самопроверка для улучшения вывода


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

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

Парадокс: LLM лучше находит нарушения принципов в готовом тексте, чем избегает их при генерации. Просишь «соблюдай 5 правил» — модель упускает половину. Показываешь готовый текст и спрашиваешь «что нарушено?» — точно находит проблему. Reflect использует это: модель сначала пишет текст, потом сама проверяет каждый принцип и переписывает где нужно. Разделение на «генератор» и «критик» в одном чате — снижает долю грубых нарушений в 2-3 раза, особенно для tone-of-voice и бренд-гайдлайнов.

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

Процесс в три запроса: (1) Генерация с учётом принципов → модель пишет первый вариант. (2) Самооценка → модель оценивает свой текст по каждому принципу от 1 до 5. (3) Критика и ревизия → если есть оценки ниже 3, модель сама указывает что нарушено и переписывает эти места. Ключевое: при проверке модель видит весь текст целиком и может сканировать нарушения по каждому принципу отдельно — то что упустила при генерации, находит при анализе.

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

При генерации модель держит принципы «в голове» — если их 4-5 и они сложные, часть упускается (особенно если конфликтуют: «будь кратким» + «объясни глубоко»). При проверке работает causal attention: модель видит готовый текст и принцип одновременно в контексте — может сопоставить каждое предложение с каждым правилом отдельно. Это как студент: легче проверить чужую работу на ошибки, чем написать свою без ошибок. Особенно эффективно для редких, но серьёзных нарушений — когда 90% текстов нормальные, но 5-10% грубо нарушают (tail safety). Reflect вырезает эти выбросы.

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

Контроль соблюдения принципов → конкретно для tone-of-voice бренда, редполитики, compliance требований, бренд-гайдлайнов, особенно когда принципов несколько (4-12 штук) и они не всегда очевидны. НЕ подходит для массовой генерации где токены критичны (нужно 2-3 запроса на текст) — там лучше fine-tuning.

Мини-рецепт

1. Генерация с принципами: Перечисли правила в начале промпта, дай задачу — модель пишет первый вариант.
2. Самооценка: Попроси оценить текст по каждому принципу от 1 до 5 с кратким обоснованием — модель выдаст список оценок.
3. Критика и ревизия: Если есть оценки 1-2 (или ниже 3 для строгих стандартов), попроси критиковать нарушенные принципы и переписать текст — модель укажет конкретные проблемы и выдаст улучшенную версию.
4. Опционально: Второй цикл самооценки для сложных задач — повтори шаги 2-3 для ревизии, но обычно одного цикла достаточно.

Примеры

[ПЛОХО] : Вот 5 принципов tone-of-voice нашего бренда: [список]. Напиши пост про новую функцию — модель упустит 2-3 принципа, особенно если они конфликтуют или сложные.
[ХОРОШО] : Сначала: Вот принципы: [список]. Напиши пост. Потом: Оцени свой пост по каждому принципу от 1 до 5. Если нашлись оценки ниже 3: Принципы с низкой оценкой: юмор поколения Z, реалистичные обещания. Критикуй текст по этим принципам и перепиши → модель находит «юмор слишком формальный, фраза 'гарантируем 30 минут' звучит как обещание» и переписывает с мемной подачей и осторожными формулировками.
Источник: Reflect: Transparent Principle-Guided Reasoning for Constitutional Alignment at Scale
ArXiv ID: 2601.18730 | Сгенерировано: 2026-01-27 06:30

Проблемы LLM

ПроблемаСутьКак обойти
Модель теряет принципы при генерации длинного текстаДаёшь модели 4-5 правил в начале промпта. Она начинает писать — и забывает про одно правило. Особенно если принципы сложные или конфликтуют ("будь кратким" + "объясни глубоко"). При генерации модель видит принципы только в начале контекста. Пока пишет — не может вернуться и "перечитать" их все разом. Проблема усиливается с каждым новым предложениемРазбей на два этапа. Сначала модель пишет текст как умеет. Потом даёшь ей готовый текст и просишь проверить каждый принцип отдельно. При проверке модель видит и принцип, и весь текст одновременно — находит нарушения точно

Методы

МетодСуть
Пост-генерация + самооценка по принципамШаг 1: Модель пишет текст с учётом принципов (обычный промпт). Шаг 2: Просишь оценить каждый принцип от 1 до 5 в готовом тексте. Шаг 3: Если оценка ниже 3 — модель критикует себя и переписывает проблемные части. Всё в одной сессии чата. Почему работает: Модель сильнее в анализе готового текста, чем в соблюдении правил на лету. Разделение на генерацию и проверку использует эту силу. Когда применять: много принципов (4+), сложные правила, высокие требования к соблюдению (юридические тексты, бренд-гайды, compliance). Когда не работает: простые задачи с 1-2 правилами (избыточно), массовая генерация где важна скорость (2-3 запроса вместо одного)
📖 Простыми словами

Reflect: Transparent Principle-Guided Reasoning for Constitutional Alignment at Scale

arXiv: 2601.18730

Суть метода Reflect в том, что нейросети, как и люди, не умеют делать десять дел одновременно. Когда ты закидываешь в модель сложный промпт с кучей правил, она банально «плывет»: фокусируется на одном и забивает на другое. Фундаментально LLM — это предсказатель следующего слова, а не стратег. Метод переводит модель из режима потокового вещания в режим осознанного редактирования, заставляя её буквально проверять саму себя по чек-листу уже после того, как текст написан.

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

Работает это через прозрачное обоснование: модель сначала выдает черновик, а потом прогоняет его через фильтр заданных принципов, ставя себе баллы от 1 до 5. Если по какому-то пункту выходит двойка, нейронка сама пишет критику, объясняет, где она накосячила, и выдает финальный, исправленный вариант. Главная фишка здесь — отсутствие дообучения. Тебе не нужно пересобирать модель или копаться в весах, достаточно просто правильно выстроить структуру диалога в обычном чате.

Хотя в исследовании мучали сложные этические установки, принцип Reflect абсолютно универсален. Его можно и нужно внедрять везде: от написания постов в Telegram с жестким tone-of-voice до генерации кода, который должен соответствовать стандартам безопасности. Если у тебя есть список из пяти и более требований к тексту, обычный промпт, скорее всего, провалит задачу, а этот метод вытянет результат за счет самокритики.

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

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

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

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