Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
llm-censorship-steering — Codice per 'Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control' | Kitploit
Strumenti/GitHubGitHub/hannahxchen/llm-censorship-steering
Machine LearningPaper e RicercaApprendimento e FormazioneSicurezza dell'IAAttacco Avversario
GitHubhannahxchen/llm-censorship-steering

llm-censorship-steering

Codice per 'Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control'

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
1218 mesi faNon ancora revisionato

LLM Censorship Steering

Questo repository contiene l'implementazione del codice per Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control di Hannah Cyberey e David Evans.

Presentiamo un metodo che individua i "vettori di steering" nei meccanismi interni degli LLM per rilevare e controllare il livello di censura nelle uscite dei modelli. Dai un'occhiata a questo post del blog per una breve panoramica del nostro lavoro.

Prova le nostre demo:

  • 🐳 Steering Soppressione del Pensiero con DeepSeek-R1-Distill-Qwen-7B
  • 🦙 Steering Rifiuto—Conformità con Llama-3.1-8B-Instruct

NOTA: Entrambe le demo richiedono un account Huggingface. È ospitato con ZeroGPU di Huggingface, che è gratuito per tutti gli utenti con una quota di utilizzo giornaliera limitata.

Installazione

Scarica il repository:

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

Crea un ambiente virtuale con Python 3.11+ e attivalo:

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

Installa le dipendenze:

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

Utilizzo

Trovare un Vettore di Steering

Per trovare un vettore di steering per la censura in un modello a istruzioni, esegui:

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 file di configurazione verrà salvato nella directory specificata. In alternativa, puoi usare python -m llm_steering.run --config_file CONFIG_FILE passando un file di configurazione YAML, seguendo il formato definito in llm_steering/config.py.

Per i modelli di ragionamento, usiamo la seguente configurazione:

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

Applicare il Vettore di Steering

Usa il seguente comando per applicare il vettore di steering:

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

Puoi impostare un singolo coefficiente con --coeff oppure un intervallo di coefficienti usando --min_coeff, --max_coeff e --increment. Di default, applica valori da -1 a 1 con un incremento di 0.2. Tutte le uscite del modello verranno salvate in SAVE_DIR/evaluation/.

Tutti gli argomenti di llm_steering/run.py:

(Per l'addestramento e la validazione)

  • model_name: Usa il nome del repository del modello su Huggingface.
  • censor_type: Usa "refusal" per i modelli a istruzioni e "thought_suppress" per i modelli di ragionamento.
  • method: Metodo per calcolare i vettori candidati. Opzioni disponibili: WMD (differenza delle medie pesata), MD (differenza delle medie). Il metodo predefinito è WMD.
  • n_train, n_valid: Numero di esempi di addestramento e validazione. Se -1, vengono usati tutti gli esempi.
  • threshold: Punteggio soglia per etichettare gli esempi censurati/non censurati.
  • filter_layer_pct: Filtra l'ultimo N% dei layer.
  • save_dir: Percorso della directory per salvare i risultati.

(Per l'applicazione dei vettori di steering)

  • run_steering: Applica il vettore di steering trovato.
  • compute_projection: Calcola le proiezioni scalari.
  • datasets: Dataset a cui applicare lo steering. (Vedi i dataset disponibili qui sotto)
  • layer_ids: ID dei layer su cui intervenire. Di default usa solo il layer superiore identificato durante la validazione del vettore.
  • coeff: Esegui con un singolo valore di coefficiente.
  • min_coeff: Coefficiente minimo.
  • max_coeff: Coefficiente massimo.
  • increment: Incremento del coefficiente.
  • max_new_tokens: Numero massimo di token generati.
  • num_return_sequences: Numero di sequenze generate per input.
  • top_p: Valore top p per il campionamento.
  • temperature: Temperatura per il campionamento.

(Argomenti comuni)

  • config_file: Percorso del file di configurazione YAML.
  • use_cache: Riutilizza i risultati memorizzati nella cache. Utile se devi riprendere il processo ma non vuoi rieseguire tutto. Lo script riutilizzerà/salterà gli artefatti salvati (ad es. dati di addestramento/validazione preprocessati, uscite generate con un coefficiente).
  • batch_size: Dimensione del batch per l'estrazione delle attivazioni.
  • generation_batch_size: Dimensione del batch per eseguire la generazione.
  • seed: Seme casuale.

Dataset disponibili:

  • jailbreakbench: Split dannosa da JailbreakBench.
  • sorrybench: Set completo di prompt da SorryBench.
  • alpaca_test_sampled: 300 prompt campionati da Alpaca-Cleaned.
  • xstest_safe, xstest_unsafe: Set completo di prompt da XSTest.
  • ccp_sensitive: Prompt CCP Sensitive che coprono 68 diversi argomenti sensibili. Ogni argomento ha 20 prompt.
  • ccp_sensitive_sampled: Un set più piccolo di CCP Sensitive, che contiene 5 prompt per argomento.
  • deccp_censored: Split censurata da deccp.

Valutazione

Per valutare le uscite generate con WildGuard, esegui:

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

Lo script elaborerà tutti i file delle uscite del modello salvati in SAVE_DIR/evaluation/. Aggiungi --use_cache per saltare quelli già elaborati.

WildGuard fornisce tre tipi di rilevamento e produce uscite nel seguente formato:

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

Estraiamo la probabilità del token "yes" o "no" per ogni tipo di rilevamento. I risultati verranno aggiunti allo stesso file delle uscite generate.

Citazione

Se trovi utile questo lavoro, considera di citare il nostro articolo:

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}
}
Scarica lo strumento