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::Gemini3FlashPreview => models::GEMINI_3_FLASH_PREVIEW,
17            // OpenAI models
18            ModelId::GPT => models::GPT,
19            ModelId::GPT5 => models::GPT_5,
20            ModelId::GPT52 => models::GPT_5_2,
21            ModelId::GPT54 => models::GPT_5_4,
22            ModelId::GPT54Pro => models::GPT_5_4_PRO,
23            ModelId::GPT5Mini => models::GPT_5_MINI,
24            ModelId::GPT5Nano => models::GPT_5_NANO,
25            ModelId::GPT53Codex => models::openai::GPT_5_3_CODEX,
26            ModelId::OpenAIGptOss20b => models::openai::GPT_OSS_20B,
27            ModelId::OpenAIGptOss120b => models::openai::GPT_OSS_120B,
28            // Anthropic models
29            ModelId::ClaudeOpus46 => models::CLAUDE_OPUS_4_6,
30            ModelId::ClaudeSonnet46 => models::CLAUDE_SONNET_4_6,
31            ModelId::ClaudeHaiku45 => models::CLAUDE_HAIKU_4_5,
32            // DeepSeek models
33            ModelId::DeepSeekChat => models::DEEPSEEK_CHAT,
34            ModelId::DeepSeekReasoner => models::DEEPSEEK_REASONER,
35            // Z.AI models
36            ModelId::ZaiGlm5 => models::zai::GLM_5,
37            // Moonshot models
38            ModelId::MoonshotKimiK25 => models::moonshot::KIMI_K2_5,
39            // Ollama models
40            ModelId::OllamaGptOss20b => models::ollama::GPT_OSS_20B,
41            ModelId::OllamaGptOss20bCloud => models::ollama::GPT_OSS_20B_CLOUD,
42            ModelId::OllamaGptOss120bCloud => models::ollama::GPT_OSS_120B_CLOUD,
43            ModelId::OllamaQwen317b => models::ollama::QWEN3_1_7B,
44            ModelId::OllamaQwen3CoderNext => models::ollama::QWEN3_CODER_NEXT,
45            ModelId::OllamaDeepseekV32Cloud => models::ollama::DEEPSEEK_V32_CLOUD,
46            ModelId::OllamaQwen3Next80bCloud => models::ollama::QWEN3_NEXT_80B_CLOUD,
47            ModelId::OllamaGlm5Cloud => models::ollama::GLM_5_CLOUD,
48            ModelId::OllamaGemini3FlashPreviewCloud => models::ollama::GEMINI_3_FLASH_PREVIEW_CLOUD,
49            ModelId::OllamaMinimaxM2Cloud => models::ollama::MINIMAX_M2_CLOUD,
50            ModelId::OllamaMinimaxM25Cloud => models::ollama::MINIMAX_M25_CLOUD,
51            ModelId::OllamaNemotron3SuperCloud => models::ollama::NEMOTRON_3_SUPER_CLOUD,
52            // Hugging Face models
53            ModelId::HuggingFaceDeepseekV32 => models::huggingface::DEEPSEEK_V32,
54            ModelId::HuggingFaceOpenAIGptOss20b => models::huggingface::OPENAI_GPT_OSS_20B,
55            ModelId::HuggingFaceOpenAIGptOss120b => models::huggingface::OPENAI_GPT_OSS_120B,
56            ModelId::HuggingFaceMinimaxM25Novita => models::huggingface::MINIMAX_M2_5_NOVITA,
57            ModelId::HuggingFaceDeepseekV32Novita => models::huggingface::DEEPSEEK_V32_NOVITA,
58            ModelId::HuggingFaceXiaomiMimoV2FlashNovita => {
59                models::huggingface::XIAOMI_MIMO_V2_FLASH_NOVITA
60            }
61            ModelId::HuggingFaceGlm5Novita => models::huggingface::ZAI_GLM_5_NOVITA,
62            ModelId::HuggingFaceQwen3CoderNextNovita => {
63                models::huggingface::QWEN3_CODER_NEXT_NOVITA
64            }
65            ModelId::HuggingFaceQwen35397BA17BTogether => {
66                models::huggingface::QWEN3_5_397B_A17B_TOGETHER
67            }
68            ModelId::HuggingFaceStep35Flash => models::huggingface::STEP_3_5_FLASH,
69            // MiniMax models
70            ModelId::MinimaxM25 => models::minimax::MINIMAX_M2_5,
71            // OpenRouter models
72            ModelId::OpenRouterMinimaxM25 => "minimax/minimax-m2.5",
73            ModelId::OpenRouterQwen3CoderNext => "qwen/qwen3-coder-next",
74            _ => unreachable!(),
75        }
76    }
77}