MCPcopy Index your code
hub / github.com/IBM/activation-steering

github.com/IBM/activation-steering @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
60 symbols 223 edges 8 files 56 documented · 93%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Python

Activation Steering

👉 (Aug-2025) Added pca_pairwise method and set as default. Use method="pca_pairwise" to reproduce results closer to those reported in the paper. Colab demos (see below) are fixed accordingly, and they should work as expected.

👉 (Jul-2025) Bug fixed: PCA_centering (@Reason239)

👉 (Apr-2025) Conditional Activation Steering is a spotlight paper at ICLR 2025!

👉 (Nov-2024) A few Colab demos are added.

👉 (Sep-2024) Preprint released on arXiv.

Overview

This is a general-purpose activation steering library to (1) extract vectors and (2) steer model behavior. We release this library alongside our recent paper on Programming Refusal with Conditional Activation Steering to provide an intuitive toolchain for activation steering efforts.

Installation

git clone https://github.com/IBM/activation-steering

pip install -e activation-steering

Activation Steering

Activation steering is a technique for influencing the behavior of language models by modifying their internal activations during inference. This library provides tools for:

  • Extracting steering vectors from contrastive examples
  • Applying steering vectors to modify model behavior

This part is conceptually similar to Steering Language Models With Activation Engineering, but our code implementation could be different.

Conditional Activation Steering

Conditional activation steering selectively applies or withholds activation steering based on the input context. Conditional activation steering extends the activation steering framework by introducing:

  • Context-dependent control capabilities through condition vectors
  • Logical composition of multiple condition vectors

Refer to our paper and documentation for detailed implementation and usage of activation steering and conditional activation steering.

Documentation

Refer to /docs to understand this library. We recommend starting with Quick Start Tutorial as it covers most concepts that you need to get started with activation steering and conditional activation steering.

  • Quick Start Tutorial (10 minutes ~ 60 minutes, depending on your hardware) 👉 here!
  • FAQ 👉 here!

Colab Demos

  • Adding Refusal Behavior to LLaMA 3.1 8B Inst 👉 here!
  • Adding CoT Behavior to Gemma 2 9B 👉 here!
  • Making Hermes 2 Pro Conditionally Refuse Legal Instructions 👉 here!

Acknowledgement

This library builds on top of the excellent work done in the following repositories:

Some parts of the documentation for this library are generated by

Citation

@misc{lee2024programmingrefusalconditionalactivation,
      title={Programming Refusal with Conditional Activation Steering}, 
      author={Bruce W. Lee and Inkit Padhi and Karthikeyan Natesan Ramamurthy and Erik Miehling and Pierre Dognin and Manish Nagireddy and Amit Dhurandhar},
      year={2024},
      eprint={2409.05907},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2409.05907}, 
}

Core symbols most depended-on inside this repo

log
called by 50
activation_steering/config.py
clean_text
called by 6
activation_steering/steering_dataset.py
get_model_layer_list
called by 6
activation_steering/malleable_model.py
custom_progress
called by 5
activation_steering/utils.py
initialize_log_files
called by 3
activation_steering/config.py
_check_single_condition
called by 3
activation_steering/leash_layer.py
compute_similarity
called by 2
activation_steering/leash_layer.py
use_explained_variance
called by 2
activation_steering/malleable_model.py

Shape

Method 44
Class 8
Function 8

Languages

Python100%

Modules by API surface

activation_steering/malleable_model.py17 symbols
activation_steering/leash_layer.py15 symbols
activation_steering/config.py11 symbols
activation_steering/steering_vector.py8 symbols
activation_steering/utils.py5 symbols
activation_steering/steering_dataset.py4 symbols

For agents

$ claude mcp add activation-steering \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact