Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
llm-censorship-steering — Código para 'Dirigiendo la Censura: Descubriendo Vectores de Representación para el Control del "Pensamiento" de LLM' | Kitploit
Herramientas/GitHubGitHub/hannahxchen/llm-censorship-steering
Aprendizaje AutomáticoPapers e InvestigaciónAprendizaje y EducaciónSeguridad de IAAtaque Adversario
GitHubhannahxchen/llm-censorship-steering

llm-censorship-steering

Código para 'Dirigiendo la Censura: Descubriendo Vectores de Representación para el Control del "Pensamiento" de LLM'

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
12117hace 9 mesesAún no revisado

Dirección de la Censura en LLM

Este repositorio contiene la implementación del código de Dirigiendo la Censura: Descubriendo Vectores de Representación para el Control del "Pensamiento" en LLM por Hannah Cyberey y David Evans.

Presentamos un método que encuentra "vectores de dirección" a partir de las representaciones internas de los LLM para detectar y controlar el nivel de censura en las salidas del modelo. Consulta esta entrada de blog para una breve descripción de nuestro trabajo.

Prueba nuestras demos:

  • 🐳 Dirección de la Supresión del Pensamiento con DeepSeek-R1-Distill-Qwen-7B
  • 🦙 Dirección de Rechazo—Cumplimiento con Llama-3.1-8B-Instruct

NOTA: Ambas demos requieren una cuenta de Huggingface. Está alojado con ZeroGPU de Huggingface, que es gratuito para todos los usuarios con una cuota diaria de uso limitada.

Instalación

Descarga el repositorio:

git clone https://github.com/hannahxchen/llm-censorship-steering.git
cd llm-censorship-steering

Crea un entorno virtual con Python 3.11+ y actívalo:

conda create -y -n censorship-steering python=3.11
conda activate censorship-steering

Instala las dependencias:

pip install -r requirements.txt

Uso

Encontrar un vector de dirección

Para encontrar un vector de dirección de censura para un modelo de instrucción, ejecuta:

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

Se guardará un archivo de configuración en el directorio especificado. Alternativamente, puedes usar python -m llm_steering.run --config_file CONFIG_FILE pasando un archivo de configuración YAML, siguiendo el formato definido en llm_steering/config.py.

Para modelos de razonamiento, usamos la siguiente configuración:

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 el vector de dirección

Usa el siguiente comando para aplicar el vector de dirección:

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

Puedes establecer un solo coeficiente con --coeff o establecer un rango de coeficientes usando --min_coeff, --max_coeff e --increment. Por defecto, aplica valores de -1 a 1 con un incremento de 0.2. Todas las salidas del modelo se guardarán en SAVE_DIR/evaluation/.

Todos los argumentos de llm_steering/run.py:

(Para entrenamiento y validación)

  • model_name: Usa el nombre del repositorio del modelo en Huggingface.
  • censor_type: Usa "refusal" para modelos de instrucción y "thought_suppress" para modelos de razonamiento.
  • method: Método para calcular vectores candidatos. Opciones disponibles: WMD (diferencia de medias ponderada), MD (diferencia de medias). El método predeterminado es WMD.
  • n_train, n_valid: Número de ejemplos de entrenamiento y validación. Si es -1, se usan todos los ejemplos.
  • threshold: Puntuación umbral para etiquetar ejemplos censurados/no censurados.
  • filter_layer_pct: Filtra el último N por ciento de las capas.
  • save_dir: Ruta del directorio para guardar los resultados.

(Para aplicar vectores de dirección)

  • run_steering: Aplica el vector de dirección encontrado.
  • compute_projection: Calcula proyecciones escalares.
  • datasets: Conjunto(s) de datos sobre los que aplicar la dirección. (Consulta los conjuntos de datos disponibles a continuación)
  • layer_ids: Id(s) de capa para intervenir. Por defecto usa solo la capa superior identificada durante la validación del vector.
  • coeff: Ejecuta un único valor de coeficiente.
  • min_coeff: Coeficiente mínimo.
  • max_coeff: Coeficiente máximo.
  • increment: Incremento del coeficiente.
  • max_new_tokens: Número máximo de tokens generados.
  • num_return_sequences: Número de secuencias generadas por entrada.
  • top_p: Valor de top p para el muestreo.
  • temperature: Temperatura para el muestreo.

(Argumentos comunes)

  • config_file: Ruta al archivo de configuración YAML.
  • use_cache: Reutiliza los resultados en caché almacenados. Útil si necesitas reanudar el proceso pero no quieres volver a ejecutar todo. El script reutilizará/omitirá los artefactos guardados (por ejemplo, datos de entrenamiento/validación preprocesados, salidas generadas con un coeficiente).
  • batch_size: Tamaño de lote para extraer activaciones.
  • generation_batch_size: Tamaño de lote para ejecutar la generación.
  • seed: Semilla aleatoria.

Conjuntos de datos disponibles:

  • jailbreakbench: División de daños de JailbreakBench.
  • sorrybench: Conjunto completo de indicaciones de SorryBench.
  • alpaca_test_sampled: 300 indicaciones muestreadas de Alpaca-Cleaned.
  • xstest_safe, xstest_unsafe: Conjunto completo de indicaciones de XSTest.
  • ccp_sensitive: Indicaciones de CCP Sensitive que cubren 68 temas sensibles diferentes. Cada tema tiene 20 indicaciones.
  • ccp_sensitive_sampled: Un conjunto más pequeño de CCP Sensitive, que contiene 5 indicaciones por tema.
  • deccp_censored: División censurada de deccp.

Evaluación

Para evaluar las salidas generadas con WildGuard, ejecuta:

python -m llm_steering.run_eval \
    --config_file CONFIG_FILE_PATH \
    --batch_size BATCH_SIZE \
    --run_wildguard

El script procesará todos los archivos de salidas del modelo guardados en SAVE_DIR/evaluation/. Añade --use_cache para omitir los que ya han sido procesados.

WildGuard proporciona tres tipos de detección y produce salidas en el siguiente formato:

Harmful request: yes
Response refusal: yes
Harmful response: no

Extraemos la probabilidad del token "yes" o "no" para cada tipo de detección. Los resultados se añadirán al mismo archivo que las salidas generadas.

Citación

Si encuentras útil este trabajo, considera citar nuestro artículo:

@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}
}
Descargar herramienta