TL;DR
Step-by-Step Simplification — метод упрощения сложных текстов через промежуточные уровни. Вместо одного большого упрощения (с профессионального на детский уровень) делаешь несколько маленьких шагов (профессиональный → продвинутый → средний → базовый → детский). Каждый шаг проходит в отдельном сообщении, а история диалога сохраняется — модель помнит предыдущие упрощения и делает следующие более связно.
LLM плохо справляются с радикальным упрощением за раз. Попросишь переписать юридический договор языком школьника — получишь либо недостаточно простой текст (модель "не дошла" до нужного уровня), либо искажённый смысл (модель упростила, но потеряла важные детали). Исследование показало фундаментальный компромисс: чем сильнее упрощаешь, тем больше теряешь смысл. Причём даже эксперты-люди не могут согласованно оценить "сохранён смысл или нет" — настолько это субъективно.
Метод решает через планирование пути (определить промежуточные уровни между исходным и целевым) и Chain-of-Thought с историей диалога (каждое упрощение опирается на предыдущее, модель видит траекторию своих рассуждений). Дополнительно: показываешь модели примеры удачных упрощений, где смысл сохранён максимально — это направляет её к лучшему балансу.
Схема метода
ШАГ 1: Определи промежуточные уровни
Исходный → [Промежуточный 1] → [Промежуточный 2] → Целевой
ШАГ 2: Для каждого перехода (в отдельном сообщении):
Покажи 2-3 примера удачных упрощений с этого уровня на следующий
Попроси упростить текущую версию на один уровень
→ Получаешь упрощённую версию
ШАГ 3: Сохрани результат как вход для следующего шага
История диалога содержит все предыдущие упрощения
ШАГ 4: После финального шага
Проверь итоговый текст: достиг ли целевого уровня
Важно: Каждый шаг — это продолжение одного диалога, не отдельные запросы. Модель видит всю цепочку упрощений.
Пример применения
Задача: У тебя техническая документация по новому API для разработчиков. Нужно сделать три версии: для техлида (оставить как есть), для джуна-программиста, и для менеджера продукта без технического бэкграунда.
Исходный текст (уровень: технический эксперт):
Аутентификация осуществляется посредством OAuth 2.0 с использованием
токенов доступа JWT. Время жизни токена составляет 3600 секунд.
Refresh-токен позволяет получить новый access-токен без повторной
авторизации пользователя. Rate limit установлен на уровне 100
запросов в минуту на IP-адрес.
Промпт 1 (Эксперт → Продвинутый):
Упрости этот текст на один уровень — с экспертного на продвинутый.
Убери излишнюю техническую терминологию, но сохрани точность.
Примеры удачных упрощений экспертного на продвинутый:
[Эксперт] "Кеширование реализовано через Redis с TTL 300 секунд"
[Продвинутый] "Данные кешируются в Redis на 5 минут"
[Эксперт] "Асинхронная обработка через message queue RabbitMQ"
[Продвинутый] "Задачи обрабатываются асинхронно через очередь сообщений"
Текст для упрощения:
{вставить исходный текст}
Промпт 2 (Продвинутый → Базовый):
Продолжаем упрощать. Теперь упрости полученный текст ещё на один уровень —
с продвинутого на базовый. Объясняй специальные термины простыми словами.
Примеры удачных упрощений продвинутого на базовый:
[Продвинутый] "Данные кешируются в Redis на 5 минут"
[Базовый] "Система сохраняет данные на 5 минут для быстрого доступа"
[Продвинутый] "Задачи обрабатываются асинхронно через очередь"
[Базовый] "Задачи выполняются в фоновом режиме по очереди"
Текст для упрощения:
{здесь будет результат из Промпта 1}
Результат:
Модель выдаст последовательность упрощений в одном диалоге. Первое сообщение даст продвинутую версию (технические термины заменены на понятные аналоги, но логика сохранена). Второе сообщение даст базовую версию (всё объяснено без специальной терминологии).
История диалога позволяет модели видеть траекторию упрощения — она понимает что уже упростила и сохраняет связность между версиями.
Почему это работает
LLM плохо делают большие прыжки в сложности. Когда просишь "перепиши с экспертного на детский уровень" в одном запросе, модель не справляется с калибровкой — результат либо недостаточно простой, либо смысл искажён. Это как пытаться спрыгнуть с пятого этажа вместо того чтобы спуститься по лестнице.
LLM хорошо делают маленькие изменения и следуют истории. Когда упрощаешь пошагово, каждый переход небольшой и контролируемый. История диалога даёт модели контекст — она видит предыдущие версии и понимает направление движения. Это создаёт связность между шагами: второе упрощение учитывает первое, третье учитывает оба предыдущих.
Примеры с хорошим сохранением смысла направляют модель. Показывая 2-3 примера удачных упрощений (где смысл сохранён максимально), ты создаёшь паттерн для модели — она видит КАК можно упростить без потери важных деталей.
Рычаги управления:
Количество промежуточных уровней — больше шагов = плавнее переход, но дольше и больше накопленных искажений. Для небольших изменений (профессионал → любитель) хватит 1-2 шагов. Для радикальных (юрист → школьник) нужно 3-4.
Примеры в каждом шаге — покажи 2-3 пары "было-стало" с максимальным сохранением смысла. Без примеров модель может упрощать слишком агрессивно. С плохими примерами (где смысл искажён) — повторит ошибку.
История диалога vs отдельные запросы — работай в одном диалоге, не сбрасывай контекст. История позволяет модели видеть всю цепочку и делать следующие шаги более связными. Если сделаешь каждый шаг в новом чате — потеряешь связность.
Шаблон промпта
Для одного шага упрощения:
Упрости этот текст на один уровень — с {текущий_уровень} на {следующий_уровень}.
Примеры удачных упрощений с {текущий_уровень} на {следующий_уровень}:
[{текущий_уровень}] "{пример_1_исходный}"
[{следующий_уровень}] "{пример_1_упрощённый}"
[{текущий_уровень}] "{пример_2_исходный}"
[{следующий_уровень}] "{пример_2_упрощённый}"
Текст для упрощения:
{текст}
Плейсхолдеры:
- {текущий_уровень} / {следующий_уровень} — описание уровней сложности (экспертный/продвинутый/базовый, или C2/B2/A2, или для PhD/студента/школьника)
- {пример_X_исходный} / {пример_X_упрощённый} — пары удачных упрощений с этого уровня на следующий
- {текст} — текст для упрощения
🚀 Быстрый старт — вставь в чат:
Помоги адаптировать этот шаблон под мою задачу. Спроси:
1. Какой у меня исходный текст и для кого он сейчас написан?
2. Кто целевая аудитория?
3. Сколько промежуточных уровней нужно (сколько шагов упрощения)?
Потом создашь план упрощения и примеры для каждого шага.
[вставить шаблон выше]
LLM спросит про исходную и целевую аудиторию, потому что нужно откалибровать уровни сложности. Она спросит про предметную область, чтобы подобрать примеры из правильного контекста (технические тексты упрощаются иначе, чем юридические). Она возьмёт структуру шаблона и создаст план с промежуточными шагами под твою задачу.
Ограничения
⚠️ Фундаментальный компромисс: Чем сильнее упрощаешь (больше шагов, большая разница уровней), тем больше теряешь смысл. Радикальное упрощение неизбежно искажает детали — даже поэтапный подход не решает это полностью, только смягчает.
⚠️ Накопление искажений: Каждый шаг упрощения вносит маленькие изменения. За 3-4 шага эти изменения накапливаются. Финальный текст может сильно отличаться от исходного по деталям, даже если общий смысл сохранён.
⚠️ Субъективность оценки: Определить "сохранён смысл или нет" сложно даже экспертам-людям. Исследование показало что даже профессиональные преподаватели с 20+ годами опыта не могут согласованно оценить сохранение смысла. Что уж говорить про автоматическую проверку.
⚠️ Требует примеров: Без качественных примеров удачных упрощений метод работает хуже. Нужно либо найти готовые пары "сложный-простой" в своей области, либо самому создать 2-3 примера для каждого шага.
⚠️ Не для простых задач: Если разница уровней небольшая (профессионал → продвинутый любитель), обычное одношаговое упрощение работает нормально. Поэтапный подход ценен только для больших разрывов в сложности.
Как исследовали
Команда взяла два датасета на пяти языках (английский, французский, русский, арабский, хинди) с предложениями, размеченными по уровням CEFR — общеевропейской шкале языковой компетенции от A1 (начинающий) до C2 (профессиональный). Сравнивали несколько подходов: одношаговое упрощение (как делали раньше), поэтапное упрощение без истории, поэтапное с историей, с примерами и без.
Тестировали на трёх открытых LLM: Llama-3-8B, Gemma-2-9B, Mistral-7B. Измеряли точность достижения целевого уровня (попал ли в нужный CEFR или хотя бы близко) и сохранение смысла (через семантическую схожесть текстов и оценку людьми).
Ключевая находка: Обнаружили чёткий паттерн компромисса — во всех моделях и языках видна обратная зависимость. Модель Gemma лучше достигала целевого уровня (96% попадание в соседний уровень), но хуже сохраняла смысл (61% семантическая схожесть). Модель Llama наоборот — 93% точность, но 66% сохранение смысла. Причём человеческая оценка подтвердила то же самое: поэтапное упрощение лучше контролирует уровень, но больше теряет смысл.
Самое интересное: когда привлекли экспертов-преподавателей (в среднем 10-26 лет опыта преподавания языков) для оценки сохранения смысла, они не смогли согласованно оценить многие пары текстов. Пришлось создавать квалификационные тесты, отбирать аннотаторов, комбинировать носителей языка с преподавателями — и даже это не дало высокого согласия для французского и хинди. Это показывает что задача сохранения смысла при упрощении объективно сложная, не только для моделей.
Почему результаты такие: Динамическое планирование пути (определение промежуточных уровней через алгоритм динамического программирования) позволило снизить количество шагов на 22-42% по сравнению с наивным "упрощай по одному уровню до конца". Это сэкономило токены и время, сохранив качество. История диалога добавила 3-6 процентных пунктов к точности — небольшой, но устойчивый эффект во всех экспериментах. Выбор примеров по семантической схожести улучшил сохранение смысла на 2-5% — опять же небольшой, но стабильный вклад.
Инсайт для практики: нет серебряной пули. Поэтапный подход с историей и примерами — лучший из протестированных методов, но он не решает фундаментальную проблему компромисса. Если нужно упростить сильно (с C2 до A1, или с юридического на детский) — будь готов к потере деталей. Метод минимизирует потери, но не устраняет их.
Адаптации и экстраполяции
🔧 Техника: Обратный процесс — усложнение текста через промежуточные уровни
Тот же принцип работает в обратную сторону. Вместо упрощения делай усложнение через промежуточные уровни: с разговорного на деловой, с обывательского на профессиональный, с детского на академический.
Пример:
Шаг 1: Усложни этот текст на один уровень — с разговорного на нейтральный.
Примеры:
[Разговорный] "Мы запилили новую фичу за выходные"
[Нейтральный] "Мы разработали новую функцию за выходные"
Текст: {разговорный текст}
Шаг 2: Усложни полученный текст ещё на уровень — с нейтрального на деловой.
Примеры:
[Нейтральный] "Мы разработали новую функцию за выходные"
[Деловой] "Команда реализовала дополнительный функционал в течение уикенда"
Текст: {результат из Шага 1}
🔧 Техника: Адаптация тона без изменения сложности
Можешь использовать поэтапную трансформацию тона вместо уровня сложности: с агрессивного на нейтральный, с формального на дружелюбный, с сухого на эмоциональный.
Пример:
Шаг 1: Смягчи тон этого письма на один уровень — с резкого на прямой.
Шаг 2: Продолжи смягчать — с прямого на вежливый.
Шаг 3: Финальное смягчение — с вежливого на дружелюбный.
(в каждом шаге показываешь примеры удачных трансформаций тона)
Та же механика — история диалога позволяет видеть траекторию, примеры направляют модель, маленькие шаги контролируют результат.
🔧 Техника: Множественные финальные версии из одной цепочки
Поскольку ты делаешь несколько шагов в одном диалоге, у тебя автоматически получается несколько версий текста разной сложности. Не нужно запускать процесс заново — просто сохрани промежуточные результаты.
Пример: После трёх шагов упрощения (Эксперт → Продвинутый → Базовый → Начальный) у тебя четыре версии текста: 1. Исходная (для экспертов) 2. После Шага 1 (для продвинутых) 3. После Шага 2 (для базового уровня) 4. После Шага 3 (для новичков)
Используй для многоуровневой документации, где разные разделы для разных аудиторий.
Ресурсы
Let's Simplify Step by Step: Guiding LLM Towards Multilingual Unsupervised Proficiency-Controlled Sentence Simplification — исследование показывает динамическое планирование пути для оптимизации шагов упрощения и семантически обоснованный Chain-of-Thought с историей диалога. Код доступен на GitHub: simplify-step-by-step
Barayan et al. (2025) — предыдущее исследование CEFR-контролируемого упрощения, показавшее что LLM struggles with lower readability targets (упрощение на много уровней сразу).
CEFR (Common European Framework of Reference for Languages) — общеевропейская шкала языковых компетенций, используется для калибровки уровней сложности текста от A1 (начинающий) до C2 (профессиональный).
Авторы: Jingshen Zhang, Xin Ying Qiu, Lifang Lu, Zhuhua Huang, Yutao Hu, Yuechang Wu, JunYu Lu Организации: Guangdong University of Foreign Studies (Китай), Tianjin University (Китай), Lionrock AI Lab
