synaptic_config/model.rs
1use serde::Deserialize;
2
3/// Model provider configuration.
4#[derive(Debug, Clone, Deserialize)]
5pub struct ModelConfig {
6 /// Provider name: "openai", "anthropic", "gemini", "ollama", or any OpenAI-compatible.
7 pub provider: String,
8 /// Model identifier (e.g., "gpt-4", "claude-sonnet-4-20250514").
9 pub model: String,
10 /// Environment variable name containing the API key.
11 #[serde(default = "default_api_key_env")]
12 pub api_key_env: String,
13 /// Custom base URL for OpenAI-compatible providers.
14 pub base_url: Option<String>,
15 /// Maximum output tokens.
16 pub max_tokens: Option<u32>,
17 /// Sampling temperature.
18 pub temperature: Option<f64>,
19}
20
21fn default_api_key_env() -> String {
22 "OPENAI_API_KEY".to_string()
23}