#![allow(clippy::pedantic, clippy::module_name_repetitions)]
use std::ffi::NulError;
pub mod context;
pub mod gguf;
pub mod grammar;
pub mod llama_backend;
pub mod llama_batch;
pub mod model;
#[cfg(feature = "mtmd")]
pub mod mtmd;
pub mod quantize;
pub mod sampling;
pub mod speculative;
pub mod timing;
pub mod token;
pub use context::params::{LlamaContextParams, LlamaContextType};
pub use context::LlamaContext;
#[cfg(feature = "common")]
pub use grammar::{json_schema_to_grammar, JsonSchemaError};
pub use grammar::{DryInitError, DryParams, GrammarInitError, LlamaDrySampler, LlamaGrammar};
pub use llama_backend::LlamaBackend;
pub use llama_batch::LlamaBatch;
pub use model::params::LlamaModelParams;
pub use model::{AddBos, LlamaModel};
#[cfg(feature = "mtmd")]
pub use mtmd::{
mtmd_default_marker, MtmdBitmap, MtmdBitmapError, MtmdContext, MtmdContextParams,
MtmdEncodeError, MtmdEvalError, MtmdInitError, MtmdInputChunk, MtmdInputChunkError,
MtmdInputChunkType, MtmdInputChunks, MtmdInputChunksError, MtmdInputText, MtmdTokenizeError,
};
pub use sampling::LlamaSampler;
pub use speculative::{MtpOpType, MtpSpeculativeParams};
#[cfg(feature = "common")]
pub use speculative::{MtpSpeculative, MtpStep};
pub use token::data::LlamaTokenData;
pub use token::data_array::LlamaTokenDataArray;
pub use token::LlamaToken;
#[derive(Debug, thiserror::Error)]
pub enum LlamaError {
#[error("llama backend already initialized")]
BackendAlreadyInitialized,
#[error("failed to load model from {0}")]
ModelLoad(String),
#[error("failed to create llama context")]
ContextCreation,
#[error("string contained an interior NUL byte")]
Nul(#[from] NulError),
#[error("invalid model path")]
InvalidPath,
#[error("tokenization failed")]
Tokenize,
#[error("token could not be converted to text")]
TokenToPiece,
#[error("llama_decode failed with status {0}")]
Decode(i32),
#[error("batch capacity {capacity} exceeded (tried to add token {index})")]
BatchOverflow {
capacity: usize,
index: usize,
},
#[error("too many seq_ids for a batch token: got {got}, max {max}")]
TooManySeqIds {
got: usize,
max: usize,
},
#[error("no logits available at index {0}")]
NoLogits(i32),
#[error("failed to initialize MTP speculative driver")]
MtpInit,
#[error("MTP begin failed with status {0}")]
MtpBegin(i32),
#[error("MTP step failed with status {0}")]
MtpStep(i32),
}