mod config;
mod device;
mod download;
mod inference;
mod model;
pub use config::{InferenceConfig, InferenceResult};
pub use device::{get_best_device, get_device, DeviceType};
pub use download::{
check_model_cached, download_model, download_model_with_channel, download_model_with_progress,
download_tokenizer, download_tokenizer_with_channel, download_tokenizer_with_progress,
load_tokenizer, load_tokenizer_from_repo, DownloadProgress,
};
pub use inference::{run_inference, run_inference_with_channel};
pub use model::Model;
#[derive(Debug, thiserror::Error)]
pub enum CandelabraError {
#[error("Download error: {0}")]
Download(String),
#[error("Model error: {0}")]
Model(String),
#[error("Inference error: {0}")]
Inference(String),
#[error("Tokenizer error: {0}")]
Tokenizer(String),
#[error("Operation cancelled")]
Cancelled,
#[error("I/O error: {0}")]
Io(String),
#[error("Device error: {0}")]
Device(String),
}
impl From<std::io::Error> for CandelabraError {
fn from(e: std::io::Error) -> Self {
CandelabraError::Io(e.to_string())
}
}
impl From<tokenizers::Error> for CandelabraError {
fn from(e: tokenizers::Error) -> Self {
CandelabraError::Tokenizer(e.to_string())
}
}
impl From<candle_core::Error> for CandelabraError {
fn from(e: candle_core::Error) -> Self {
CandelabraError::Inference(e.to_string())
}
}
pub type Result<T> = std::result::Result<T, CandelabraError>;