Skip to main content

vtcode_config/models/model_id/
as_str.rs

1use super::ModelId;
2
3impl ModelId {
4    /// Convert the model identifier to its string representation
5    /// used in API calls and configurations
6    pub fn as_str(&self) -> &'static str {
7        use crate::constants::models;
8        if let Some(meta) = self.openrouter_metadata() {
9            return meta.id;
10        }
11        match self {
12            // Gemini models
13            ModelId::Gemini25FlashPreview => models::GEMINI_2_5_FLASH_PREVIEW,
14            ModelId::Gemini25Flash => models::GEMINI_2_5_FLASH,
15            ModelId::Gemini25FlashLite => models::GEMINI_2_5_FLASH_LITE,
16            ModelId::Gemini25Pro => models::GEMINI_2_5_PRO,
17            ModelId::Gemini3ProPreview => models::GEMINI_3_PRO_PREVIEW,
18            // OpenAI models
19            ModelId::GPT5 => models::GPT_5,
20            ModelId::GPT5Codex => models::GPT_5_CODEX,
21            ModelId::GPT5Mini => models::GPT_5_MINI,
22            ModelId::GPT5Nano => models::GPT_5_NANO,
23            ModelId::CodexMiniLatest => models::CODEX_MINI_LATEST,
24            ModelId::OpenAIGptOss20b => models::openai::GPT_OSS_20B,
25            ModelId::OpenAIGptOss120b => models::openai::GPT_OSS_120B,
26            // Anthropic models
27            ModelId::ClaudeOpus45 => models::CLAUDE_OPUS_4_5,
28            ModelId::ClaudeOpus41 => models::CLAUDE_OPUS_4_1,
29            ModelId::ClaudeSonnet45 => models::CLAUDE_SONNET_4_5,
30            ModelId::ClaudeHaiku45 => models::CLAUDE_HAIKU_4_5,
31            ModelId::ClaudeSonnet4 => models::CLAUDE_SONNET_4_5_20250929,
32            // DeepSeek models
33            ModelId::DeepSeekChat => models::DEEPSEEK_CHAT,
34            ModelId::DeepSeekReasoner => models::DEEPSEEK_REASONER,
35            // xAI models
36            ModelId::XaiGrok4 => models::xai::GROK_4,
37            ModelId::XaiGrok4Mini => models::xai::GROK_4_MINI,
38            ModelId::XaiGrok4Code => models::xai::GROK_4_CODE,
39            ModelId::XaiGrok4CodeLatest => models::xai::GROK_4_CODE_LATEST,
40            ModelId::XaiGrok4Vision => models::xai::GROK_4_VISION,
41            // Z.AI models
42            ModelId::ZaiGlm4Plus => models::zai::GLM_4_PLUS,
43            ModelId::ZaiGlm4PlusDeepThinking => models::zai::GLM_4_PLUS_DEEP_THINKING,
44            ModelId::ZaiGlm47 => models::zai::GLM_4_7,
45            ModelId::ZaiGlm47DeepThinking => models::zai::GLM_4_7_DEEP_THINKING,
46            ModelId::ZaiGlm47Flash => models::zai::GLM_4_7_FLASH,
47            ModelId::ZaiGlm46 => models::zai::GLM_4_6,
48            ModelId::ZaiGlm46DeepThinking => models::zai::GLM_4_6_DEEP_THINKING,
49            ModelId::ZaiGlm46V => models::zai::GLM_4_6V,
50            ModelId::ZaiGlm46VFlash => models::zai::GLM_4_6V_FLASH,
51            ModelId::ZaiGlm46VFlashX => models::zai::GLM_4_6V_FLASHX,
52            ModelId::ZaiGlm45 => models::zai::GLM_4_5,
53            ModelId::ZaiGlm45DeepThinking => models::zai::GLM_4_5_DEEP_THINKING,
54            ModelId::ZaiGlm45Air => models::zai::GLM_4_5_AIR,
55            ModelId::ZaiGlm45X => models::zai::GLM_4_5_X,
56            ModelId::ZaiGlm45Airx => models::zai::GLM_4_5_AIRX,
57            ModelId::ZaiGlm45Flash => models::zai::GLM_4_5_FLASH,
58            ModelId::ZaiGlm45V => models::zai::GLM_4_5V,
59            ModelId::ZaiGlm432b0414128k => models::zai::GLM_4_32B_0414_128K,
60            // Ollama models
61            ModelId::OllamaGptOss20b => models::ollama::GPT_OSS_20B,
62            ModelId::OllamaGptOss20bCloud => models::ollama::GPT_OSS_20B_CLOUD,
63            ModelId::OllamaGptOss120bCloud => models::ollama::GPT_OSS_120B_CLOUD,
64            ModelId::OllamaQwen317b => models::ollama::QWEN3_1_7B,
65            ModelId::OllamaDeepseekV32Cloud => models::ollama::DEEPSEEK_V32_CLOUD,
66            ModelId::OllamaQwen3Next80bCloud => models::ollama::QWEN3_NEXT_80B_CLOUD,
67            ModelId::OllamaMistralLarge3675bCloud => models::ollama::MISTRAL_LARGE_3_675B_CLOUD,
68            ModelId::OllamaKimiK2ThinkingCloud => models::ollama::KIMI_K2_THINKING_CLOUD,
69            ModelId::OllamaGlm47Cloud => models::ollama::GLM_47_CLOUD,
70            ModelId::OllamaMinimaxM21Cloud => models::ollama::MINIMAX_M21_CLOUD,
71            ModelId::OllamaGemini3FlashPreviewCloud => models::ollama::GEMINI_3_FLASH_PREVIEW_CLOUD,
72            ModelId::OllamaQwen3Coder480bCloud => models::ollama::QWEN3_CODER_480B_CLOUD,
73            ModelId::OllamaGlm46Cloud => models::ollama::GLM_46_CLOUD,
74            ModelId::OllamaGemini3ProPreviewLatestCloud => {
75                models::ollama::GEMINI_3_PRO_PREVIEW_LATEST_CLOUD
76            }
77            ModelId::OllamaDevstral2123bCloud => models::ollama::DEVSTRAL_2_123B_CLOUD,
78            ModelId::OllamaMinimaxM2Cloud => models::ollama::MINIMAX_M2_CLOUD,
79            ModelId::OllamaNemotron3Nano30bCloud => models::ollama::NEMOTRON_3_NANO_30B_CLOUD,
80            // LM Studio models
81            ModelId::LmStudioMetaLlama38BInstruct => models::lmstudio::META_LLAMA_3_8B_INSTRUCT,
82            ModelId::LmStudioMetaLlama318BInstruct => models::lmstudio::META_LLAMA_31_8B_INSTRUCT,
83            ModelId::LmStudioQwen257BInstruct => models::lmstudio::QWEN25_7B_INSTRUCT,
84            ModelId::LmStudioGemma22BIt => models::lmstudio::GEMMA_2_2B_IT,
85            ModelId::LmStudioGemma29BIt => models::lmstudio::GEMMA_2_9B_IT,
86            ModelId::LmStudioPhi31Mini4kInstruct => models::lmstudio::PHI_31_MINI_4K_INSTRUCT,
87            // Hugging Face models
88            ModelId::HuggingFaceDeepseekV32 => models::huggingface::DEEPSEEK_V32,
89            ModelId::HuggingFaceOpenAIGptOss20b => models::huggingface::OPENAI_GPT_OSS_20B,
90            ModelId::HuggingFaceOpenAIGptOss120b => models::huggingface::OPENAI_GPT_OSS_120B,
91            ModelId::HuggingFaceGlm47 => models::huggingface::ZAI_GLM_47,
92            ModelId::HuggingFaceGlm47FlashNovita => models::huggingface::ZAI_GLM_47_FLASH_NOVITA,
93            ModelId::HuggingFaceKimiK2Thinking => models::huggingface::MOONSHOT_KIMI_K2_THINKING,
94            ModelId::HuggingFaceMinimaxM21Novita => models::huggingface::MINIMAX_M2_1_NOVITA,
95            ModelId::HuggingFaceDeepseekV32Novita => models::huggingface::DEEPSEEK_V32_NOVITA,
96            ModelId::HuggingFaceXiaomiMimoV2FlashNovita => {
97                models::huggingface::XIAOMI_MIMO_V2_FLASH_NOVITA
98            }
99            // MiniMax models
100            ModelId::MinimaxM21 => models::minimax::MINIMAX_M2_1,
101            ModelId::MinimaxM21Lightning => models::minimax::MINIMAX_M2_1_LIGHTNING,
102            ModelId::MinimaxM2 => models::minimax::MINIMAX_M2,
103            // OpenRouter models
104            _ => unreachable!(),
105        }
106    }
107}