Об этом проекте

Antiserum позиционирует себя как антивирус для обучающих данных: локальный сканер, который помечает возможный «яд» в текстовых датасетах, а также общую ленту подтвержденных сигнатур. Репозиторий и есть сам продукт. Здесь нет системы входа или хостинга для сканирования. Публичная документация размещена на GitHub Pages, но сайт лишь описывает CLI и не сканирует, не оценивает и не хостит корпуса данных. Проект направлен на решение одного вопроса пре-тренинга: безопасно ли использовать датасет для обучения? В данном контексте «безопасно» означает, что смесь не содержит скрытых триггеров, скоординированных инверсий меток, дампов дубликатов или других внедренных строк, которые могут казаться чистыми, пока модель их не запомнит. Инструмент написан на Python 3.10+ и устанавливается из PyPI командой pip install antiserum, которая предоставляет команду antiserum. Локальное сканирование не использует сеть, не требует API-ключей и не загружает датасеты. Оно может сканировать папки с файлами JSONL, CSV, JSON, обычным текстом, их gzip-сжатыми вариантами, а также локальный кэш Hugging Face или пути к загруженным датасетам. Для работы с шардами Arrow и Parquet требуется дополнительный модуль. Сканер состоит из трех уровней. Внутренний уровень (innate layer) работает на локальной машине и включает проверки на редкие n-граммы, инверсию меток, дампы почти идентичных копий, семейства парафраз (выходящие за рамки коэффициента Жаккара), всплески длины и энтропии, совпадения с лентой сигнатур, скрытые Unicode-управляющие символы и токены со смешанными скриптами. Адаптивный уровень (adaptive layer) представляет собой опубликованный рубрикатор, где человек или агент может пометить флаг как «яд», «мусор» или «ложное срабатывание». Уровень памяти (memory layer) — это локальная лента сигнатур и эталонный корпус. Выпуски пакетов с датами отслеживаются в журнале изменений, а сканирование создает квитанцию (receipt), содержащую хэш датасета, версию сканера, идентификатор пакета, флаги и подтвержденные совпадения. Документированные проверки включают: триггерные n-граммы, инверсию меток, внедрение дубликатов, избыток парафраз, статистические выбросы, совпадение сигнатур, переопределение инструкций, скрытый Unicode и смешанные скрипты. Некоторые проверки всегда требуют подтверждения человеком, в то время как другие могут иметь первичную классификацию как «мусор» или «ложное срабатывание». Пользователи могут запускать только выбранные проверки или пропускать определенные; в квитанции фиксируется, какие проверки были выполнены, чтобы пропуски оставались заметными. Поведение сканирования намеренно локально и ограничено. По умолчанию установлен лимит в 25 000 строк или 128 МиБ исходных файлов. При превышении лимита сканирование останавливается, фиксирует усечение в квитанции и завершается с кодом 3 вместо того, чтобы вызвать ошибку нехватки памяти. Опция allow-truncated позволяет завершить работу с кодом 0 для намеренной выборки, при этом в квитанции все равно будет указано на усечение. Коды выхода различают: успешно завершенное сканирование без критических флагов, наличие флагов на уровне или выше порога fail-on, ошибки использования или ввода-вывода, а также усечение. Значение fail-on может быть any, high или never. Квитанции детерминированы для одних и тех же байтов папки и флагов, а команда diff позволяет сравнить сохраненную базовую квитанцию с новой без повторного сканирования. Инструмент может выводить отчеты в форматах JSON, SARIF, HTML, CSV и Markdown локально. Конфигурация может быть размещена в локальном файле antiserum.toml, при этом флаги командной строки имеют приоритет над настройками файла. Файл allowlist.jsonl позволяет подавлять известные ложные срабатывания, при этом в квитанции фиксируется путь и хэш белого списка, чтобы подавление не происходило незаметно. Рабочий процесс подтверждения (confirm workflow) использует команды для оценки флагов, разбора остатков, добавления ложных срабатываний в локальный белый список и предложения строки сигнатуры и текста для pull-request. Подтвержденный «яд» становится публичной сигнатурой, которую смогут обнаруживать будущие сканирования. Репозиторий включает учебный корпус для двухминутного демо и эталонный корпус с несколькими сотнями растений и преобладанием чистых данных. Команда make reproduce сканирует эталонную смесь и завершается с ненулевым кодом, если внедренная строка не была обнаружена. Тесты включают линтинг, покрытие pytest, фикстуры field-hunt и оценку каждой проверки по порогам. GitHub Action может запускать CLI на раннере вызывающей стороны, создавать артефакты квитанции и SARIF, а также опционально загружать SARIF для сканирования кода. Примеры CI показывают, как настроить сбой задания на основе флагов квитанции или степени серьезности. В README четко определены границы проекта. Antiserum не является брандмауэром для промптов в реальном времени, сканером вредоносного ПО в файлах моделей или pickle, инструментом контроля качества данных или ошибок разметки, инвертором бэкдоров на уровне весов или генератором «яда» для изображений. В текущей версии он предназначен только для сканирования текстовых датасетов. Честное описание охвата, модель угроз, заметки по field-hunt и позиционирование задокументированы в репозитории. Проект распространяется под лицензией MIT и представлен как статус на 11-12 неделю с рабочим CLI, проверками, циклом подтверждения, демо-версией, эталонным корпусом, лентой сигнатур и системой квитанций.