use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum ClusterRole {
Small,
Medium,
Large,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClusterConfig {
pub provider: String,
pub host: String,
pub model: String,
#[serde(default)]
pub role: Option<ClusterRole>,
pub timeout_secs: u64,
pub temperature: f32,
pub seed: u64,
pub num_ctx: usize,
pub num_predict: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub api_key: Option<String>,
pub parallel: usize,
}
impl Default for ClusterConfig {
fn default() -> Self {
Self {
provider: "ollama".to_string(),
host: "http://localhost:11434".to_string(),
model: "qwen2.5-coder:14b-instruct".to_string(),
role: Some(ClusterRole::Medium),
timeout_secs: 60,
temperature: 0.1,
seed: 42,
num_ctx: 4096,
num_predict: 2048,
api_key: None,
parallel: 1,
}
}
}