Почему голос автора не передаётся промптом
Манеру автора пробовали передать языковой модели инструкцией с примерами, а потом обучили для неё небольшой адаптер. В отчёте показано, что получилось у каждого способа, почему решающим было чтение, а не метрики, и зачем вокруг адаптера понадобились шаги, которые возвращают тексту смысл.
· 31 минута чтения

Аннотация
В отчёте проверяется, можно ли заставить языковую модель писать в манере конкретного человека. Сначала модели давали инструкцию с примерами его абзацев, потом на его текстах обучили небольшой адаптер. Инструкция дала карикатуру на автора, привычки самой модели и одни и те же приёмы в каждом тексте. Адаптер дал текст, который при чтении звучит как автор, если обучен на нескольких сотнях его абзацев. Зато адаптер портит связность исходника. Он искажает смысл, ломает согласование и сочиняет несуществующие слова. Поэтому в рабочем конвейере вокруг адаптера стоят шаги, которые сохраняют его манеру и возвращают тексту смысл. Во всех опытах главным способом оценки было внимательное чтение. Метрики помогали, но несколько раз не увидели разницы, которую замечало чтение. Об этих случаях рассказано отдельно.
1. Введение
Голосом автора называют то, как он говорит, а не что. Один и тот же факт два человека расскажут по-разному. Один выберет короткие фразы и повторы, другой длинное предложение с оговоркой в скобках. Читатель узнаёт любимого автора по манере раньше, чем дочитает до сути.
Языковая модель, например ChatGPT, тоже пишет в своей манере. Её легко узнать по ровным предложениям, одинаковому ритму и привычным оборотам. Попросить её писать «как автор» кажется простым решением. В отчёте проверено, работает ли оно и что делать, если нет.
Вот разница, о которой идёт речь. Ниже одна и та же мысль, записанная дважды. Первый вариант написан ровно, без манеры. Второй написала модель, которую обучили на текстах одного автора. Мысль взята из диктовки одного из создателей Redraft.
Код далеко не единственная часть продукта. Помимо него, есть процессы, потоки данных, модель данных.
Но код — это не все! Есть еще процессы, есть еще потоки данных, есть еще модель данных.
Факты те же. Но во втором варианте слышно человека, который перечисляет с нажимом и повторяет «есть еще», потому что так говорит. Сама модель таких повторов не пишет, её учили писать гладко.
Дальше рассказано, как удалось прийти от первого варианта ко второму и чего это стоило. Сначала описаны данные и методы, потом опыты с промптом и опыты с адаптером. В конце объясняется, почему одного адаптера мало и что пришлось построить вокруг него.
Главный вывод отчёта
Инструкцией манеру не передать. Обученный адаптер её передаёт, но ломает смысл. Рабочий результат даёт только связка адаптера и шагов, которые этот смысл возвращают.

2. Данные и методы
2.1. Тексты и авторы
Материалом служили тексты живых авторов из открытого доступа на русском языке. Авторы здесь не названы, их тексты не цитируются, в отчёте они обозначены буквами.
- Автор А. Пишет разговорно. На его текстах шли почти все опыты.
- Автор Б. Пишет спокойно и много объясняет. На нём проверяли температуру адаптера и ошибки, которые остаются в готовом тексте.
- Автор В. Его абзацы переписывали под манеру Автора А, а на его собственном адаптере проверяли, когда останавливать обучение.
- Автор Г. Пишет длинные тексты. На нём проверяли, как промпт справляется с длинной формой.
Единицей текста везде был абзац. Короткие абзацы склеивали со следующими, чтобы в каждом куске манера была слышна.
2.2. Текст без голоса
Чтобы учить и проверять перенос манеры, нужны пары. В каждой паре одна и та же мысль сказана дважды, ровно и так, как её сказал автор. Готовых таких пар не бывает, поэтому их пришлось делать. Другая языковая модель пересказывала абзац автора, сохраняя смысл и убирая манеру.
Это похоже на протокол живого разговора. Факты на месте, а человека не слышно. Дальше такой пересказ называется текстом без голоса. Для обучения адаптера каждый абзац пересказывали несколько разных моделей, чтобы привычки одной из них не выдавали себя за манеру автора. Так же поступают в работе [2].
2.3. Путь через промпт
Промптом называют письменную инструкцию для модели, вроде технического задания исполнителю. Самый сильный вариант инструкции показывает модели образцы, как новичку перед первым письмом клиенту показывают пару готовых писем. Такой приём называют few-shot, то есть обучением на нескольких примерах прямо в запросе.
Образцы подбирали под каждый абзац отдельно. Программа находила среди текстов автора шесть абзацев, самых близких по содержанию к тому, который нужно переписать, и вставляла их в запрос. Это называют поиском похожих примеров, или retrieval. Расчёт был на то, что манера на близкую тему передаётся легче. Переписывала большая коммерческая модель.
2.4. Базовая модель и адаптер
Языковая модель хранит знания о языке в миллиардах чисел, которые называют параметрами или весами. В опытах использовалась открытая модель. Для этой задачи у неё важны два свойства.
- Она базовая. Её учили только продолжать тексты, а отвечать как вежливый ассистент не учили. У ассистента есть свои привычки, те самые, с которыми приходилось бороться в промпте, а у базовой модели их меньше. Отдельным опытом этот расчёт не проверяли.
- Она плотная. Каждое слово проходит через все её параметры. Бывают модели другого устройства, «смесь экспертов». Там каждое слово отправляется к одному-двум «экспертам» из многих, как письмо в один отдел большой компании. На нескольких тысячах примеров часть экспертов почти ничего не увидит, а в плотной модели надстройка учится на каждом примере.
Адаптером называют небольшую надстройку над моделью. Саму модель не меняют, как не меняют объектив, когда надевают на него светофильтр. Меняется только то, что проходит через насадку. Такую технику называют LoRA, низкоранговой адаптацией [1].
Внутри модели много больших таблиц чисел, матриц. Каждая превращает одно представление слова в другое. LoRA не трогает такую таблицу, а добавляет к ней поправку, произведение двух узких таблиц. Ширину узких таблиц называют рангом. Это похоже на регулятор с небольшим числом ручек. При ранге 8 у каждой большой таблицы восемь ручек, при ранге 32 их тридцать две.
Размер таблицы взят для примера. Узкие таблицы нарисованы шире, чем в масштабе, иначе их не видно.
При ранге 8 адаптер добавляет к модели меньше процента чисел. При ранге 16 чисел вдвое больше, при ранге 32 вчетверо.
Адаптер Автора А учили на 500 его абзацах. Модель получала текст без голоса и училась выдавать по нему абзац автора, а ошибку считали только по авторской половине пары. Так модель учится писать как автор, а не повторять вход.
Обучение идёт шагами. На каждом шаге модель видит несколько пар и чуть подстраивает адаптер. Когда она увидела все пары по одному разу, прошла одна эпоха. Состояние адаптера по ходу обучения сохраняли, как сохраняют игру, чтобы потом сравнить разные моменты. Часть пар в обучение не пускали и считали по ним потери на проверке. Потери показывают, насколько модель удивляется следующему слову в незнакомом тексте автора.
2.5. Как оценивали результат
Главным было чтение. Выходы моделей читали рядом с настоящими абзацами авторов и решали, звучит ли текст как человек и не сломан ли он. Часть сравнений шла вслепую. Варианты перемешивали и прятали подписи, чтобы ожидания не влияли на оценку. Ещё 74 текста оценили по шкале от 1 до 5 по тому, насколько они похожи на автора.
Метрики были вспомогательными. Считали четыре показателя.
- Классификатор. Это программа, которую научили отличать живые абзацы автора от машинных пересказов, как учат отличать подлинную подпись от подделки. Для каждого текста она выдаёт вероятность того, что он живой. В ранних опытах мерили другое. Там смотрели, насколько уверенно классификатор отличает кандидата от настоящего автора. Результат в 50% значит, что классификатор гадает и тексты неотличимы.
- Расстояние до профиля. Профиль автора состоит из нескольких десятков чисел о его текстах, например средней длины предложения или числа запятых на сто слов. Расстояние показывает, насколько числа нового текста отходят от средних значений автора. Отход считают с поправкой на то, как сильно колеблется сам автор.
- Доля текстов с тире. Сколько текстов в выборке содержат хотя бы одно отдельно стоящее тире.
- Доля новых слов. Сколько слов со смыслом в выходе нет во входе. Это мера смелости. При нуле модель только переставила слова.
Выборки были небольшими, около 60 абзацев, поэтому каждую разницу проверяли бутстрэпом [8]. Выборку сотни раз случайно пересобирают с повторами и каждый раз заново считают показатель. По разбросу результатов видно, насколько можно доверять разнице. Если интервал для разницы двух вариантов захватывает ноль, на такой выборке разницы не видно. В опытах делали по 400 пересборок.
Порядок важен
Метрики подсказывали, где искать, а решение принимал человек, который читал тексты. Почему иначе было нельзя, видно в разделе 3.
3. Эксперименты
3.1. Промпт с примерами автора
Вопрос. Передаёт ли манеру инструкция с шестью близкими по теме абзацами автора? Как ставили. Пересказали без голоса 59 абзацев Автора А, а потом попросили модель вернуть им манеру автора по образцам. Классификатор сравнивал результат с настоящими абзацами автора.
| Текст | Языковые признаки | Сочетания букв |
|---|---|---|
| Автор против самого себя | 58% [52–61] | 46% [41–52] |
| Текст без голоса | 80% [78–83] | 84% [82–85] |
| Промпт с примерами | 85% [84–87] | 74% [70–77] |
| То же с числами автора | 73% [71–76] | 73% [72–76] |
| То же, числа посчитаны автоматически | 72% [70–76] | 67% [64–70] |
Два набора признаков смотрят на разное. Языковые признаки описывают строй текста, например длину предложений и долю причастий. Сочетания букв ловят словарь и написание. Первая строка задаёт планку. Даже куски текстов одного автора классификатор различает в 58% случаев, а не в 50%, и это его собственный шум.
Результат. По словарю промпт приблизил текст к автору, с 84% до 74%. По строю стало хуже, чем у текста без голоса, 85% против 80%. Признаки показали почему. Предложения у модели вышли заметно короче авторских, коротких фраз и переносов строки стало больше. Модель сделала карикатуру. Автор иногда пишет рублеными строками, а модель стала так писать всё подряд. Где у автора было два абзаца, у модели выходило пять.
Как это выглядит, проще показать на условном примере. Он составлен вручную, потому что тексты авторов здесь не цитируются.
Запустили сервис весной.
Боялись.
Думали, никому не нужен.
А пришло больше людей, чем рассчитывали.
При этом в рассуждениях перед ответом модель верно описывала привычки автора. Диагноз она ставила правильно, а исполнение подводило.
Вывод
Описание манеры словами модель доводит до карикатуры. Она берёт заметную черту автора и ставит её везде.
3.2. Числа автора вместо описания
Вопрос. Может быть, модели нужно не описание, а точные цифры? Как ставили. Строй Автора А измерили по его текстам и вписали в инструкцию как цели среднюю длину предложения и число переносов строки, запятых и тире на сто слов. Потом эти числа стали считать по текстам автора автоматически.
Результат. По классификатору стало заметно лучше, это видно в двух нижних строках таблицы 1. Карикатура ушла. Но у цифр нашлась обратная сторона, и она проявилась на длинных текстах Автора Г.
| Признак | Автор, среднее | Автор, разброс | Модель, среднее | Модель, разброс |
|---|---|---|---|---|
| Слов в предложении | 15,97 | 5,57 | 15,78 | 3,85 |
| Запятых на сто слов | 8,28 | 3,85 | 10,22 | 3,07 |
| Доля коротких предложений | 0,12 | 0,19 | 0,09 | 0,13 |
Когда модели называют среднюю длину предложения, она пишет предложения такой длины каждый раз. Автор же чередует фразы из пяти слов и из тридцати. Разброс и есть его ритм, а цифра в инструкции этот ритм убивает.
Потом модель пробовали направлять измерениями ещё четырьмя способами, и каждый сделал текст хуже. Нагляднее всего это вышло со словарём. Модели дали список слов, которые Автор А использует намного чаще других авторов [7]. Слово «короче» встретилось в выборке автора один раз, а в переписанных текстах одиннадцать раз. Слова «чисто» у автора не было ни разу, а у модели оно встретилось шесть раз. На потоке текстов одна и та же инструкция быстро превращается в набор повторяющихся приёмов.
Важная оговорка. По метрикам промпт с числами шёл вперёд, но при чтении тексты оставались машинными. Прямая проверка связи метрики с оценкой читателя не нашла. На 74 текстах, оценённых вручную, коэффициент Спирмена между оценкой и расстоянием до профиля составил −0,037. Этот коэффициент показывает, совпадает ли порядок текстов по двум оценкам, и значение около нуля означает, что связи не видно.
Вывод
Цифры в инструкции не передают манеру. Модель попадает в среднее и теряет разброс, а словарь автора превращает в навязчивые повторы.
3.3. Тире как привычка модели
Вопрос. Оставляет ли промпт след, который инструкцией не убрать? Как ставили. Посчитали долю текстов с тире у автора, у текста без голоса, у промпта и у адаптера на двух наборах по 60 абзацев. Первый набор состоит из чужих абзацев, Автора В, переписанных под Автора А. Второй состоит из абзацев самого Автора А, которых адаптер не видел при обучении.
- Чужие абзацы
- Свои абзацы автора
Живой текст, текст без голоса и адаптер пересчитаны по сохранённым выходам моделей. Значения промпта взяты из лабораторного журнала. В строке живого текста для чужих абзацев стоит их автор, Автор В.
Результат. У промпта тире стоит в 98% и 97% текстов, у живых авторов в 53% и 48%. Это привычка самой модели, и инструкция её не убрала. На своих абзацах автора адаптер близок к живому тексту, 43%. На чужих он ставит тире чаще, в 80% текстов, и это честный минус адаптера.
Сначала тире считали иначе, как среднее число на сто слов, и по этому числу выходило, что модель тире не злоупотребляет. Среднее прятало картину, потому что текст с двумя тире уравновешивал текст без тире. Доля текстов с тире показала то, что было видно при чтении.
Вывод
У модели есть привычки, которые инструкция не отменяет. А видны ли они, зависит от того, как устроена метрика.
3.4. Адаптер против промпта
Вопрос. Передаёт ли обученный адаптер манеру лучше промпта? Как ставили. Взяли те же два набора по 60 абзацев. Адаптер ранга 8 и промпт с примерами переписывали тексты без голоса. Каждую пару вариантов сравнивали по расстоянию до профиля и по классификатору с бутстрэп-интервалами.
| Сравнение | Чужие абзацы | Свои абзацы автора |
|---|---|---|
| Промпт и текст без голоса | есть разница | разницы не видно |
| Адаптер и текст без голоса | есть разница | есть разница |
| Промпт и адаптер | разницы не видно | адаптер лучше |
| Адаптер и живой текст автора | не с чем сравнить | разницы не видно |
Результат. На своих абзацах автора промпт статистически ничего не изменил, а выход адаптера нельзя отличить от того, что автор написал на самом деле. Но на этом наборе адаптеру проще. Соседние абзацы тех же текстов были в обучении, так что часть результата может быть памятью, а не манерой.
На чужих абзацах промпт и адаптер по метрике одинаковы. Это главный неудобный результат отчёта. Разницу, которую видно при чтении, метрика здесь не поймала. При чтении у промпта были видны привычки модели и более ровный, плоский текст, а у адаптера живая речь, как во введении.
Вывод
По цифрам адаптер выигрывает только на родном материале. На чужом цифры способы не различают, а чтение различает.
3.5. Сколько текста нужно адаптеру
Вопрос. Сколько абзацев автора нужно, чтобы адаптер заработал? Как ставили. Четыре адаптера обучили на 500, 400, 300 и 200 абзацах одного автора и сравнили в одной и той же точке обучения.
- Адаптер
- Ориентир
Записи экспериментов.
| Абзацев | Что видно при чтении |
|---|---|
| 500 | Текст чистый. |
| 400 | Текст чистый. |
| 300 | Начинает ломаться порядок слов. |
| 200 | Появляются несуществующие слова. В одном выходе глагол заменён на другой, и смысл предложения изменился. |
Результат. На 400 абзацах текст ещё чистый, на 300 уже нет. С запасом нижней границей для нового автора приняли 500 абзацев. Больше 500 в этом опыте не проверяли, поэтому неизвестно, помогает ли больше текста. Возможно, потолок задаёт ранг или сама базовая модель.
Вывод
Адаптеру нужно несколько сотен абзацев автора. Границу нашло чтение, а не метрика.
3.6. Где остановить обучение
Вопрос. Какое из сохранённых состояний адаптера лучше? Как ставили. Адаптер Автора А ранга 8 обучили заново и сохранили семь состояний, от 100 до 1300 шагов. Каждое состояние переписало те же 60 абзацев автора.
- Адаптер, ранг 8
- Ориентир
Пересчитано по выходам семи состояний адаптера, совпадает с лабораторным журналом.
Результат. Расстояние до профиля не различило ни одной пары состояний. Все интервалы захватывают ноль, даже между шагом 100 и шагом 1300 и между любым шагом и самим автором. Выбирать по такому шуму состояние адаптера нельзя.
Доля новых слов растёт ровно, и стремиться к нулю ей не нужно. У самого автора она равна 0,397, настолько живая речь отходит от ровного пересказа той же мысли. Ранние состояния вдвое осторожнее автора.
Чтение по абзацам дало картину, которой нет на графике. Шаг 100 самый надёжный по фактам и самый бедный по голосу. Шаг 700 лучше всех по манере примерно в половине примеров, но ломается на самых коротких. Шаг 1300 теряет числа и выдумывает несуществующие слова. Выбрали шаг 700, это около двух эпох.
Потом правило «останавливаться около двух эпох» проверили на Авторе В, записав предсказание до обучения. Оно не сбылось. При слепом чтении состояние на двух эпохах проигрывало в каждом абзаце, а лучшими оказались шаги 200 и 300, около одной эпохи. Момент остановки зависит от автора, и выбирает его человек, читая тексты, один раз при подключении автора.
Вывод
Метрика не выбирает момент остановки. Его выбирает чтение, и для каждого автора этот момент свой.
3.7. Ранг и потери
Вопрос. Станет ли адаптер лучше, если дать ему больше ручек? Как ставили. Обучили адаптеры рангов 8, 16 и 32 на тех же парах Автора А и сравнили потери на проверке и оценку классификатора.
- Потери
- Свои абзацы автора
- Чужие абзацы
Потери по лабораторному журналу. Вероятности пересчитаны по выходам адаптеров. Для рангов 8 и 32 они совпадают с журналом, ранг 16 посчитан заново.
Результат. Потери показывают, насколько хорошо модель угадывает следующее слово автора. У ранга 32 они вдвое ниже, чем у ранга 8, но классификатор оценил его ниже на обоих наборах. Значимого выигрыша по расстоянию до профиля тоже нет, а при чтении у ранга 32 видны ошибки в согласовании времён. Ранг 16 на своих абзацах автора оценён выше всех, но на чужих хуже ранга 8, так что и он не победитель.
Вывод
Если модель хорошо угадывает слова автора, текст от этого живым не становится. Поэтому оставили ранг 8.
3.8. Большая модель в роли читателя
Вопрос. Можно ли поручить чтение большой модели, чтобы не читать самим? Как ставили. Модели давали как образец десять настоящих абзацев автора и два выхода разных состояний адаптера Автора В. Она выбирала, какой из них больше похож на автора. Всего было 180 сравнений, каждое состояние участвовало в 120 из них.
| Шаг | Побед у модели | Доля | Чтение человека |
|---|---|---|---|
| 200 | 65 из 120 | 54% | годится |
| 300 | 49 из 120 | 41% | годится |
| 500 | 66 из 120 | 55% | отвергнут в каждом абзаце |
Результат. Модель разошлась с человеком. Отвергнутое состояние набрало у неё не меньше побед, чем годные. Тогда задачу упростили. Модели показывали абзац автора и выход адаптера и просили найти машинный текст. Для контроля дали заведомо лёгкий случай, текст без голоса, и даже его модель нашла лишь в 63% случаев. Рабочий инструмент находил бы его почти всегда.
Вероятное объяснение такое. Модель, которая не умеет писать голосом автора, не начинает слышать этот голос, когда её просят оценить текст. Чтобы выбрать адаптер, нужно ровно то знание, ради которого его обучали.
Вывод
Большая модель не заменяет читателя в вопросах манеры. Выбор состояния адаптера остаётся за человеком.
3.9. Ошибки адаптера и температура
Вопрос. Насколько чисто пишет адаптер и можно ли сделать его смелее? Как ставили. Модель выбирает следующее слово с долей случайности, и эту долю задаёт температура. При нуле модель всегда берёт самое вероятное слово, а при высокой температуре чаще берёт и менее вероятные. Для опыта взяли два текста Автора Б, которых адаптер не видел. Для каждого абзаца получили несколько черновиков при температуре 0,3, 0,5 и 0,7 и сравнили их по словам с настоящим текстом автора и с текстом на входе.
- С настоящим текстом автора
- С текстом на входе
Записи опыта с температурой, два текста Автора Б, по нескольку черновиков на абзац. Сходство считали по совпадению слов.
Результат. При 0,5 черновики начали зацикливаться, повторять фразу и обрываться, а в готовом тексте стало больше ошибок, три против одной на 16 абзацев. Поэтому температуру оставили низкой. Её подобрали опытом, а не вывели из теории.
Важнее другое. Черновики грязные при любой температуре, и даже при самой низкой из проверенных ошибка была в большинстве из них. Вот как это выглядит на деле. Ниже абзац из той же диктовки, который подали на вход, и два черновика адаптера Автора А.
Зачастую у них даже получается. Вначале вайбкодинг даёт лёгкий дофаминовый восторг, но добавление новой фичи оборачивается падением проекта и финансовыми убытками клиентов. Проблемы начинаются, когда в готовый сервис нужно добавить новый функционал так, чтобы существующий проект гарантированно не сломался.
И часто у них даже получается. Вначале вайбкодинг дает легкий дофаминовый заряд, а дальше… дальше начинается падение проекта. Падение клиентов. Падение денег. Падение мозгов. Падение в архетипичное ловец-ловим, когда ты пытаешься прикрутить что-то новое к готовому продукту так, чтобы он не сломался.
И часто у них даже получается. Вначале вайбкодинг дает пушечный дип, а дальше… дальше начинается пошлепывание проекта и пошлепывание кошельков клиентов.
В черновиках есть жизнь: пауза с многоточием, нагнетание повтором, разговорное «прикрутить». Но есть и бессмыслица вроде «падение в архетипичное ловец-ловим», и выдуманные слова вроде «пушечный дип». К падению проекта добавилось «падение мозгов», которого во входе нет. В другом абзаце той же диктовки черновик начинался с фразы «я немного устарел с терминологией». Во входе этого не было, адаптер приписал автору чужую мысль.
Вывод
Адаптер даёт живость, но не связность. Температурой его аккуратнее не сделать, нужна отдельная починка.
4. Обсуждение
4.1. Почему промпт не передаёт голос
Опыты показали три причины. Во-первых, описание манеры модель превращает в карикатуру, а цифры в среднее без разброса. В обоих случаях исчезает то, что делает автора живым, его неровность. Во-вторых, у модели есть собственные привычки. Их видно по тире в 97–98% текстов, и инструкция их не снимает. В-третьих, дело в масштабе. Одна и та же инструкция на потоке текстов повторяет одни и те же приёмы. Отдельный абзац может выглядеть удачно, но десятый подряд уже выдаёт шаблон.
Похожее видно и в других работах. В работе [5] обученная модель, которая переписывает ответ под пользователя, заметно обошла подход, при котором история пользователя просто вставляется в промпт. В работах [3] и [4] описаны перенос манеры автора обучением, сделанный ещё до больших моделей, и наборы задач для такой персонализации.
4.2. Почему адаптер ломает связность
Адаптер учили одному делу, писать по тексту без голоса абзац так, как написал бы автор. Беречь смысл его отдельно не учили, и ошибку при обучении считали только по сходству с авторским текстом. Отсюда вероятное объяснение, хотя отдельным опытом его не проверяли. Чем сильнее адаптер тянет текст к манере, тем смелее отходит от входа, а вместе со смелостью растут и выдумки. Это согласуется с разделом 3.6, где доля новых слов росла с каждым шагом, а поздние состояния начали терять числа.
Важно отличать ошибки от манеры. Потерянные числа, выдуманные факты и сбитое согласование считаются ошибками. А неровная грамматика часто ошибкой не является. Это манера автора, ради которой адаптер и обучали, и если её «исправить», пропадёт то, что делает текст живым. Поэтому починка после адаптера должна возвращать смысл и согласование, а манеру не трогать.
Есть и то, чего адаптер не переносит вовсе. Он не меняет границы предложений, которые получил на входе. В сравнении на одной статье разброс длины предложений у автора оказался вдвое больше, чем у выхода адаптера, а у входа и выхода он совпал. Поэтому ритм приходится задавать отдельно, сам адаптер его не создаст.
4.3. Что добавляет конвейер
Из этого вырос рабочий конвейер Redraft. Адаптер в нём только один из шагов. Он пишет несколько живых черновиков, а шаги после него возвращают смысл исходника и проверяют результат. Каждый шаг делает одно изменение, которое умеет делать надёжно, и не трогает остальное.
Схема упрощена, на ней показаны только основные шаги.
Главный из этих шагов называется сборкой по трафаретам. Черновики адаптера не идут в текст напрямую. В них слова со смыслом заменяют названием части речи, например «[СУЩ]» или «[ГЛАГ]». Остаётся трафарет манеры, то есть союзы, частицы, порядок слов и ритм. Похожий приём применяют в анализе авторства, чтобы отделить манеру от темы [6]. Потом абзац пишут заново поверх трафаретов, а факты берут из исходника. Так сломанный черновик отдаёт свою манеру, но не свои ошибки.
После сборки текст ещё раз сверяют с исходником. Правки на этом этапе точечные, чтобы поверх манеры автора не вернулась манера модели.
Вот как это выглядело в опыте, где подбирали способ сборки. Исходный абзац взят из той же диктовки, черновик написал адаптер, а трафарет и готовый абзац построил конвейер.
Абзац диктовки
Зачастую у них даже получается, вначале есть такой эффект от вайбкодинга, что он дает дофамин. Но проблемы начинаются тогда, когда ты уже сделал приложение, и тебе нужно добавить новый функционал так, чтобы твой существующий проект гарантированно не упал.
Трафарет черновика адаптера
Ичастоунихэтодажеглагол.Сперваунихприлагательноесуществительное—существительное,всёглагол.Апотом,когдатыужеглаголсуществительное,итебенужночто-тоглагол,чтобынеглаголприлагательноежесуществительное.
Абзац, собранный по трафаретам
И часто у них это даже получается. Сначала от вайбкодинга сплошной дофамин, всё идет легко. А проблемы начинаются тогда, когда ты уже сделал приложение, и тебе нужно добавить новый функционал, чтобы гарантированно не упал существующий проект.
Запись опыта по сборке абзаца из черновиков адаптера, второй абзац диктовки. Показаны первые предложения исходного абзаца, трафарета одного из черновиков и готового абзаца. Трафарет такой, каким его построил конвейер.
Вот что сборка по трафаретам сделала с абзацем из раздела 3.9. Это текст сразу после сборки, до проверки.
И зачастую у них даже получается. Вначале вайбкодинг даёт лёгкий дофаминовый заряд, а дальше… дальше грозит падение проекта и потеря денег у клиентов при сбое. Потому что загвоздка в том, что ты должен прикрутить новый функционал к готовому сервису так, чтобы проект гарантированно не упал.
Многоточие и разговорное «прикрутить» остались от черновиков. «Падение мозгов» и «пушечный дип» в текст не попали. Убытки клиентов вернулись из исходника.
| Голос | Черновики статьи с ошибкой | Черновики диктовки с ошибкой | Готовые абзацы с ошибкой |
|---|---|---|---|
| Автор А | 75% | 80% | 1 из 8 |
| Автор Б | 90% | 75% | 0 из 8 |
Вывод
Адаптер нужен ради живости, а всё остальное нужно, чтобы эта живость не стоила смысла. По отдельности ни один шаг результата не даёт.
5. Ограничения
- Сравнения рангов, состояний и промпта с адаптером сделаны на одном авторе. Обобщать их на других авторов пока нельзя. Правило остановки уже на втором авторе оказалось другим.
- Тексты оценивал один читатель, часть чтений шла вслепую. Проверки независимыми читателями пока не было.
- Расстояние до профиля отделяет обработанный текст от необработанного, но внутри обработанных не различает ничего: ни состояния, ни ранги, ни объёмы данных. Поэтому оно годится только для проверки, что конвейер вообще сработал.
- Классификатор учили на одном авторе, поэтому абсолютная вероятность «живой текст» завышена. Сравнивать по ней способы между собой можно, а читать её как долю людей нельзя.
- Выборки небольшие, 59–60 абзацев, и чтобы отличить способы друг от друга, их часто не хватало.
- Текст без голоса в опытах ровнее, чем черновики, которые приходят в Redraft на деле. На реальных черновиках результаты могут отличаться.
6. Выводы
- Инструкция с примерами не передаёт манеру автора. Она даёт карикатуру или среднее без разброса и оставляет привычки модели.
- В этих опытах адаптер ранга 8 на плотной базовой модели передавал манеру, если был обучен на нескольких сотнях абзацев автора.
- Метрики полезны, чтобы найти поломку, но выбирать по ним не стоит. Объём данных, момент остановки и ранг выбраны чтением.
- Адаптер ломает смысл и согласование. В проверенных опытах ни температура, ни выбор состояния этого не исправили.
- Рабочий результат даёт конвейер, где адаптер отвечает за манеру, а остальные шаги за смысл.
7. Данные
Корпуса авторов, обученные адаптеры и рабочие записи не публикуются. Каждая цифра отчёта опирается на одну из этих записей.
- Лабораторный журнал, по записи на каждый опыт, включая неудачные. На него ссылаются подписи к рисункам и таблицам.
- Записи о случаях, когда метрика ошиблась, и о границе в 500 абзацев.
- Ряды для графиков этого отчёта пересчитаны отдельной программой по сохранённым выходам моделей, без новых обращений к моделям. Остальные цифры взяты из записей, у каждой указан источник.
Литература
- [1]Hu E. J., Shen Y., Wallis P., Allen-Zhu Z., Li Y., Wang S., Wang L., Chen W. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685, ICLR 2022. arxiv.org/abs/2106.09685
- [2]Chakravorty A. (2026). Small Is Enough: Per-User Style Rewriting of AI-Edited Text via LoRA Adapters. arXiv:2607.29238. arxiv.org/abs/2607.29238
- [3]Syed B., Verma G., Srinivasan B. V., Natarajan A., Varma V. (2020). Adapting Language Models for Non-Parallel Author-Stylized Rewriting. AAAI 2020, arXiv:1909.09962. arxiv.org/abs/1909.09962
- [4]Salemi A., Mysore S., Bendersky M., Zamani H. (2024). LaMP: When Large Language Models Meet Personalization. ACL 2024, arXiv:2304.11406. arxiv.org/abs/2304.11406
- [5]Hao T., Tan X., Shi S., Xu Y., Qiu X. (2025). Reflective Personalization Optimization: A Post-hoc Rewriting Framework for Black-Box Large Language Models. arXiv:2511.05286. arxiv.org/abs/2511.05286
- [6]Halvani O., Graner L. (2021). POSNoise: An Effective Countermeasure Against Topic Biases in Authorship Analysis. ARES 2021, arXiv:2005.06605. arxiv.org/abs/2005.06605
- [7]Monroe B. L., Colaresi M. P., Quinn K. M. (2008). Fightin' Words: Lexical Feature Selection and Evaluation for Identifying the Content of Political Conflict. Political Analysis 16(4). doi.org/10.1093/pan/mpn018
- [8]Efron B. (1979). Bootstrap Methods: Another Look at the Jackknife. The Annals of Statistics 7(1). doi.org/10.1214/aos/1176344552
Как устроен Redraft целиком, рассказано на странице «Как работает Redraft».