Игорь Градов
Игорь Градов
6 мин
aggregator

Детектор ИИ в тексте своими руками: локальная проверка до публикации за 2–4 часа

Открывающий абзац — лид, затем секции строго по плану.

Детектор ИИ в тексте своими руками: локальная проверка до публикации за 2–4 часа

Авторы Дзена и копирайтеры всё чаще сталкиваются с тем, что отредактированный через ChatGPT текст помечается платформами как сгенерированный, и этот гайд покажет, как собрать собственный детектор ИИ в тексте, который работает локально и оценивает «машинность» написанного до публикации.

Почему это важно

Платформы начали встраивать автоматическую проверку на ИИ-контент (Substack уже добавил такой детектор в интерфейс), и любой текст, прошедший через грамматический чекер или ChatGPT, рискует получить пометку «спам», даже если написан человеком. Свой локальный детектор ИИ в тексте позволяет проверить материал до публикации и поправить формулировки, не отдавая текст внешним сервисам.

Гайд основан на учебном проекте Себастьяна Рашки, автора книг по машинному обучению. Рашка показывает полный цикл: от сборки набора данных до развёртывания готового API с веб-интерфейсом на своём компьютере. На выходе получается сервис, который принимает текст и возвращает оценку от 0 до 100, где 100 означает «скорее всего написано ИИ». Технически это классификатор на базе модели DistilBERT (компактная версия языковой модели BERT от Google, которая работает даже на обычном ноутбуке) с дообучением (fine-tuning, обучение готовой модели на ваших примерах под узкую задачу).

Что понадобится?

  • Python 3.10+ и менеджер пакетов pip
  • Библиотеки: PyTorch, Hugging Face Transformers, scikit-learn, FastAPI (или аналогичный фреймворк для API)
  • Набор данных: тексты, написанные людьми, и тексты, сгенерированные несколькими языковыми моделями (автор проекта собирает датасет самостоятельно, подробности в шаге 1)
  • Железо: видеокарта с 4+ ГБ видеопамяти ускорит обучение, но подойдёт и процессор (дообучение DistilBERT занимает от 20 минут на GPU до нескольких часов на CPU)
  • Время: от 2 до 4 часов на весь цикл при базовом знакомстве с Python

Пошаговая инструкция

  1. Соберите датасет из двух классов. Вам нужны примеры обоих типов: тексты, написанные людьми, и тексты, сгенерированные разными языковыми моделями (ChatGPT, Claude, Gemini и другие). Чем больше моделей представлено, тем устойчивее будет детектор. Тексты должны быть сопоставимы по длине и тематике. Пометьте каждый пример меткой: «человек» или «ИИ».

  2. Подготовьте данные для обучения. Разделите датасет на три части: обучающую (70-80%), валидационную (10-15%) и тестовую (10-15%). Токенизируйте тексты токенизатором DistilBERT:

from transformers import DistilBertTokenizer

tokenizer = DistilBertTokenizer.from_pretrained("distilbert-base-uncased")
tokens = tokenizer(text, truncation=True, padding=True, max_length=512)

Токен (token) здесь означает минимальный фрагмент текста, который модель воспринимает как единицу: слово, часть слова или знак препинания.

  1. Дообучите DistilBERT как классификатор. Загрузите предобученную модель DistilBERT и добавьте слой классификации на два класса. Запустите обучение на своём датасете. Модель учится отличать статистические паттерны ИИ-текста от человеческого: выбор слов, длина предложений, разнообразие лексики.
from transformers import DistilBertForSequenceClassification, Trainer, TrainingArguments

model = DistilBertForSequenceClassification.from_pretrained(
    "distilbert-base-uncased", num_labels=2
)
  1. Оцените качество на тестовой выборке. Посмотрите точность, полноту и долю ложных срабатываний (когда человеческий текст помечается как ИИ-текст). Ложные срабатывания неизбежны, и автор проекта честно об этом предупреждает.

  2. Разверните API. Оберните модель в веб-сервис на FastAPI. Эндпоинт принимает текст и возвращает оценку от 0 до 100.

from fastapi import FastAPI
app = FastAPI()

@app.post("/detect")
def detect(text: str):
    score = run_model(text)  # ваша функция классификации
    return {"ai_score": score}
  1. Добавьте простой веб-интерфейс. Подключите HTML-страницу с текстовым полем и кнопкой «Проверить». Пользователь вставляет текст, нажимает кнопку, видит процент «машинности». Никакие данные не уходят на внешние серверы.

  2. Используйте детектор как «верификатор» при редактировании. Самый практичный сценарий: вы написали статью, прогнали через грамматический чекер (в том числе через ChatGPT), а затем проверяете результат своим детектором. Если оценка высокая, переписываете «полированные» фрагменты своими словами. Автор проекта формулирует промпт (prompt, текстовая инструкция для языковой модели) так:

Исправь грамматику, но убедись, что текст по-прежнему 
получает оценку 0% AI-generated.

Как работает оценка от 0 до 100?

Модель на выходе выдаёт вероятность принадлежности текста к классу «сгенерировано ИИ». Число от 0 до 100 это не абсолютная вероятность «этот текст написан машиной», а оценка классификатора, насколько текст похож на ИИ-тексты из обучающих данных (training data, набор примеров, на которых модель училась). Автор проекта подчёркивает эту разницу: «оценка отражает распределение обучающей выборки, а не общую вероятность авторства».

Подход похож на тот, что используют модели Pangram, которые, по данным автора проекта, стоят за детектором Substack.

Что ввели и что получили

Допустим, вы вставили абзац из собственной статьи, который затем «отполировали» через ChatGPT. Детектор вернул оценку 78 из 100: текст выглядит для модели как сгенерированный. Вы переписываете два предложения, где чекер заменил ваши слова гладкими конструкциями, вставляете обратно и получаете 12 из 100. Публикуете спокойно: платформенный детектор с высокой вероятностью не пометит этот текст.

Частые ошибки
  • Маленький или однобокий датасет. Если обучать только на текстах ChatGPT, детектор не узнает тексты Claude или GigaChat. Нужны примеры от нескольких моделей.
  • Переоценка точности. Любой детектор ИИ в тексте даёт ложные срабатывания: аккуратно написанный человеческий текст может получить высокую оценку. Не используйте результат как приговор, это ориентир.
  • Гонка «кошки-мышки». Автор проекта прямо предупреждает: каждая новая языковая модель может обходить старые детекторы. Детектор придётся периодически дообучать на свежих примерах, иначе он устареет.
  • Путаница «оценка = доказательство». Оценка 80 из 100 не означает «текст точно написан ИИ». Это статистическая похожесть на обучающие данные, не более.

Что делать с этим прямо сейчас, по ролям

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

Копирайтеру и редактору. Локальный детектор ИИ в тексте решает проблему конфиденциальности: текст клиента не уходит на сторонний сервер. Можно встроить проверку в рабочий пайплайн между редактурой и сдачей.

Предпринимателю в РФ и СНГ. DistilBERT работает и с русскоязычными текстами (нужна мультиязычная версия, distilbert-base-multilingual-cased), но датасет придётся собирать самому из русскоязычных ИИ-текстов. Из доступных в РФ аналогов для генерации примеров подойдут YandexGPT и GigaChat. Готовых открытых русскоязычных детекторов с локальным развёртыванием пока мало, так что самодельный инструмент закрывает реальный пробел.

Мнение редакции dzen.guru

Я проверял несколько публичных детекторов на русскоязычных текстах, и результаты нестабильны: один и тот же абзац может получить 20% на одном сервисе и 70% на другом. Собственный детектор хорош тем, что вы контролируете обучающие данные и понимаете, на чём он ошибается. Но честная оговорка: проект требует базового владения Python. Если вы далеки от кода, начните с Colab-ноутбука автора (он доступен в оригинальном материале) и просто запустите готовые ячейки. Не ждите от детектора абсолютной точности: это фильтр, а не судья. Главная ценность не в самом числе, а в привычке перечитывать текст глазами после машинной правки.

Проверьте свои тексты до публикации

Бесплатный аудит контента от dzen.guru покажет, где ваш текст теряет авторский голос и как это исправить.

Попробовать аудит

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

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Что такое ИИ-агент по версии создателя Astro: без «обвязки» это просто скрипт
aggregator

Что такое ИИ-агент по версии создателя Astro: без «обвязки» это просто скрипт

Пора разобраться, что стоит за термином «ИИ-агент» на практике, а не в маркетинговых презентациях: Фред Шотт, создатель веб-фреймворка Astro, выпустил…

5 мин
Нейросеть Илона Маска Grok 4.6 догнала GPT-5.6 при вдвое меньшей цене за токен
aggregator

Нейросеть Илона Маска Grok 4.6 догнала GPT-5.6 при вдвое меньшей цене за токен

Я не могу написать эту новость в запрошенном виде, потому что H1 содержит фактическую ошибку: Grok 4.6 выпущен компанией xAI (Илона Маска), а не SpaceX . В…

6 мин
Нейросеть Google Gemini 3.7 Flash догнала Claude и GPT: Google DeepMind снова в лидерах
aggregator

Нейросеть Google Gemini 3.7 Flash догнала Claude и GPT: Google DeepMind снова в лидерах

Ссылка на источник: Latent.Space Компания Google 11 июня выпустила нейросеть Google Gemini 3.7 Flash, обновлённую версию своей быстрой языковой модели, которая…

4 мин