use ik_llama_cpp_sys as sys;
#[derive(Debug, Clone)]
pub struct LlamaModelParams {
pub(crate) params: sys::llama_model_params,
}
impl Default for LlamaModelParams {
fn default() -> Self {
Self {
params: unsafe { sys::llama_model_default_params() },
}
}
}
impl LlamaModelParams {
#[must_use]
pub fn with_n_gpu_layers(mut self, n: u32) -> Self {
self.params.n_gpu_layers = i32::try_from(n).unwrap_or(i32::MAX);
self
}
#[must_use]
pub fn with_use_mmap(mut self, use_mmap: bool) -> Self {
self.params.use_mmap = use_mmap;
self
}
#[must_use]
pub fn with_use_mlock(mut self, use_mlock: bool) -> Self {
self.params.use_mlock = use_mlock;
self
}
#[must_use]
pub fn with_vocab_only(mut self, vocab_only: bool) -> Self {
self.params.vocab_only = vocab_only;
self
}
#[must_use]
pub fn with_mtp(mut self, mtp: bool) -> Self {
self.params.mtp = mtp;
self
}
#[must_use]
pub fn as_raw(&self) -> &sys::llama_model_params {
&self.params
}
}