use thiserror::Error;
#[derive(Error, Debug)]
pub enum InferenceError {
#[error("Model not found: {0}")]
ModelNotFound(String),
#[error("Failed to load model: {0}")]
ModelLoadError(String),
#[error("Tokenization failed: {0}")]
TokenizationError(String),
#[error("Inference failed: {0}")]
InferenceError(String),
#[error("Device not available: {0}")]
DeviceNotAvailable(String),
#[error("Invalid input: {0}")]
InvalidInput(String),
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("Candle error: {0}")]
CandleError(String),
#[error("HuggingFace Hub error: {0}")]
HubError(String),
}
impl From<candle_core::Error> for InferenceError {
fn from(err: candle_core::Error) -> Self {
InferenceError::CandleError(err.to_string())
}
}
impl From<tokenizers::Error> for InferenceError {
fn from(err: tokenizers::Error) -> Self {
InferenceError::TokenizationError(err.to_string())
}
}
impl From<hf_hub::api::tokio::ApiError> for InferenceError {
fn from(err: hf_hub::api::tokio::ApiError) -> Self {
InferenceError::HubError(err.to_string())
}
}
pub type Result<T> = std::result::Result<T, InferenceError>;