vtcode_config/models/model_id/
as_str.rs1use super::ModelId;
2
3impl ModelId {
4 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 ModelId::Gemini3ProPreview => models::GEMINI_3_PRO_PREVIEW,
14 ModelId::Gemini3FlashPreview => models::GEMINI_3_FLASH_PREVIEW,
15 ModelId::GPT5 => models::GPT_5,
17 ModelId::GPT52 => models::GPT_5_2,
18 ModelId::GPT52Codex => models::openai::GPT_5_2_CODEX,
19 ModelId::GPT5Codex => models::GPT_5_CODEX,
20 ModelId::GPT5Mini => models::GPT_5_MINI,
21 ModelId::GPT5Nano => models::GPT_5_NANO,
22 ModelId::GPT51 => models::GPT_5_1,
23 ModelId::GPT51Codex => models::GPT_5_1_CODEX,
24 ModelId::GPT51CodexMax => models::GPT_5_1_CODEX_MAX,
25 ModelId::GPT51Mini => models::GPT_5_1_MINI,
26 ModelId::CodexMiniLatest => models::CODEX_MINI_LATEST,
27 ModelId::OpenAIGptOss20b => models::openai::GPT_OSS_20B,
28 ModelId::OpenAIGptOss120b => models::openai::GPT_OSS_120B,
29 ModelId::ClaudeOpus46 => models::CLAUDE_OPUS_4_6,
31 ModelId::ClaudeOpus45 => models::CLAUDE_OPUS_4_5,
32 ModelId::ClaudeOpus41 => models::CLAUDE_OPUS_4_1,
33 ModelId::ClaudeSonnet45 => models::CLAUDE_SONNET_4_5,
34 ModelId::ClaudeHaiku45 => models::CLAUDE_HAIKU_4_5,
35 ModelId::ClaudeSonnet4 => models::CLAUDE_SONNET_4_5_20250929,
36 ModelId::ClaudeOpus4 => models::CLAUDE_OPUS_4_0,
37 ModelId::ClaudeSonnet37 => models::CLAUDE_3_7_SONNET_LATEST,
38 ModelId::ClaudeHaiku35 => models::CLAUDE_3_5_HAIKU_LATEST,
39 ModelId::DeepSeekChat => models::DEEPSEEK_CHAT,
41 ModelId::DeepSeekReasoner => models::DEEPSEEK_REASONER,
42 ModelId::XaiGrok4 => models::xai::GROK_4,
44 ModelId::XaiGrok4Mini => models::xai::GROK_4_MINI,
45 ModelId::XaiGrok4Code => models::xai::GROK_4_CODE,
46 ModelId::XaiGrok4CodeLatest => models::xai::GROK_4_CODE_LATEST,
47 ModelId::XaiGrok4Vision => models::xai::GROK_4_VISION,
48 ModelId::ZaiGlm5 => models::zai::GLM_5,
50 ModelId::MoonshotMinimaxM25 => models::moonshot::MINIMAX_M2_5,
52 ModelId::MoonshotQwen3CoderNext => models::moonshot::QWEN3_CODER_NEXT,
53 ModelId::OllamaGptOss20b => models::ollama::GPT_OSS_20B,
55 ModelId::OllamaGptOss20bCloud => models::ollama::GPT_OSS_20B_CLOUD,
56 ModelId::OllamaGptOss120bCloud => models::ollama::GPT_OSS_120B_CLOUD,
57 ModelId::OllamaQwen317b => models::ollama::QWEN3_1_7B,
58 ModelId::OllamaDeepseekV32Cloud => models::ollama::DEEPSEEK_V32_CLOUD,
59 ModelId::OllamaQwen3Next80bCloud => models::ollama::QWEN3_NEXT_80B_CLOUD,
60 ModelId::OllamaMistralLarge3675bCloud => models::ollama::MISTRAL_LARGE_3_675B_CLOUD,
61 ModelId::OllamaGlm5Cloud => models::ollama::GLM_5_CLOUD,
62 ModelId::OllamaMinimaxM25Cloud => models::ollama::MINIMAX_M25_CLOUD,
63 ModelId::OllamaGemini3FlashPreviewCloud => models::ollama::GEMINI_3_FLASH_PREVIEW_CLOUD,
64 ModelId::OllamaQwen3Coder480bCloud => models::ollama::QWEN3_CODER_480B_CLOUD,
65 ModelId::OllamaGemini3ProPreviewLatestCloud => {
66 models::ollama::GEMINI_3_PRO_PREVIEW_LATEST_CLOUD
67 }
68 ModelId::OllamaDevstral2123bCloud => models::ollama::DEVSTRAL_2_123B_CLOUD,
69 ModelId::OllamaMinimaxM2Cloud => models::ollama::MINIMAX_M2_CLOUD,
70 ModelId::OllamaNemotron3Nano30bCloud => models::ollama::NEMOTRON_3_NANO_30B_CLOUD,
71 ModelId::LmStudioMetaLlama38BInstruct => models::lmstudio::META_LLAMA_3_8B_INSTRUCT,
73 ModelId::LmStudioMetaLlama318BInstruct => models::lmstudio::META_LLAMA_31_8B_INSTRUCT,
74 ModelId::LmStudioQwen257BInstruct => models::lmstudio::QWEN25_7B_INSTRUCT,
75 ModelId::LmStudioGemma22BIt => models::lmstudio::GEMMA_2_2B_IT,
76 ModelId::LmStudioGemma29BIt => models::lmstudio::GEMMA_2_9B_IT,
77 ModelId::LmStudioPhi31Mini4kInstruct => models::lmstudio::PHI_31_MINI_4K_INSTRUCT,
78 ModelId::HuggingFaceDeepseekV32 => models::huggingface::DEEPSEEK_V32,
80 ModelId::HuggingFaceOpenAIGptOss20b => models::huggingface::OPENAI_GPT_OSS_20B,
81 ModelId::HuggingFaceOpenAIGptOss120b => models::huggingface::OPENAI_GPT_OSS_120B,
82 ModelId::HuggingFaceMinimaxM25Novita => models::huggingface::MINIMAX_M2_5_NOVITA,
83 ModelId::HuggingFaceDeepseekV32Novita => models::huggingface::DEEPSEEK_V32_NOVITA,
84 ModelId::HuggingFaceXiaomiMimoV2FlashNovita => {
85 models::huggingface::XIAOMI_MIMO_V2_FLASH_NOVITA
86 }
87 ModelId::HuggingFaceGlm5Novita => models::huggingface::ZAI_GLM_5_NOVITA,
88 ModelId::HuggingFaceQwen3CoderNextNovita => {
89 models::huggingface::QWEN3_CODER_NEXT_NOVITA
90 }
91 ModelId::MinimaxM25 => models::minimax::MINIMAX_M2_5,
93 ModelId::MinimaxM2 => models::minimax::MINIMAX_M2,
94 ModelId::OpenRouterMinimaxM25 => "minimax/minimax-m2.5",
96 ModelId::OpenRouterQwen3CoderNext => "qwen/qwen3-coder-next",
97 _ => unreachable!(),
98 }
99 }
100}