Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
llm-censorship-steering — Código para 'Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control' | Kitploit
Ferramentas/GitHubGitHub/hannahxchen/llm-censorship-steering
Aprendizado de MáquinaPapers e PesquisaAprendizado e EducaçãoSegurança de IAAtaque Adversário
GitHubhannahxchen/llm-censorship-steering

llm-censorship-steering

Código para 'Steering the CensorShip: Uncovering Representation Vectors for LLM "Thought" Control'

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
1216há 8 mesesAinda não revisado

Direcionamento da Censura de LLM

Este repositório contém a implementação do código para Direcionando a Censura: Descobrindo Vetores de Representação para o Controle do "Pensamento" de LLMs de Hannah Cyberey e David Evans.

Apresentamos um método que encontra "vetores de direcionamento" nas partes internas de LLMs para detectar e controlar o nível de censura nas saídas dos modelos. Confira esta postagem no blog para uma breve visão geral do nosso trabalho.

Experimente nossas demos:

  • 🐳 Direcionando a Supressão de Pensamento com DeepSeek-R1-Distill-Qwen-7B
  • 🦙 Direcionando Recusa—Conformidade com Llama-3.1-8B-Instruct

NOTA: Ambas as demonstrações exigem uma conta Huggingface. Elas estão hospedadas com o ZeroGPU da Huggingface, que é gratuito para todos os usuários com uma cota diária de uso limitada.

Instalação

Baixe o repositório:

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

Crie um ambiente virtual com Python 3.11+ e ative-o:

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

Instale as dependências:

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

Uso

Encontrando um Vetor de Direcionamento

Para encontrar um vetor de direcionamento de censura para um modelo de instrução, execute:

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

Um arquivo de configuração será salvo no diretório especificado. Alternativamente, você pode usar python -m llm_steering.run --config_file CONFIG_FILE passando um arquivo de configuração YAML, seguindo o formato definido em llm_steering/config.py.

Para modelos de raciocínio, usamos a seguinte configuração:

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

Aplicando o Vetor de Direcionamento

Use o seguinte comando para aplicar o vetor de direcionamento:

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

Você pode definir um único coeficiente com --coeff ou definir um intervalo de coeficientes usando --min_coeff, --max_coeff e --increment. Por padrão, ele aplica valores de -1 a 1 com um incremento de 0.2. Todas as saídas do modelo serão salvas em SAVE_DIR/evaluation/.

Todos os argumentos de llm_steering/run.py:

(Para treinamento e validação)

  • model_name: Use o nome do repositório do modelo no Huggingface.
  • censor_type: Use "refusal" para modelos de instrução e "thought_suppress" para modelos de raciocínio.
  • method: Método para calcular vetores candidatos. Opções disponíveis: WMD (diferença de médias ponderadas), MD (diferença entre médias). O método padrão é WMD.
  • n_train, n_valid: Número de exemplos de treinamento e validação. Se -1, todos os exemplos são usados.
  • threshold: Pontuação limite para rotular exemplos censurados/não censurados.
  • filter_layer_pct: Filtrar os últimos N por cento das camadas.
  • save_dir: Caminho do diretório para salvar os resultados.

(Para aplicar vetores de direcionamento)

  • run_steering: Aplicar o vetor de direcionamento encontrado.
  • compute_projection: Calcular projeções escalares
  • datasets: Conjunto(s) de dados aos quais aplicar o direcionamento. (Veja os conjuntos de dados disponíveis abaixo)
  • layer_ids: ID(s) da(s) camada(s) para intervir. Por padrão, usa apenas a camada principal identificada durante a validação do vetor.
  • coeff: Executar um único valor de coeficiente.
  • min_coeff: Coeficiente mínimo.
  • max_coeff: Coeficiente máximo
  • increment: Incremento do coeficiente.
  • max_new_tokens: Número máximo de tokens gerados.
  • num_return_sequences: Número de sequências geradas por entrada.
  • top_p: Valor de top p para amostragem.
  • temperature: Temperatura para amostragem.

(Argumentos comuns)

  • config_file: Caminho para o arquivo de configuração YAML.
  • use_cache: Reutilizar resultados em cache armazenados. Útil se você precisar retomar o processo sem querer executar tudo novamente. O script reutilizará/ignorará os artefatos salvos (por exemplo, dados de treinamento/validação pré-processados, saídas geradas com um coeficiente).
  • batch_size: Tamanho do lote para extrair ativações.
  • generation_batch_size: Tamanho do lote para executar a geração.
  • seed: Semente aleatória.

Conjuntos de dados disponíveis:

  • jailbreakbench: Divisão prejudicial do JailbreakBench.
  • sorrybench: Conjunto completo de prompts do SorryBench.
  • alpaca_test_sampled: 300 prompts amostrados do Alpaca-Cleaned.
  • xstest_safe, xstest_unsafe: Conjunto completo de prompts do XSTest.
  • ccp_sensitive: Prompts do CCP Sensitive cobrindo 68 assuntos sensíveis diferentes. Cada assunto tem 20 prompts.
  • ccp_sensitive_sampled: Um conjunto menor de CCP Sensitive, que contém 5 prompts por assunto.
  • deccp_censored: Divisão censurada do deccp.

Avaliação

Para avaliar as saídas geradas com WildGuard, execute:

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

O script processará todos os arquivos de saídas do modelo salvos em SAVE_DIR/evaluation/. Adicione --use_cache para pular aqueles que já foram processados.

WildGuard fornece três tipos de detecção e produz saídas no seguinte formato:

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

Extraímos a probabilidade do token "yes" ou "no" para cada tipo de detecção. Os resultados serão adicionados ao mesmo arquivo das saídas geradas.

Citação

Se você achar este trabalho útil, considere citar nosso artigo:

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}
}
Baixar ferramenta