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("Invalid input: {0}")]
InvalidInput(String),
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("ONNX Runtime error: {0}")]
OrtError(String),
#[error("HuggingFace Hub error: {0}")]
HubError(String),
#[error("Extraction failed: {0}")]
ExtractionFailed(String),
}
impl From<ort::Error> for InferenceError {
fn from(err: ort::Error) -> Self {
InferenceError::OrtError(err.to_string())
}
}
impl From<tokenizers::Error> for InferenceError {
fn from(err: tokenizers::Error) -> Self {
InferenceError::TokenizationError(err.to_string())
}
}
pub type Result<T> = std::result::Result<T, InferenceError>;