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::Gemini31ProPreview => models::GEMINI_3_1_PRO_PREVIEW,
14            ModelId::Gemini31ProPreviewCustomTools => models::GEMINI_3_1_PRO_PREVIEW_CUSTOMTOOLS,
15            ModelId::Gemini31FlashLitePreview => models::GEMINI_3_1_FLASH_LITE_PREVIEW,
16            ModelId::Gemini35Flash => models::GEMINI_3_5_FLASH,
17            ModelId::Gemini3FlashPreview => models::GEMINI_3_FLASH_PREVIEW,
18            // OpenAI models
19            ModelId::GPT55 => models::openai::GPT_5_5,
20            ModelId::GPT5 => models::GPT_5,
21            ModelId::GPT52 => models::GPT_5_2,
22            ModelId::GPT52Codex => models::openai::GPT_5_2_CODEX,
23            ModelId::GPT54 => models::GPT_5_4,
24            ModelId::GPT54Pro => models::GPT_5_4_PRO,
25            ModelId::GPT54Nano => models::openai::GPT_5_4_NANO,
26            ModelId::GPT54Mini => models::openai::GPT_5_4_MINI,
27            ModelId::GPT53Codex => models::openai::GPT_5_3_CODEX,
28            ModelId::GPT51Codex => models::openai::GPT_5_1_CODEX,
29            ModelId::GPT51CodexMax => models::openai::GPT_5_1_CODEX_MAX,
30            ModelId::GPT5Mini => models::GPT_5_MINI,
31            ModelId::GPT5Nano => models::GPT_5_NANO,
32            ModelId::GPT5Codex => models::openai::GPT_5_CODEX,
33            ModelId::OpenAIGptOss20b => models::openai::GPT_OSS_20B,
34            ModelId::OpenAIGptOss120b => models::openai::GPT_OSS_120B,
35            // Anthropic models
36            ModelId::ClaudeOpus48 => models::CLAUDE_OPUS_4_8,
37            ModelId::ClaudeOpus47 => models::CLAUDE_OPUS_4_7,
38            ModelId::ClaudeOpus46 => models::CLAUDE_OPUS_4_6,
39            ModelId::ClaudeSonnet46 => models::CLAUDE_SONNET_4_6,
40            ModelId::ClaudeHaiku45 => models::CLAUDE_HAIKU_4_5,
41            ModelId::ClaudeMythosPreview => models::CLAUDE_MYTHOS_PREVIEW,
42            ModelId::CopilotAuto => models::copilot::AUTO,
43            ModelId::CopilotGPT52Codex => models::copilot::GPT_5_2_CODEX,
44            ModelId::CopilotGPT51CodexMax => models::copilot::GPT_5_1_CODEX_MAX,
45            ModelId::CopilotGPT54 => models::copilot::GPT_5_4,
46            ModelId::CopilotGPT54Mini => models::copilot::GPT_5_4_MINI,
47            ModelId::CopilotClaudeSonnet46 => models::copilot::CLAUDE_SONNET_4_6,
48            // DeepSeek models
49            ModelId::DeepSeekV4Pro => models::deepseek::DEEPSEEK_V4_PRO,
50            ModelId::DeepSeekV4Flash => models::deepseek::DEEPSEEK_V4_FLASH,
51            // Mistral models
52            ModelId::MistralLarge3 => models::mistral::MISTRAL_LARGE_3,
53            // MiMo models
54            ModelId::MiMoV25Pro => models::mimo::MIMO_V2_5_PRO,
55            ModelId::MiMoV25 => models::mimo::MIMO_V2_5,
56            ModelId::MiMoV2Flash => models::mimo::MIMO_V2_FLASH,
57            // Z.AI models
58            ModelId::ZaiGlm5 => models::zai::GLM_5,
59            ModelId::ZaiGlm51 => models::zai::GLM_5_1,
60            // Moonshot models
61            ModelId::MoonshotKimiK26 => models::moonshot::KIMI_K2_6,
62            ModelId::MoonshotKimiK25 => models::moonshot::KIMI_K2_5,
63            // OpenCode Zen models
64            ModelId::OpenCodeZenGPT54 => models::opencode_zen::GPT_5_4,
65            ModelId::OpenCodeZenGPT54Mini => models::opencode_zen::GPT_5_4_MINI,
66            ModelId::OpenCodeZenClaudeSonnet46 => models::opencode_zen::CLAUDE_SONNET_4_6,
67            ModelId::OpenCodeZenGlm51 => models::opencode_zen::GLM_5_1,
68            ModelId::OpenCodeZenKimiK25 => models::opencode_zen::KIMI_K2_5,
69            // OpenCode Go models
70            ModelId::OpenCodeGoGlm51 => models::opencode_go::GLM_5_1,
71            ModelId::OpenCodeGoKimiK25 => models::opencode_go::KIMI_K2_5,
72            ModelId::OpenCodeGoMinimaxM25 => models::opencode_go::MINIMAX_M2_5,
73            ModelId::OpenCodeGoMinimaxM27 => models::opencode_go::MINIMAX_M2_7,
74            // Ollama models
75            ModelId::OllamaGptOss20b => models::ollama::GPT_OSS_20B,
76            ModelId::OllamaGptOss20bCloud => models::ollama::GPT_OSS_20B_CLOUD,
77            ModelId::OllamaGptOss120bCloud => models::ollama::GPT_OSS_120B_CLOUD,
78            ModelId::OllamaQwen317b => models::ollama::QWEN3_1_7B,
79            ModelId::OllamaQwen3CoderNext => models::ollama::QWEN3_CODER_NEXT,
80            ModelId::OllamaDeepseekV32Cloud => models::ollama::DEEPSEEK_V32_CLOUD,
81            ModelId::OllamaDeepseekV4FlashCloud => models::ollama::DEEPSEEK_V4_FLASH_CLOUD,
82            ModelId::OllamaDeepseekV4ProCloud => models::ollama::DEEPSEEK_V4_PRO_CLOUD,
83            ModelId::OllamaQwen3Next80bCloud => models::ollama::QWEN3_NEXT_80B_CLOUD,
84            ModelId::OllamaGlm5Cloud => models::ollama::GLM_5_CLOUD,
85            ModelId::OllamaGlm51Cloud => models::ollama::GLM_5_1_CLOUD,
86            ModelId::OllamaGemini3FlashPreviewCloud => models::ollama::GEMINI_3_FLASH_PREVIEW_CLOUD,
87            ModelId::OllamaMinimaxM2Cloud => models::ollama::MINIMAX_M2_CLOUD,
88            ModelId::OllamaMinimaxM27Cloud => models::ollama::MINIMAX_M27_CLOUD,
89            ModelId::OllamaMinimaxM25Cloud => models::ollama::MINIMAX_M25_CLOUD,
90            ModelId::OllamaKimiK26Cloud => models::ollama::KIMI_K2_6_CLOUD,
91            ModelId::OllamaNemotron3SuperCloud => models::ollama::NEMOTRON_3_SUPER_CLOUD,
92            ModelId::OllamaLagunaXs2 => models::ollama::LAGUNA_XS_2,
93            // Hugging Face models
94            ModelId::HuggingFaceDeepseekV32 => models::huggingface::DEEPSEEK_V32,
95            ModelId::HuggingFaceOpenAIGptOss20b => models::huggingface::OPENAI_GPT_OSS_20B,
96            ModelId::HuggingFaceOpenAIGptOss120b => models::huggingface::OPENAI_GPT_OSS_120B,
97            ModelId::HuggingFaceMinimaxM25Novita => models::huggingface::MINIMAX_M2_5_NOVITA,
98            ModelId::HuggingFaceDeepseekV32Novita => models::huggingface::DEEPSEEK_V32_NOVITA,
99            ModelId::HuggingFaceXiaomiMimoV2FlashNovita => {
100                models::huggingface::XIAOMI_MIMO_V2_FLASH_NOVITA
101            }
102            ModelId::HuggingFaceGlm5Novita => models::huggingface::ZAI_GLM_5_NOVITA,
103            ModelId::HuggingFaceGlm51ZaiOrg => models::huggingface::ZAI_GLM_5_1_ZAI_ORG,
104            ModelId::HuggingFaceQwen3CoderNextNovita => {
105                models::huggingface::QWEN3_CODER_NEXT_NOVITA
106            }
107            ModelId::HuggingFaceQwen35397BA17BTogether => {
108                models::huggingface::QWEN3_5_397B_A17B_TOGETHER
109            }
110            ModelId::HuggingFaceKimiK26Novita => models::huggingface::KIMI_K2_6_NOVITA,
111            ModelId::HuggingFaceDeepseekV4FlashNovita => {
112                models::huggingface::DEEPSEEK_V4_FLASH_NOVITA
113            }
114            ModelId::HuggingFaceDeepseekV4ProTogether => {
115                models::huggingface::DEEPSEEK_V4_PRO_TOGETHER
116            }
117            ModelId::HuggingFaceStep35Flash => models::huggingface::STEP_3_5_FLASH,
118            ModelId::StepFun37Flash => models::stepfun::STEP_3_7_FLASH,
119            // Qwen models
120            ModelId::Qwen37Max => models::qwen::QWEN3_7_MAX,
121            ModelId::Qwen36Flash => models::qwen::QWEN3_6_FLASH,
122            ModelId::Qwen36Plus => models::qwen::QWEN3_6_PLUS,
123            ModelId::QwenDeepSeekV4Flash => models::qwen::DEEPSEEK_V4_FLASH,
124            ModelId::QwenDeepSeekV4Pro => models::qwen::DEEPSEEK_V4_PRO,
125            ModelId::QwenGlm51 => models::qwen::GLM_5_1,
126            // MiniMax models
127            ModelId::MinimaxM27 => models::minimax::MINIMAX_M2_7,
128            ModelId::MinimaxM25 => models::minimax::MINIMAX_M2_5,
129            // Poolside models
130            ModelId::PoolsideLagunaM1 => models::poolside::LAGUNA_M1,
131            ModelId::PoolsideLagunaXs2 => models::poolside::LAGUNA_XS2,
132            // OpenRouter models
133            ModelId::OpenRouterMinimaxM25 => "minimax/minimax-m2.5",
134            ModelId::OpenRouterQwen3CoderNext => "qwen/qwen3-coder-next",
135            ModelId::OpenRouterMoonshotaiKimiK26 => "moonshotai/kimi-k2.6",
136            _ => unreachable!(),
137        }
138    }
139}