Skip to main content

ollama_oxide/inference/
think_setting.rs

1//! Think setting primitive type
2
3use serde::{Deserialize, Serialize};
4
5/// Think setting for generate requests
6///
7/// Controls whether and how the model outputs its thinking process.
8/// Can be a boolean (true/false) or a string ("high", "medium", "low").
9///
10/// # Examples
11///
12/// ```no_run
13/// use ollama_oxide::ThinkSetting;
14///
15/// let enabled = ThinkSetting::enabled();
16/// let high = ThinkSetting::high();
17/// ```
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19#[serde(untagged)]
20pub enum ThinkSetting {
21    /// Boolean: true to enable, false to disable
22    Enabled(bool),
23    /// Level: "high", "medium", or "low"
24    Level(String),
25}
26
27impl ThinkSetting {
28    /// Enable thinking output
29    pub fn enabled() -> Self {
30        Self::Enabled(true)
31    }
32
33    /// Disable thinking output
34    pub fn disabled() -> Self {
35        Self::Enabled(false)
36    }
37
38    /// Set thinking level
39    pub fn level(level: impl Into<String>) -> Self {
40        Self::Level(level.into())
41    }
42
43    /// High thinking level
44    pub fn high() -> Self {
45        Self::Level("high".to_string())
46    }
47
48    /// Medium thinking level
49    pub fn medium() -> Self {
50        Self::Level("medium".to_string())
51    }
52
53    /// Low thinking level
54    pub fn low() -> Self {
55        Self::Level("low".to_string())
56    }
57}
58
59impl From<bool> for ThinkSetting {
60    fn from(b: bool) -> Self {
61        Self::Enabled(b)
62    }
63}
64
65impl From<&str> for ThinkSetting {
66    fn from(s: &str) -> Self {
67        Self::Level(s.to_string())
68    }
69}