Skip to main content

vtcode_config/constants/models/
evolink.rs

1// Evolink models (OpenAI-compatible multi-model gateway)
2// https://docs.evolink.ai/llms.txt
3//
4// Evolink is an aggregator that exposes many upstream models behind a single
5// gateway. GPT/DeepSeek/Doubao models use the OpenAI Chat Completions format
6// at `/v1/chat/completions`; Claude models use the Anthropic Messages format
7// at `/v1/messages`. Bare model names collide with VT Code's first-class
8// providers, so curated `ModelId` catalog entries are namespaced with an
9// `evolink/` prefix; the provider strips that prefix before sending upstream.
10
11// --- OpenAI-compatible models (Chat Completions API) ---
12pub const GPT_5_2: &str = "gpt-5.2";
13pub const GPT_5_5: &str = "gpt-5.5";
14pub const DEEPSEEK_V4_PRO: &str = "deepseek-v4-pro";
15pub const DEEPSEEK_V4_FLASH: &str = "deepseek-v4-flash";
16pub const DOUBAO_SEED_2_0_PRO: &str = "doubao-seed-2.0-pro";
17pub const GEMINI_3_1_PRO: &str = "gemini-3.1-pro-preview";
18pub const GEMINI_3_5_FLASH: &str = "gemini-3.5-flash";
19pub const MINIMAX_M3: &str = "MiniMax-M3";
20
21// --- Anthropic-compatible models (Messages API) ---
22pub const CLAUDE_SONNET_4_6: &str = "claude-sonnet-4-6";
23pub const CLAUDE_OPUS_4_8: &str = "claude-opus-4-8";
24pub const CLAUDE_HAIKU_4_5: &str = "claude-haiku-4-5-20251001";
25
26pub const DEFAULT_MODEL: &str = GPT_5_2;
27
28/// Curated models VT Code exposes in config flows and `ModelId` metadata.
29pub const SUPPORTED_MODELS: &[&str] = &[
30    GPT_5_2,
31    GPT_5_5,
32    DEEPSEEK_V4_PRO,
33    DEEPSEEK_V4_FLASH,
34    DOUBAO_SEED_2_0_PRO,
35    GEMINI_3_1_PRO,
36    GEMINI_3_5_FLASH,
37    MINIMAX_M3,
38    CLAUDE_SONNET_4_6,
39    CLAUDE_OPUS_4_8,
40    CLAUDE_HAIKU_4_5,
41];
42
43/// Models that use the Anthropic Messages API instead of OpenAI Chat Completions.
44pub const ANTHROPIC_FORMAT_MODELS: &[&str] =
45    &[CLAUDE_SONNET_4_6, CLAUDE_OPUS_4_8, CLAUDE_HAIKU_4_5];
46
47/// Models that emit reasoning traces / accept `reasoning_effort`.
48pub const REASONING_MODELS: &[&str] = &[DEEPSEEK_V4_PRO, DEEPSEEK_V4_FLASH, DOUBAO_SEED_2_0_PRO];
49
50/// Returns `true` if the model should use the Anthropic Messages API format.
51pub fn is_anthropic_format(model: &str) -> bool {
52    ANTHROPIC_FORMAT_MODELS.contains(&model)
53}