Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
llm-censorship-steering — Code pour « Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control » | Kitploit
Outils/GitHubGitHub/hannahxchen/llm-censorship-steering
Apprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationSécurité de l'IAAttaque Adversariale
GitHubhannahxchen/llm-censorship-steering

llm-censorship-steering

Code pour « Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control »

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
1216il y a 8 moisPas encore vérifié

Pilotage de la Censure des LLM

Ce dépôt contient l'implémentation du code de Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control par Hannah Cyberey et David Evans.

Nous introduisons une méthode qui trouve des « vecteurs de pilotage » à partir des internes des LLM pour détecter et contrôler le niveau de censure dans les sorties des modèles. Consultez ce blogpost pour un bref aperçu de notre travail.

Essayez nos démos :

  • 🐳 Pilotage de la Suppression de Pensée avec DeepSeek-R1-Distill-Qwen-7B
  • 🦙 Pilotage du Refus—Conformité avec Llama-3.1-8B-Instruct

REMARQUE : Les deux démos nécessitent un compte Huggingface. Elles sont hébergées avec le ZeroGPU de Huggingface, qui est gratuit pour tous les utilisateurs avec un quota d'utilisation quotidien limité.

Installation

Téléchargez le dépôt :

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

Créez un environnement virtuel avec Python 3.11+ et activez-le :

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

Installez les dépendances :

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

Utilisation

Trouver un Vecteur de Pilotage

Pour trouver un vecteur de pilotage de la censure pour un modèle d'instruction, exécutez :

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

Un fichier de configuration sera enregistré dans le répertoire spécifié. Alternativement, vous pouvez utiliser python -m llm_steering.run --config_file CONFIG_FILE en passant un fichier de configuration YAML, suivant le format défini dans llm_steering/config.py.

Pour les modèles de raisonnement, nous utilisons la configuration suivante :

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

Appliquer le Vecteur de Pilotage

Utilisez la commande suivante pour appliquer le vecteur de pilotage :

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

Vous pouvez soit définir un seul coefficient avec --coeff, soit définir une plage de coefficients en utilisant --min_coeff, --max_coeff et --increment. Par défaut, il applique les valeurs de -1 à 1 avec un incrément de 0.2. Toutes les sorties du modèle seront enregistrées dans SAVE_DIR/evaluation/.

Tous les arguments de llm_steering/run.py :

(Pour l'entraînement et la validation)

  • model_name : Utilisez le nom du dépôt du modèle sur Huggingface.
  • censor_type : Utilisez "refusal" pour les modèles d'instruction et "thought_suppress" pour les modèles de raisonnement.
  • method : Méthode pour calculer les vecteurs candidats. Options disponibles : WMD (différence moyenne pondérée), MD (différence des moyennes). La méthode par défaut est WMD.
  • n_train, n_valid : Nombre d'exemples d'entraînement et de validation. Si -1, tous les exemples sont utilisés.
  • threshold : Score seuil pour étiqueter les exemples censurés/non censurés.
  • filter_layer_pct : Filtrer les derniers N pour cent des couches.
  • save_dir : Chemin du répertoire pour enregistrer les résultats.

(Pour l'application des vecteurs de pilotage)

  • run_steering : Applique le vecteur de pilotage trouvé.
  • compute_projection : Calcule les projections scalaires.
  • datasets : Jeu(x) de données sur lequel/lesquels appliquer le pilotage. (Voir les jeux de données disponibles ci-dessous)
  • layer_ids : Identifiant(s) de couche à intervenir. Par défaut, utilise uniquement la couche supérieure identifiée lors de la validation du vecteur.
  • coeff : Exécuter avec une seule valeur de coefficient.
  • min_coeff : Coefficient minimum.
  • max_coeff : Coefficient maximum.
  • increment : Incrément du coefficient.
  • max_new_tokens : Nombre maximum de jetons générés.
  • num_return_sequences : Nombre de séquences générées par entrée.
  • top_p : Valeur top p pour l'échantillonnage.
  • temperature : Température pour l'échantillonnage.

(Arguments communs)

  • config_file : Chemin vers le fichier de configuration YAML.
  • use_cache : Réutiliser les résultats mis en cache stockés. Utile si vous devez reprendre le processus sans vouloir tout réexécuter. Le script réutilisera/ignorera les artefacts enregistrés (par exemple, les données d'entraînement/validation prétraitées, les sorties générées avec un coefficient).
  • batch_size : Taille de lot pour l'extraction des activations.
  • generation_batch_size : Taille de lot pour l'exécution de la génération.
  • seed : Graine aléatoire.

Jeux de données disponibles :

  • jailbreakbench : Split nuisible de JailbreakBench.
  • sorrybench : Ensemble complet de prompts de SorryBench.
  • alpaca_test_sampled : 300 prompts échantillonnés de Alpaca-Cleaned.
  • xstest_safe, xstest_unsafe : Ensemble complet de prompts de XSTest.
  • ccp_sensitive : Prompts CCP Sensitive couvrant 68 sujets sensibles différents. Chaque sujet a 20 prompts.
  • ccp_sensitive_sampled : Un ensemble plus petit de CCP Sensitive, qui contient 5 prompts par sujet.
  • deccp_censored : Split censuré de deccp.

Évaluation

Pour évaluer les sorties générées avec WildGuard, exécutez :

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

Le script traitera tous les fichiers de sorties du modèle enregistrés sous SAVE_DIR/evaluation/. Ajoutez --use_cache pour ignorer ceux qui ont déjà été traités.

WildGuard fournit trois types de détection et produit des sorties au format suivant :

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

Nous extrayons la probabilité du jeton "yes" ou "no" pour chaque type de détection. Les résultats seront ajoutés au même fichier que les sorties générées.

Citation

Si vous trouvez ce travail utile, veuillez envisager de citer notre article :

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}
}
Télécharger l’outil