#[non_exhaustive]
#[derive(Debug, thiserror::Error)]
pub enum MIError {
#[error("model error: {0}")]
Model(#[from] candle_core::Error),
#[error("hook error: {0}")]
Hook(String),
#[error("intervention error: {0}")]
Intervention(String),
#[error("config error: {0}")]
Config(String),
#[error("tokenizer error: {0}")]
Tokenizer(String),
#[error(transparent)]
Io(#[from] std::io::Error),
#[error("download error: {0}")]
Download(String),
#[error("memory error: {0}")]
Memory(String),
}
#[cfg(feature = "sae")]
impl From<anamnesis::AnamnesisError> for MIError {
fn from(e: anamnesis::AnamnesisError) -> Self {
match e {
anamnesis::AnamnesisError::Parse { reason } => Self::Config(reason),
anamnesis::AnamnesisError::Unsupported { format, detail } => {
Self::Config(format!("unsupported {format}: {detail}"))
}
anamnesis::AnamnesisError::Io(io_err) => Self::Io(io_err),
_ => Self::Config(e.to_string()),
}
}
}
pub type Result<T> = std::result::Result<T, MIError>;