vtcode_config/models/model_id/
defaults.rs1use crate::models::Provider;
2
3use super::ModelId;
4
5impl ModelId {
6 pub fn fallback_models() -> Vec<ModelId> {
8 vec![
9 ModelId::Gemini3FlashPreview,
10 ModelId::GPT52,
11 ModelId::GPT5,
12 ModelId::OpenAIGptOss20b,
13 ModelId::ClaudeOpus46,
14 ModelId::ClaudeSonnet46,
15 ModelId::DeepSeekReasoner,
16 ModelId::ZaiGlm5,
17 ]
18 }
19
20 pub fn default_model() -> Self {
22 ModelId::Gemini3FlashPreview
23 }
24
25 pub fn default_orchestrator() -> Self {
27 ModelId::Gemini31ProPreview
28 }
29
30 pub fn default_orchestrator_for_provider(provider: Provider) -> Self {
32 match provider {
33 Provider::Gemini => ModelId::Gemini31ProPreview,
34 Provider::OpenAI => ModelId::GPT5,
35 Provider::Anthropic => ModelId::ClaudeOpus46,
36 Provider::Minimax => ModelId::MinimaxM25,
37 Provider::DeepSeek => ModelId::DeepSeekReasoner,
38 Provider::HuggingFace => ModelId::HuggingFaceOpenAIGptOss120b,
39 Provider::Moonshot => ModelId::Gemini31ProPreview,
40 Provider::OpenRouter => ModelId::OpenRouterQwen3Coder,
41 Provider::Ollama => ModelId::OllamaGptOss20b,
42 Provider::LmStudio => ModelId::GPT5,
43 Provider::ZAI => ModelId::ZaiGlm5,
44 }
45 }
46
47 pub fn default_single_for_provider(provider: Provider) -> Self {
49 match provider {
50 Provider::Gemini => ModelId::Gemini3FlashPreview,
51 Provider::OpenAI => ModelId::GPT5,
52 Provider::Anthropic => ModelId::ClaudeOpus46,
53 Provider::Minimax => ModelId::MinimaxM25,
54 Provider::DeepSeek => ModelId::DeepSeekReasoner,
55 Provider::HuggingFace => ModelId::HuggingFaceOpenAIGptOss120b,
56 Provider::Moonshot => ModelId::Gemini3FlashPreview,
57 Provider::OpenRouter => ModelId::OpenRouterQwen3Coder,
58 Provider::Ollama => ModelId::OllamaGptOss20b,
59 Provider::LmStudio => ModelId::GPT5,
60 Provider::ZAI => ModelId::ZaiGlm5,
61 }
62 }
63}