1mod get_set;
3
4#[repr(i8)]
6#[derive(Copy, Clone, Debug, PartialEq, Eq)]
7pub enum RopeScalingType {
8 Unspecified = -1,
10 None = 0,
12 Linear = 1,
14 Yarn = 2,
16}
17
18impl From<i32> for RopeScalingType {
21 fn from(value: i32) -> Self {
22 match value {
23 0 => Self::None,
24 1 => Self::Linear,
25 2 => Self::Yarn,
26 _ => Self::Unspecified,
27 }
28 }
29}
30
31impl From<RopeScalingType> for i32 {
33 fn from(value: RopeScalingType) -> Self {
34 match value {
35 RopeScalingType::None => 0,
36 RopeScalingType::Linear => 1,
37 RopeScalingType::Yarn => 2,
38 RopeScalingType::Unspecified => -1,
39 }
40 }
41}
42
43#[repr(i8)]
45#[derive(Copy, Clone, Debug, PartialEq, Eq)]
46pub enum LlamaPoolingType {
47 Unspecified = -1,
49 None = 0,
51 Mean = 1,
53 Cls = 2,
55 Last = 3,
57 Rank = 4,
59}
60
61impl From<i32> for LlamaPoolingType {
64 fn from(value: i32) -> Self {
65 match value {
66 0 => Self::None,
67 1 => Self::Mean,
68 2 => Self::Cls,
69 3 => Self::Last,
70 4 => Self::Rank,
71 _ => Self::Unspecified,
72 }
73 }
74}
75
76impl From<LlamaPoolingType> for i32 {
78 fn from(value: LlamaPoolingType) -> Self {
79 match value {
80 LlamaPoolingType::None => 0,
81 LlamaPoolingType::Mean => 1,
82 LlamaPoolingType::Cls => 2,
83 LlamaPoolingType::Last => 3,
84 LlamaPoolingType::Rank => 4,
85 LlamaPoolingType::Unspecified => -1,
86 }
87 }
88}
89
90#[repr(i8)]
92#[derive(Copy, Clone, Debug, PartialEq, Eq)]
93pub enum LlamaAttentionType {
94 Unspecified = -1,
96 Causal = 0,
98 NonCausal = 1,
100}
101
102impl From<i32> for LlamaAttentionType {
105 fn from(value: i32) -> Self {
106 match value {
107 0 => Self::Causal,
108 1 => Self::NonCausal,
109 _ => Self::Unspecified,
110 }
111 }
112}
113
114impl From<LlamaAttentionType> for i32 {
116 fn from(value: LlamaAttentionType) -> Self {
117 match value {
118 LlamaAttentionType::Causal => 0,
119 LlamaAttentionType::NonCausal => 1,
120 LlamaAttentionType::Unspecified => -1,
121 }
122 }
123}
124
125#[derive(Copy, Clone, Debug, PartialEq, Eq)]
127pub enum LlamaContextType {
128 Default,
130 Mtp,
132 Unknown(llama_cpp_sys_2::llama_context_type),
134}
135
136impl From<llama_cpp_sys_2::llama_context_type> for LlamaContextType {
137 fn from(value: llama_cpp_sys_2::llama_context_type) -> Self {
138 match value {
139 x if x == llama_cpp_sys_2::LLAMA_CONTEXT_TYPE_DEFAULT => Self::Default,
140 x if x == llama_cpp_sys_2::LLAMA_CONTEXT_TYPE_MTP => Self::Mtp,
141 x => Self::Unknown(x),
142 }
143 }
144}
145
146impl From<LlamaContextType> for llama_cpp_sys_2::llama_context_type {
147 fn from(value: LlamaContextType) -> Self {
148 match value {
149 LlamaContextType::Default => llama_cpp_sys_2::LLAMA_CONTEXT_TYPE_DEFAULT,
150 LlamaContextType::Mtp => llama_cpp_sys_2::LLAMA_CONTEXT_TYPE_MTP,
151 LlamaContextType::Unknown(raw) => raw,
152 }
153 }
154}
155
156#[allow(non_camel_case_types, missing_docs)]
158#[derive(Copy, Clone, Debug, PartialEq, Eq)]
159pub enum KvCacheType {
160 Unknown(llama_cpp_sys_2::ggml_type),
166 F32,
167 F16,
168 Q4_0,
169 Q4_1,
170 Q5_0,
171 Q5_1,
172 Q8_0,
173 Q8_1,
174 Q2_K,
175 Q3_K,
176 Q4_K,
177 Q5_K,
178 Q6_K,
179 Q8_K,
180 IQ2_XXS,
181 IQ2_XS,
182 IQ3_XXS,
183 IQ1_S,
184 IQ4_NL,
185 IQ3_S,
186 IQ2_S,
187 IQ4_XS,
188 I8,
189 I16,
190 I32,
191 I64,
192 F64,
193 IQ1_M,
194 BF16,
195 TQ1_0,
196 TQ2_0,
197 MXFP4,
198}
199
200impl From<KvCacheType> for llama_cpp_sys_2::ggml_type {
201 fn from(value: KvCacheType) -> Self {
202 match value {
203 KvCacheType::Unknown(raw) => raw,
204 KvCacheType::F32 => llama_cpp_sys_2::GGML_TYPE_F32,
205 KvCacheType::F16 => llama_cpp_sys_2::GGML_TYPE_F16,
206 KvCacheType::Q4_0 => llama_cpp_sys_2::GGML_TYPE_Q4_0,
207 KvCacheType::Q4_1 => llama_cpp_sys_2::GGML_TYPE_Q4_1,
208 KvCacheType::Q5_0 => llama_cpp_sys_2::GGML_TYPE_Q5_0,
209 KvCacheType::Q5_1 => llama_cpp_sys_2::GGML_TYPE_Q5_1,
210 KvCacheType::Q8_0 => llama_cpp_sys_2::GGML_TYPE_Q8_0,
211 KvCacheType::Q8_1 => llama_cpp_sys_2::GGML_TYPE_Q8_1,
212 KvCacheType::Q2_K => llama_cpp_sys_2::GGML_TYPE_Q2_K,
213 KvCacheType::Q3_K => llama_cpp_sys_2::GGML_TYPE_Q3_K,
214 KvCacheType::Q4_K => llama_cpp_sys_2::GGML_TYPE_Q4_K,
215 KvCacheType::Q5_K => llama_cpp_sys_2::GGML_TYPE_Q5_K,
216 KvCacheType::Q6_K => llama_cpp_sys_2::GGML_TYPE_Q6_K,
217 KvCacheType::Q8_K => llama_cpp_sys_2::GGML_TYPE_Q8_K,
218 KvCacheType::IQ2_XXS => llama_cpp_sys_2::GGML_TYPE_IQ2_XXS,
219 KvCacheType::IQ2_XS => llama_cpp_sys_2::GGML_TYPE_IQ2_XS,
220 KvCacheType::IQ3_XXS => llama_cpp_sys_2::GGML_TYPE_IQ3_XXS,
221 KvCacheType::IQ1_S => llama_cpp_sys_2::GGML_TYPE_IQ1_S,
222 KvCacheType::IQ4_NL => llama_cpp_sys_2::GGML_TYPE_IQ4_NL,
223 KvCacheType::IQ3_S => llama_cpp_sys_2::GGML_TYPE_IQ3_S,
224 KvCacheType::IQ2_S => llama_cpp_sys_2::GGML_TYPE_IQ2_S,
225 KvCacheType::IQ4_XS => llama_cpp_sys_2::GGML_TYPE_IQ4_XS,
226 KvCacheType::I8 => llama_cpp_sys_2::GGML_TYPE_I8,
227 KvCacheType::I16 => llama_cpp_sys_2::GGML_TYPE_I16,
228 KvCacheType::I32 => llama_cpp_sys_2::GGML_TYPE_I32,
229 KvCacheType::I64 => llama_cpp_sys_2::GGML_TYPE_I64,
230 KvCacheType::F64 => llama_cpp_sys_2::GGML_TYPE_F64,
231 KvCacheType::IQ1_M => llama_cpp_sys_2::GGML_TYPE_IQ1_M,
232 KvCacheType::BF16 => llama_cpp_sys_2::GGML_TYPE_BF16,
233 KvCacheType::TQ1_0 => llama_cpp_sys_2::GGML_TYPE_TQ1_0,
234 KvCacheType::TQ2_0 => llama_cpp_sys_2::GGML_TYPE_TQ2_0,
235 KvCacheType::MXFP4 => llama_cpp_sys_2::GGML_TYPE_MXFP4,
236 }
237 }
238}
239
240impl From<llama_cpp_sys_2::ggml_type> for KvCacheType {
241 fn from(value: llama_cpp_sys_2::ggml_type) -> Self {
242 match value {
243 x if x == llama_cpp_sys_2::GGML_TYPE_F32 => KvCacheType::F32,
244 x if x == llama_cpp_sys_2::GGML_TYPE_F16 => KvCacheType::F16,
245 x if x == llama_cpp_sys_2::GGML_TYPE_Q4_0 => KvCacheType::Q4_0,
246 x if x == llama_cpp_sys_2::GGML_TYPE_Q4_1 => KvCacheType::Q4_1,
247 x if x == llama_cpp_sys_2::GGML_TYPE_Q5_0 => KvCacheType::Q5_0,
248 x if x == llama_cpp_sys_2::GGML_TYPE_Q5_1 => KvCacheType::Q5_1,
249 x if x == llama_cpp_sys_2::GGML_TYPE_Q8_0 => KvCacheType::Q8_0,
250 x if x == llama_cpp_sys_2::GGML_TYPE_Q8_1 => KvCacheType::Q8_1,
251 x if x == llama_cpp_sys_2::GGML_TYPE_Q2_K => KvCacheType::Q2_K,
252 x if x == llama_cpp_sys_2::GGML_TYPE_Q3_K => KvCacheType::Q3_K,
253 x if x == llama_cpp_sys_2::GGML_TYPE_Q4_K => KvCacheType::Q4_K,
254 x if x == llama_cpp_sys_2::GGML_TYPE_Q5_K => KvCacheType::Q5_K,
255 x if x == llama_cpp_sys_2::GGML_TYPE_Q6_K => KvCacheType::Q6_K,
256 x if x == llama_cpp_sys_2::GGML_TYPE_Q8_K => KvCacheType::Q8_K,
257 x if x == llama_cpp_sys_2::GGML_TYPE_IQ2_XXS => KvCacheType::IQ2_XXS,
258 x if x == llama_cpp_sys_2::GGML_TYPE_IQ2_XS => KvCacheType::IQ2_XS,
259 x if x == llama_cpp_sys_2::GGML_TYPE_IQ3_XXS => KvCacheType::IQ3_XXS,
260 x if x == llama_cpp_sys_2::GGML_TYPE_IQ1_S => KvCacheType::IQ1_S,
261 x if x == llama_cpp_sys_2::GGML_TYPE_IQ4_NL => KvCacheType::IQ4_NL,
262 x if x == llama_cpp_sys_2::GGML_TYPE_IQ3_S => KvCacheType::IQ3_S,
263 x if x == llama_cpp_sys_2::GGML_TYPE_IQ2_S => KvCacheType::IQ2_S,
264 x if x == llama_cpp_sys_2::GGML_TYPE_IQ4_XS => KvCacheType::IQ4_XS,
265 x if x == llama_cpp_sys_2::GGML_TYPE_I8 => KvCacheType::I8,
266 x if x == llama_cpp_sys_2::GGML_TYPE_I16 => KvCacheType::I16,
267 x if x == llama_cpp_sys_2::GGML_TYPE_I32 => KvCacheType::I32,
268 x if x == llama_cpp_sys_2::GGML_TYPE_I64 => KvCacheType::I64,
269 x if x == llama_cpp_sys_2::GGML_TYPE_F64 => KvCacheType::F64,
270 x if x == llama_cpp_sys_2::GGML_TYPE_IQ1_M => KvCacheType::IQ1_M,
271 x if x == llama_cpp_sys_2::GGML_TYPE_BF16 => KvCacheType::BF16,
272 x if x == llama_cpp_sys_2::GGML_TYPE_TQ1_0 => KvCacheType::TQ1_0,
273 x if x == llama_cpp_sys_2::GGML_TYPE_TQ2_0 => KvCacheType::TQ2_0,
274 x if x == llama_cpp_sys_2::GGML_TYPE_MXFP4 => KvCacheType::MXFP4,
275 _ => KvCacheType::Unknown(value),
276 }
277 }
278}
279
280#[derive(Debug, Clone)]
296#[allow(
297 missing_docs,
298 clippy::struct_excessive_bools,
299 clippy::module_name_repetitions
300)]
301pub struct LlamaContextParams {
302 pub(crate) context_params: llama_cpp_sys_2::llama_context_params,
303}
304
305unsafe impl Send for LlamaContextParams {}
307unsafe impl Sync for LlamaContextParams {}
308
309impl Default for LlamaContextParams {
318 fn default() -> Self {
319 let context_params = unsafe { llama_cpp_sys_2::llama_context_default_params() };
320 Self { context_params }
321 }
322}