Обновить

Как я вычищал ИИ‑маркеры из текстов Claude: промпт, второй проход и регулярка

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.4K
Всего голосов 8: ↑4 и ↓4+2
Комментарии5

Комментарии 5

Никаких длинных тире (—). Никаких антитез «это не X, это Y» / «не X, а Y» / «дело не в X, а в Y» / «X, а не Y». Это два главных ИИ-маркера.

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

Так же советую разбить процесс на 4 этапа:

  1. Детерминированный слой: тире, двойные дефисы, нормализация пробелов.

  2. Детектор: паттерны с весами плюс метрики, выдаёт список попаданий с позициями. (Не блокировать сразу если есть конструкции по типу не X, а Y, а собирать веса, насколько это ai текст)

  3. Если счёт ниже порога, второй проход не вызывается совсем (экономия в большинстве случаев).

  4. Если выше, в LLM уходят только предложения с попаданиями (плюс соседнее для контекста), и результат подставляется обратно по позициям. Заголовки, эмодзи и разделители при этом не затрагиваются, потому что вы их вообще не отправляли.

Потому что всегда отправлять второй проход очень дорого и рискованно. Это +1 вызов, +2-10 секунд, расход токенов на весь объём и риск дрейфа: модель может тихо поменять структуру или вставить новые штампы.

Так же советую рассмотреть библиотечку pymorphy3, чтобы быстро искать разные клише по леммам, плотность причастных оборотов и однообразие предложений.

Обязательно поработайте над негативными инструкциями. Это как говорить человеку, не думай о том что видишь нос или что каждые 5 секунд ты делаешь вдох и потом выдох, вроде попросил не думать о корове, но после этого человек не может думать ни о чём крове коровы)

LLM на протяжении всего размышления и генерации держит в голове этот паттерн и шанс того, что она его куда-нибудь случайно пропихнёт растёт

О каком вычищении ИИ-маркеров может идти речь, если вы не смогли вычистить до конца даже эту статью? У вас блоки ИИ-слопа просто перемешаны с авторским текстом.

Есть определенные маркеры монотонности, которые кодом не вычистить, т. к. нужно менять весь абзац.

А не проще ли немного перевернуть сам пайплайн? У вас на входе уже есть расшифровка живой человеческой речи. Возможно, стоит сохранять её как основу, а модели поручить только монтаж: убрать лишние повторы, восстановить пунктуацию, собрать структуру и ничего не сочинять сверх исходника.

Сейчас получается, что Claude сначала полностью переписывает человеческую речь своим языком, а затем второй проход и регулярки пытаются оттереть с результата следы Claude. Чем меньше текста модель придумывает сама, тем меньше ИИ-маркеров потом придётся вычищать.

Небольшая ремарка: проблема нейрослопа вовсе не в длинных тире )

Нейростатьи на данном этапе развития скорее всего особо "очеловечить" не получится. Чтоб было интересно читать - чистовик лучше писать человеку, искать свои фоирменные фишки. Но ради исследовательского интереса можно попробовать )

Что бы я сделал:

  • Комбинировать разные модели разных провайдеров. Некоторые лучше делают одно, некоторые другое. Когда речь идет именно о генерации текстов - надо начинать с "соревнования" моделей. Сделать универсальную обертку, либо подключить провайдера вроде openrouter.

  • В целом "разделение труда" - скорее правильный подход. Модели плохо работают по принципу "сделай всё сразу круто и побыстрее". Либо используем react паттерн и заставляем переделывать и проверять пока не будет круто (но можно разориться на токенах". Либо одной моделью делаем, другой исправляем. Для исправления я б не использовал соннет. Это примерно как пытаться убрать упавшую бумажку роботом пылесосом с помощью голосовых команд вправо-влево. Можно, но зачем? Тут скорее простая тупая модель с единственной инструкцией: исправляй это на то.

  • Если уж использовать поиск слов кодом - хотя бы использовать библиотеки вроде pymorphy, которые приводят слова к одной форме: тот - той - того. Ну и не хардкодить, а сделать метод поиска стоп-слов по списку

  • Вообще для таких задач эффективней обучить что-то bert подобное. Но это уже что-то на сложном )

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации