Все статьи

AI написал как РИА Новости. А мы хотели Фонтанку

Три недели назад я написала на Хабре, как мы проектировали обучение стилю: декомпозиция на аспекты, стилевой профиль, шаблоны. Красивая архитектура, схемы со стрелочками, всё как положено.

Теперь у нас есть рабочий сервис. Я загрузила статьи Фонтанки, обучила профиль и прогнала 10 рерайтов. Результат: система уверенно пишет в стиле РИА Новости. А мы хотели Фонтанку.

Это история про то, как красивая архитектура столкнулась с реальностью. С конкретными артефактами, примерами текстов и разбором, почему стилевой профиль знает длину предложений, но не знает голос.

Что пошло не так с первого раза

Загрузила 71 статью в стилевой профиль #8. Запустила рерайт-агента на 10 новостях. Открыла результаты — и полезла проверять, не перепутала ли я издание в настройках.

Тексты были грамотные, аккуратные и абсолютно мёртвые. Нейтрально-официальный тон. Пассивный залог. «По данным пресс-службы» в каждом абзаце. Классическое РИА Новости — только без логотипа.

Потом полезла в выборку и поняла, почему.

Мусор на входе — мусор на выходе

Из 71 статьи, которые пошли в обучение:

  • Рекламные материалы — 3 штуки
  • Статьи с РБК, попавшие в RSS — 2 штуки
  • Развлекательный тест по географии — 1 штука
  • Статьи с кривым markdown-форматированием — 4 штуки
  • Нерелевантные материалы — ещё несколько

Итого: примерно 15% мусора. AI сделал ровно то, что должен — усреднил всё, что увидел. А единственное, что объединяет Фонтанку, РБК, рекламу и тест по географии — это нейтральный официальный тон. Вот его и выучил.

Почистила выборку до 64 статей. Перегенерировала профиль. Получила стиль #9.

Стало чуть лучше. Но четыре гадких артефакта никуда не делись.

Четыре артефакта, каждый из которых — непубликуемый текст

Артефакт 1: чужое издание в тексте.

Рерайт про Нетребко. Фраза «с которыми ознакомилось РИА Новости» повторяется четыре раза в одном тексте. Четыре. Раза. Наш агент буквально рекламирует конкурента в тексте для Фонтанки.

Артефакт 2: робот-атрибутор.

Рерайт про кражу из ПВЗ. Каждый абзац заканчивается фразой «сообщили в пресс-службе регионального главка МВД РФ». Пять абзацев — пять одинаковых хвостов. Читается как протокол, а не как новость.

Артефакт 3: черновая справка в финальном тексте.

Рерайт про ЧП на АЗС. В конце статьи вылезает блок:

Дата события: 7 марта. Место: посёлок Металлострой. Статус: возбуждено дело.

Это внутренняя пометка агента, которая не должна была попасть в финальный текст. Но попала. Потому что агент не отличает «свои заметки» от «текста для читателя».

Артефакт 4: мета-комментарий.

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

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

Почему профиль стиля не захватывает голос

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

Голос Фонтанки — это:

  • Ирония. Не сарказм, а лёгкая питерская усмешка. «Двоих поймали прямо при погрузке» — а не «двое были задержаны сотрудниками полиции».
  • Город как персонаж. Петербург — не локация, а действующее лицо. Улицы, районы, мосты — не адреса, а декорации.
  • Лид с детали. Фонтанка начинает с конкретной ситуации, а не с «пресс-служба сообщила». Сначала картинка, потом источник.
  • Атрибуция один раз. Источник указывается в начале или в конце. Потом история течёт сама.
  • Финал с крючком. Неожиданная деталь или мягкая оценка в последнем предложении. Не сухое «расследование продолжается».

Вот конкретный пример. Наш рерайт:

По данным пресс-службы регионального главка МВД РФ, в Санкт-Петербурге задержаны двое подозреваемых в совершении серии краж из пунктов выдачи заказов...

А Фонтанка написала бы примерно так:

Двоих поймали прямо при погрузке — успели набить машину товарами из двух ПВЗ на Московском проспекте на 14,6 млн.

Тот же факт. Те же данные. Совершенно другой текст. И разница — не в длине предложений или частоте клише. Разница в том, как рассказана история.

Наш стилевой профиль это не захватывает. Он видит структуру, но не видит повествовательную манеру.

Реакция разработчика: «Считаю, что это успех»

Я отправила Серёже (наш разработчик) подробный баг-репорт. Все четыре артефакта, сравнение текстов, анализ проблемы.

Его ответ: «Считаю, что это успех».

И дальше объяснил, почему. На пустом сервисе, где ничего не настроено, система уже что-то делает, обучается и даже пишет как-то близко. Мы находимся на этапе, когда ядро работает. Архитектура — правильная. Теперь нужно тюнить.

Он выделил две конкретные проблемы:

1. У нас нет нормально описанных аспектов. Те, что есть — заглушки. Их надо разбирать, писать промпты, тестировать, что даёт эффект, а что нет. Это не разработка — это доменная экспертиза.

2. У нас нет правил-ограничений. Все артефакты, которые я описала — чужое издание, повтор атрибуции, черновая справка, мета-комментарий — это не баги архитектуры. Это отсутствие явных запретов. Система не знает, что нельзя упоминать конкурентов, нельзя повторять атрибуцию в каждом абзаце, нельзя вставлять внутренние пометки в финальный текст. Потому что никто ей этого не сказал.

Что мы собираемся делать

Три направления, все — про контент, а не про код.

Примеры в промпт. 4–5 коротких текстов Фонтанки (400–600 знаков), реальных, по ключевым темам: криминал, ЧП, городская жизнь. LLM имитирует конкретный образец точнее, чем следует абстрактным правилам.

Явные запреты. Не упоминать другие СМИ как источник. Не повторять атрибуцию в каждом абзаце. Не добавлять блоки «контекст», «справка», «дата события». Не писать мета-комментарии. Это будет отдельный слой правил (rules), который Серёжа сейчас добавляет в систему.

Описание голоса. 2–3 предложения: ироничный тон, петербургский колорит, активный залог, лид с конкретной деталью. Не заменяет аспекты, а дополняет — говорит агенту не как структурировать текст, а как его рассказать.

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

Сколько это стоило

25 генераций рерайтов + 2 генерации стилевого профиля. Потрачено ~$3 на OpenRouter. Одна генерация рерайта — примерно 20 центов, включая обучение и эмбеддинги.

Выводы, которые больно признавать

1. Архитектура без настройки — это демка, а не продукт. Можно нарисовать сколько угодно схем со стрелочками. Если аспекты стиля — заглушки, а правил нет вообще — система выдаст усреднённый текст.

2. Garbage in — garbage out работает и для стилевых профилей. 15% мусора в обучающей выборке убили весь профиль. Три рекламных статьи и тест по географии превратили Фонтанку в РИА Новости.

3. Структура ≠ голос. Длина предложений, частота пассивного залога, клише — это скелет. Голос — это мышцы. Ирония, ритм, способ начать историю, способ её закончить. Наш профиль пока видит только скелет.

4. «Это уже работает» — правильная точка отсчёта. На пустой системе без единой настройки мы получили тексты, которые хотя бы похожи на журналистские. 60% из них — терпимые. Это не провал, это baseline.


Статья написана с помощью AI-системы «Рерайт-Завод». Публикуется также на Habr.