Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
llm-censorship-steering — Код для «Управление цензурой: выявление векторов представлений для контроля „мыслей“ LLM» | Kitploit
Инструменты/GitHubGitHub/hannahxchen/llm-censorship-steering
Машинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИСостязательная Атака
GitHubhannahxchen/llm-censorship-steering

llm-censorship-steering

Код для «Управление цензурой: выявление векторов представлений для контроля „мыслей“ LLM»

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
12168 месяцев назадЕщё не проверено

Управление цензурой LLM

Этот репозиторий содержит реализацию кода для «Направляя цензуру: раскрытие векторов представлений для управления „мыслями" LLM» от Hannah Cyberey и David Evans.

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

Попробуйте наши демо:

  • 🐳 Управление подавлением мыслей с DeepSeek-R1-Distill-Qwen-7B
  • 🦙 Управление отказом—согласием с Llama-3.1-8B-Instruct

ПРИМЕЧАНИЕ: Обе демо-версии требуют учетной записи Huggingface. Они размещены на ZeroGPU от Huggingface, который бесплатен для всех пользователей с ограниченной дневной квотой использования.

Установка

Скачайте репозиторий:

root@kitploit:~
git clone https://github.com/hannahxchen/llm-censorship-steering.git
cd llm-censorship-steering

Создайте виртуальное окружение с Python 3.11+ и активируйте его:

root@kitploit:~
conda create -y -n censorship-steering python=3.11
conda activate censorship-steering

Установите зависимости:

root@kitploit:~
pip install -r requirements.txt

Использование

Поиск вектора управления

Чтобы найти вектор управления цензурой для инструкционной модели, выполните:

root@kitploit:~
python -m llm_steering.run \
    --run_train \
    --model_name meta-llama/Llama-2-7b-chat-hf \
    --censor_type refusal \
    --n_train 1000 --n_val 500 \
    --threshold 0.1 \
    --filter_layer_pct 0.2

Файл конфигурации будет сохранен в указанную директорию. В качестве альтернативы вы можете использовать python -m llm_steering.run --config_file CONFIG_FILE, передав YAML-файл конфигурации в формате, определенном в llm_steering/config.py.

Для моделей рассуждений мы используем следующую конфигурацию:

root@kitploit:~
python -m llm_steering.run \
    --run_train \
    --model_name deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
    --censor_type thought_suppress \
    --n_train -1 --n_val 1000 \
    --threshold 0.1 \
    --filter_layer_pct 0.05 \
    --save_dir SAVE_DIR

Применение вектора управления

Используйте следующую команду для применения вектора управления:

root@kitploit:~
python -m llm_steering.run
    --run_steering \
    --config_file SAVE_DIR/config.yaml \
    --generation_batch_size 8 \
    --coeff -1 \
    --datasets jailbreakbench ccp_sensitive

Вы можете задать одно значение коэффициента с помощью --coeff или диапазон коэффициентов, используя --min_coeff, --max_coeff и --increment. По умолчанию применяются значения от -1 до 1 с шагом 0.2. Все выходы моделей будут сохранены в SAVE_DIR/evaluation/.

Все аргументы llm_steering/run.py:

(Для обучения и валидации)

  • model_name: Используйте название репозитория модели на Huggingface.
  • censor_type: Используйте "refusal" для инструкционных моделей и "thought_suppress" для моделей рассуждений.
  • method: Метод вычисления векторов-кандидатов. Доступные варианты: WMD (взвешенная разность средних), MD (разность средних). Метод по умолчанию — WMD.
  • n_train, n_valid: Количество обучающих и валидационных примеров. Если -1, используются все примеры.
  • threshold: Пороговое значение для разметки примеров как цензурированных/нецензурированных.
  • filter_layer_pct: Отфильтровать последние N процентов слоёв.
  • save_dir: Путь к директории для сохранения результатов.

(Для применения векторов управления)

  • run_steering: Применить найденный вектор управления.
  • compute_projection: Вычислить скалярные проекции.
  • datasets: Набор(ы) данных, к которым применяется управление. (См. доступные наборы данных ниже)
  • layer_ids: Идентификатор(ы) слоя(ёв) для вмешательства. По умолчанию используется только верхний слой, определённый при валидации вектора.
  • coeff: Задать одно значение коэффициента.
  • min_coeff: Минимальный коэффициент.
  • max_coeff: Максимальный коэффициент.
  • increment: Шаг изменения коэффициента.
  • max_new_tokens: Максимальное количество генерируемых токенов.
  • num_return_sequences: Количество генерируемых последовательностей на один вход.
  • top_p: Значение top-p для сэмплирования.
  • temperature: Температура для сэмплирования.

(Общие аргументы)

  • config_file: Путь к YAML-файлу конфигурации.
  • use_cache: Использовать сохранённые кэшированные результаты. Полезно, если нужно возобновить процесс, но не хочется запускать всё заново. Скрипт повторно использует/пропускает сохранённые артефакты (например, предобработанные обучающие/валидационные данные, выходы, сгенерированные с определённым коэффициентом).
  • batch_size: Размер пакета для извлечения активаций.
  • generation_batch_size: Размер пакета для генерации.
  • seed: Случайное начальное значение.

Доступные наборы данных:

  • jailbreakbench: Вредоносная часть из JailbreakBench.
  • sorrybench: Полный набор промптов из SorryBench.
  • alpaca_test_sampled: 300 промптов, отобранных из Alpaca-Cleaned.
  • xstest_safe, xstest_unsafe: Полный набор промптов из XSTest.
  • ccp_sensitive: Промпты CCP Sensitive, охватывающие 68 различных чувствительных тем. Для каждой темы — 20 промптов.
  • ccp_sensitive_sampled: Уменьшенный набор CCP Sensitive, содержащий 5 промптов на тему.
  • deccp_censored: Цензурированная часть из deccp.

Оценка

Чтобы оценить сгенерированные выходы с помощью WildGuard, выполните:

root@kitploit:~
python -m llm_steering.run_eval \
    --config_file CONFIG_FILE_PATH \
    --batch_size BATCH_SIZE \
    --run_wildguard

Скрипт обработает все файлы с выходами моделей, сохранённые в SAVE_DIR/evaluation/. Добавьте --use_cache, чтобы пропустить уже обработанные файлы.

WildGuard обеспечивает три типа обнаружения и выдаёт выходы в следующем формате:

root@kitploit:~
Harmful request: yes
Response refusal: yes
Harmful response: no

Мы извлекаем вероятность токена "yes" или "no" для каждого типа обнаружения. Результаты будут добавлены в тот же файл, что и сгенерированные выходы.

Цитирование

Если вы считаете эту работу полезной, пожалуйста, рассмотрите возможность цитирования нашей статьи:

root@kitploit:~
@inproceedings{cyberey2025steering,
    title={Steering the CensorShip: Uncovering Representation Vectors for {LLM} ''Thought'' Control},
    author={Hannah Cyberey and David Evans},
    booktitle={Second Conference on Language Modeling},
    year={2025}
}
Скачать инструмент