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::Gemini3FlashPreview,
10            ModelId::GPT52,
11            ModelId::GPT5,
12            ModelId::OpenAIGptOss20b,
13            ModelId::ClaudeOpus47,
14            ModelId::ClaudeOpus46,
15            ModelId::ClaudeSonnet46,
16            ModelId::DeepSeekV4Pro,
17            ModelId::ZaiGlm5,
18        ]
19    }
20
21    /// Get the default model for general use
22    pub fn default_model() -> Self {
23        ModelId::Gemini3FlashPreview
24    }
25
26    /// Get the default orchestrator model (more capable)
27    pub fn default_orchestrator() -> Self {
28        ModelId::Gemini31ProPreview
29    }
30
31    /// Get provider-specific defaults for orchestrator
32    pub fn default_orchestrator_for_provider(provider: Provider) -> Self {
33        match provider {
34            Provider::Gemini => ModelId::Gemini31ProPreview,
35            Provider::OpenAI => ModelId::GPT5,
36            Provider::Anthropic => ModelId::ClaudeOpus47,
37            Provider::Copilot => ModelId::CopilotAuto,
38            Provider::Minimax => ModelId::MinimaxM27,
39            Provider::MiMo => ModelId::MiMoV25Pro,
40            Provider::Mistral => ModelId::MistralLarge3,
41            Provider::DeepSeek => ModelId::DeepSeekV4Pro,
42            Provider::HuggingFace => ModelId::HuggingFaceOpenAIGptOss120b,
43            Provider::Moonshot => ModelId::MoonshotKimiK26,
44            Provider::OpenRouter => ModelId::OpenRouterQwen3Coder,
45            Provider::Ollama => ModelId::OllamaGptOss20b,
46            Provider::LmStudio => ModelId::GPT5,
47            Provider::ZAI => ModelId::ZaiGlm5,
48            Provider::OpenCodeZen => ModelId::OpenCodeZenGPT54,
49            Provider::OpenCodeGo => ModelId::OpenCodeGoKimiK25,
50            Provider::Qwen => ModelId::Qwen37Max,
51        }
52    }
53
54    /// Get provider-specific defaults for single agent
55    pub fn default_single_for_provider(provider: Provider) -> Self {
56        match provider {
57            Provider::Gemini => ModelId::Gemini3FlashPreview,
58            Provider::OpenAI => ModelId::GPT5,
59            Provider::Anthropic => ModelId::ClaudeOpus47,
60            Provider::Copilot => ModelId::CopilotAuto,
61            Provider::Minimax => ModelId::MinimaxM27,
62            Provider::MiMo => ModelId::MiMoV25Pro,
63            Provider::Mistral => ModelId::MistralLarge3,
64            Provider::DeepSeek => ModelId::DeepSeekV4Pro,
65            Provider::HuggingFace => ModelId::HuggingFaceOpenAIGptOss120b,
66            Provider::Moonshot => ModelId::MoonshotKimiK26,
67            Provider::OpenRouter => ModelId::OpenRouterQwen3Coder,
68            Provider::Ollama => ModelId::OllamaGptOss20b,
69            Provider::LmStudio => ModelId::GPT5,
70            Provider::ZAI => ModelId::ZaiGlm5,
71            Provider::OpenCodeZen => ModelId::OpenCodeZenGPT54,
72            Provider::OpenCodeGo => ModelId::OpenCodeGoKimiK25,
73            Provider::Qwen => ModelId::Qwen36Plus,
74        }
75    }
76}