use super::reasoning::ReasoningCapability;
#[derive(Debug, Clone)]
pub struct ModelCapabilities {
pub supports_tools: bool,
pub supports_vision: bool,
pub supports_reasoning: ReasoningCapability,
pub max_context_tokens: Option<usize>,
}
impl ModelCapabilities {
pub fn ollama_default() -> Self {
Self {
supports_tools: true,
supports_vision: false,
supports_reasoning: ReasoningCapability::Binary,
max_context_tokens: None,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn ollama_default_is_conservative() {
let caps = ModelCapabilities::ollama_default();
assert!(caps.supports_tools);
assert!(!caps.supports_vision);
assert_eq!(caps.supports_reasoning, ReasoningCapability::Binary);
assert!(caps.max_context_tokens.is_none());
}
#[test]
fn capabilities_are_cloneable() {
let caps = ModelCapabilities::ollama_default();
let cloned = caps.clone();
assert_eq!(cloned.supports_tools, caps.supports_tools);
}
}