Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
llm-censorship-steering — Code für „Die Zensur steuern: Aufdecken von Repräsentationsvektoren für die ‚Gedanken‘-Kontrolle von LLMs“ | Kitploit
Tools/GitHubGitHub/hannahxchen/llm-censorship-steering
Maschinelles LernenPapers & ForschungLernen & BildungKI-SicherheitAdversarial-Angriff
GitHubhannahxchen/llm-censorship-steering

llm-censorship-steering

Code für „Die Zensur steuern: Aufdecken von Repräsentationsvektoren für die ‚Gedanken‘-Kontrolle von LLMs“

Repository anzeigen
121vor 8 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

LLM-Zensursteuerung

Dieses Repository enthält die Codeimplementierung für Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control von Hannah Cyberey und David Evans.

Wir stellen eine Methode vor, die „Steering Vectors“ aus den Interna von LLMs findet, um das Ausmaß der Zensur in Modellausgaben zu erkennen und zu steuern. Eine kurze Übersicht unserer Arbeit findest du in diesem Blogbeitrag.

Probiere unsere Demos aus:

  • 🐳 Steering Thought Suppression mit DeepSeek-R1-Distill-Qwen-7B
  • 🦙 Steering Refusal—Compliance mit Llama-3.1-8B-Instruct

HINWEIS: Beide Demos erfordern ein Huggingface-Konto. Sie werden mit Huggingfaces ZeroGPU gehostet, das allen Benutzern mit einem begrenzten täglichen Nutzungskontingent kostenlos zur Verfügung steht.

Installation

Lade das Repository herunter:

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

Erstelle eine virtuelle Umgebung mit Python 3.11+ und aktiviere sie:

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

Installiere die Abhängigkeiten:

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

Verwendung

Einen Steering Vector finden

Um einen Zensur-Steering-Vector für ein Instruktionsmodell zu finden, führe Folgendes aus:

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

Eine Konfigurationsdatei wird im angegebenen Verzeichnis gespeichert. Alternativ kannst du python -m llm_steering.run --config_file CONFIG_FILE verwenden, indem du eine YAML-Konfigurationsdatei übergibst, die dem in llm_steering/config.py definierten Format folgt.

Für Reasoning-Modelle verwenden wir die folgende Konfiguration:

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

Anwenden des Steering Vectors

Verwende den folgenden Befehl, um den Steering Vector anzuwenden:

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

Du kannst entweder einen einzelnen Koeffizienten mit --coeff festlegen oder einen Koeffizientenbereich mit --min_coeff, --max_coeff und --increment angeben. Standardmäßig werden Werte von -1 bis 1 mit einer Schrittweite von 0,2 angewendet. Alle Modellausgaben werden unter SAVE_DIR/evaluation/ gespeichert.

Alle Argumente von llm_steering/run.py:

(Für Training und Validierung)

  • model_name: Verwende den Namen des Modell-Repositorys auf Huggingface.
  • censor_type: Verwende „refusal“ für Instruktionsmodelle und „thought_suppress“ für Reasoning-Modelle.
  • method: Methode zur Berechnung von Kandidatenvektoren. Verfügbare Optionen: WMD (gewichtete Mittelwertdifferenz), MD (Differenz der Mittelwerte). Standardmethode ist WMD.
  • n_train, n_valid: Anzahl der Trainings- und Validierungsbeispiele. Bei -1 werden alle Beispiele verwendet.
  • threshold: Schwellenwert für die Kennzeichnung von zensierten/nicht zensierten Beispielen.
  • filter_layer_pct: Filtert die letzten N Prozent der Layer.
  • save_dir: Verzeichnispfad zum Speichern der Ergebnisse.

(Zum Anwenden von Steering Vectors)

  • run_steering: Wende den gefundenen Steering Vector an.
  • compute_projection: Berechne skalare Projektionen
  • datasets: Datensatz/Datensätze, auf die das Steering angewendet werden soll. (Siehe unten verfügbare Datensätze)
  • layer_ids: Layer-ID(s), an denen eingegriffen werden soll. Standardmäßig wird nur die oberste Schicht verwendet, die während der Vektorvalidierung ermittelt wurde.
  • coeff: Führe einen einzelnen Koeffizientenwert aus.
  • min_coeff: Minimaler Koeffizient.
  • max_coeff: Maximaler Koeffizient
  • increment: Schrittweite des Koeffizienten.
  • max_new_tokens: Maximale Anzahl generierter Tokens.
  • num_return_sequences: Anzahl generierter Sequenzen pro Eingabe.
  • top_p: Top-p-Wert für das Sampling.
  • temperature: Temperatur für das Sampling.

(Allgemeine Argumente)

  • config_file: Pfad zur YAML-Konfigurationsdatei.
  • use_cache: Wiederverwenden gespeicherter Cache-Ergebnisse. Nützlich, wenn du den Prozess fortsetzen möchtest, aber nicht alles erneut ausführen willst. Das Skript verwendet/überspringt die gespeicherten Artefakte (z. B. vorverarbeitete Trainings-/Validierungsdaten, mit einem Koeffizienten erzeugte Ausgaben).
  • batch_size: Batchgröße zum Extrahieren von Aktivierungen.
  • generation_batch_size: Batchgröße für die Generierung.
  • seed: Zufallsseed.

Verfügbare Datensätze:

  • jailbreakbench: Schädlicher Teil von JailbreakBench.
  • sorrybench: Voller Satz an Prompts von SorryBench.
  • alpaca_test_sampled: 300 aus Alpaca-Cleaned gesampelte Prompts.
  • xstest_safe, xstest_unsafe: Voller Satz an Prompts von XSTest.
  • ccp_sensitive: CCP Sensitive-Prompts, die 68 verschiedene sensible Themen abdecken. Jedes Thema enthält 20 Prompts.
  • ccp_sensitive_sampled: Eine kleinere Menge von CCP Sensitive mit 5 Prompts pro Thema.
  • deccp_censored: Zensierter Teil von deccp.

Evaluierung

Um die generierten Ausgaben mit WildGuard zu evaluieren, führe Folgendes aus:

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

Das Skript verarbeitet alle Dateien mit Modellausgaben, die unter SAVE_DIR/evaluation/ gespeichert sind. Füge --use_cache hinzu, um bereits verarbeitete Dateien zu überspringen.

WildGuard bietet drei Arten der Erkennung und erzeugt Ausgaben im folgenden Format:

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

Wir extrahieren die Wahrscheinlichkeit des Tokens „yes“ oder „no“ für jede Erkennungsart. Die Ergebnisse werden zu derselben Datei wie die generierten Ausgaben hinzugefügt.

Zitieren

Wenn du diese Arbeit nützlich findest, ziehe bitte in Betracht, unser Paper zu zitieren:

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}
}
Tool herunterladen