Skip to main content

vtcode_config/models/model_id/
defaults.rs

1use crate::models::Provider;
2
3use super::ModelId;
4
5impl ModelId {
6    /// Get recommended fallback models in order of preference
7    pub fn fallback_models() -> Vec<ModelId> {
8        vec![
9            ModelId::Gemini35Flash,
10            ModelId::GPT54,
11            ModelId::GPT55,
12            ModelId::OpenAIGptOss20b,
13            ModelId::ClaudeOpus48,
14            ModelId::ClaudeSonnet46,
15            ModelId::DeepSeekV4Pro,
16            ModelId::ZaiGlm5,
17        ]
18    }
19
20    /// Get the default model for general use
21    pub fn default_model() -> Self {
22        ModelId::Gemini35Flash
23    }
24
25    /// Get the default orchestrator model (more capable)
26    pub fn default_orchestrator() -> Self {
27        ModelId::Gemini31ProPreview
28    }
29
30    /// Get provider-specific defaults for orchestrator
31    pub fn default_orchestrator_for_provider(provider: Provider) -> Self {
32        match provider {
33            Provider::Gemini => ModelId::Gemini31ProPreview,
34            Provider::OpenAI => ModelId::GPT54,
35            Provider::Anthropic => ModelId::ClaudeOpus48,
36            Provider::Copilot => ModelId::CopilotAuto,
37            Provider::Minimax => ModelId::MinimaxM3,
38            Provider::MiMo => ModelId::MiMoV25Pro,
39            Provider::Mistral => ModelId::MistralLarge3,
40            Provider::DeepSeek => ModelId::DeepSeekV4Pro,
41            Provider::HuggingFace => ModelId::HuggingFaceOpenAIGptOss120b,
42            Provider::Moonshot => ModelId::MoonshotKimiK26,
43            Provider::OpenRouter => ModelId::OpenRouterXiaomiMimoV25Pro,
44            Provider::Ollama => ModelId::OllamaGptOss20b,
45            Provider::LmStudio => ModelId::GPT54,
46            Provider::LlamaCpp => ModelId::LlamaCppGptOss20b,
47            Provider::ZAI => ModelId::ZaiGlm5,
48            Provider::OpenCodeZen => ModelId::OpenCodeZenGPT54,
49            Provider::OpenCodeGo => ModelId::OpenCodeGoMinimaxM27,
50            Provider::Qwen => ModelId::Qwen37Max,
51            Provider::StepFun => ModelId::StepFun37Flash,
52            Provider::Evolink => ModelId::EvolinkGpt52,
53            Provider::Poolside => ModelId::PoolsideLagunaM1,
54        }
55    }
56
57    /// Get provider-specific defaults for single agent
58    pub fn default_single_for_provider(provider: Provider) -> Self {
59        match provider {
60            Provider::Gemini => ModelId::Gemini35Flash,
61            Provider::OpenAI => ModelId::GPT54,
62            Provider::Anthropic => ModelId::ClaudeSonnet46,
63            Provider::Copilot => ModelId::CopilotAuto,
64            Provider::Minimax => ModelId::MinimaxM3,
65            Provider::MiMo => ModelId::MiMoV25Pro,
66            Provider::Mistral => ModelId::MistralLarge3,
67            Provider::DeepSeek => ModelId::DeepSeekV4Pro,
68            Provider::HuggingFace => ModelId::HuggingFaceOpenAIGptOss120b,
69            Provider::Moonshot => ModelId::MoonshotKimiK26,
70            Provider::OpenRouter => ModelId::OpenRouterXiaomiMimoV25Pro,
71            Provider::Ollama => ModelId::OllamaGptOss20b,
72            Provider::LmStudio => ModelId::GPT54,
73            Provider::LlamaCpp => ModelId::LlamaCppGptOss20b,
74            Provider::ZAI => ModelId::ZaiGlm5,
75            Provider::OpenCodeZen => ModelId::OpenCodeZenGPT54,
76            Provider::OpenCodeGo => ModelId::OpenCodeGoMinimaxM27,
77            Provider::Qwen => ModelId::Qwen36Plus,
78            Provider::StepFun => ModelId::StepFun37Flash,
79            Provider::Evolink => ModelId::EvolinkGpt52,
80            Provider::Poolside => ModelId::PoolsideLagunaXs2,
81        }
82    }
83}