Обновить

Anthropic со 2 августа 2026 года начала внедрять маркировку контента, созданного Claude....

Охват и читатели5.6K
Всего голосов 3: ↑3 и ↓0+5
Комментарии3

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

Нововведение связано с требованиями европейского закона об ИИ: для новых моделей, запускаемых в ЕС после 2 августа 2026 года, должна быть предусмотрена маркировка AI-контента.

Вариант, как можно вычистить маркировку контента

Я так понимаю, это рекомендации по обходу законодательства?

В статье очень мало пояснения как это работает
Самый простой вариант добавить водяной знак — вставить в строку символы Unicode, которые существуют в строке, но визуально не отображаются.

Например Привет мир
А реально в памяти может храниться: "При\u200Bвет мир"
где \u200B — ZERO WIDTH SPACE, пробел нулевой ширины.
Из этого уже можно сделать настоящий простейший watermark. Например, договориться:

\u200B = 0 \u200C = 1

И спрятать между буквами последовательность: 10110010…

а внутри строки условно находится: « Э\u200Cт\u200Bо\u200C ...»

Есть более интересный способ — статистический watermark. Там вообще не добавляются скрытые символы. Модель во время генерации слегка предпочитает определённые допустимые варианты слов. Например, условно:

бит 0 → "однако"

бит 1 → "тем не менее"

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

В статье смешаны две технологии.

C2PA прежде всего хранит криптографически подписанный манифест происхождения контента: кем/чем создан файл, какие операции выполнялись и т. д. Манифест криптографически привязывается к самому контенту.

То есть для файла условно может быть: document.pdf [ содержимое(Текст) + C2PA Manifest ]

Если просто скопировать абзац из PDF в Блокнот, сам C2PA-манифест вместе с этим текстом автоматически не переедет.

Для борьбы с этим C2PA предусматривает так называемые soft bindings: например, fingerprint или невидимый watermark, который остаётся непосредственно в самом контенте и позволяет потом найти соответствующий C2PA-манифест в хранилище. При этом C2PA не предписывает один конкретный алгоритм watermarking.

Claude генерирует текст,в текст внедряется скрытый ID например 7F3A92D1. Создаётся C2PA Manifest ID 7F3A92D1 Manifest(Контент создан AI …) После копирования сайт → Word → Telegram → другой сайт если watermark сохранился, детектор вытаскивает: 7F3A92D1 и спрашивает хранилище: 7F3A92D1 → чей это Content

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

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

Причём обучать модель с нуля совершенно необязательно. Для русского текста разумнее взять небольшую открытую instruct-модель примерно 3–8B параметров и использовать либо обычный prompt, либо LoRA/QLoRA на парах: машинный/сырой вариант → качественно отредактированный вариант

С кодом ситуация заметно отличается от обычного текста.

Если Claude генерирует C#, Python, JavaScript и т. п., то устойчивый статистический watermark сделать гораздо сложнее. У кода намного меньше свободы выбора: синтаксис языка, API, типы, имена методов и алгоритм сильно ограничивают возможные токены. Например, в C# конструкция

if (value == null)

    return;

не даёт модели такой же свободы перефразирования, как обычный абзац текста.

Поэтому я бы разделял возможные механизмы на три уровня.

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

Во-вторых, теоретически возможен статистический отпечаток стиля кода. Например, модель чаще выбирает:

if (value is null)

вместо

if (value == null)

или предпочитает определённые варианты:

var result = ...

против

SomeType result = ...

То же касается расположения return, LINQ, имен временных переменных, формы циклов и т. д. На большом объёме кода можно получить статистический сигнал. Но он намного менее надёжен: форматтеры, IDE, ReSharper/Rider, линтеры и обычный рефакторинг постоянно изменяют такие характеристики.

В-третьих, существует гораздо более реалистичная вещь — server-side fingerprint. Claude мог сгенерировать:

generation #123456 нормализованный AST fingerprint база

И тогда проверять можно уже не буквальный текст программы, а её структуру.

Например, эти два фрагмента:

int Sum(int a, int b)

{

    return a + b;

}

и

int Add(int x, int y)

{

    var result = x + y;

    return result;

}

текстуально отличаются, но на уровне абстрактного синтаксического дерева и семантики очень близки.

Если твой вопрос практический — что делать с кодом Claude в обычной разработке, — я бы не занимался попытками специально «стереть происхождение». Гораздо полезнее обращаться с ним как с кодом стороннего разработчика:

  1. полученный код

  2.  понял алгоритм

  3.  провел code review

  4.  сделал рефакторинг под архитектуру проекта

  5.  выполнил тесты

  6. В прод

После нормальной разработки код и так постепенно перестаёт быть дословным выводом модели: меняются интерфейсы, имена, обработка ошибок, зависимости, тесты, логирование, архитектура. Это естественный инженерный процесс, а не специальная обработка watermark.

 

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

Публикации