walrus_core/model/limits.rs
1//! Default context limits for known model families.
2//!
3//! Provides a static map from model ID prefixes to context window sizes.
4//! Used by the model registry for per-model context limit resolution.
5
6/// Returns the default context limit (in tokens) for a known model ID.
7///
8/// Uses prefix matching against known model families. Unknown models
9/// return 8192 as a conservative default.
10pub fn default_context_limit(model_id: &str) -> usize {
11 // Claude family
12 if model_id.starts_with("claude-") {
13 return 200_000;
14 }
15 // GPT-4o / GPT-4-turbo family
16 if model_id.starts_with("gpt-4o") || model_id.starts_with("gpt-4-turbo") {
17 return 128_000;
18 }
19 // GPT-4 (non-turbo)
20 if model_id.starts_with("gpt-4") {
21 return 8_192;
22 }
23 // GPT-3.5
24 if model_id.starts_with("gpt-3.5") {
25 return 16_385;
26 }
27 // OpenAI o-series (o1, o3, o4)
28 if model_id.starts_with("o1") || model_id.starts_with("o3") || model_id.starts_with("o4") {
29 return 200_000;
30 }
31 // Grok family
32 if model_id.starts_with("grok-") {
33 return 131_072;
34 }
35 // DeepSeek family
36 if model_id.starts_with("deepseek-") {
37 return 64_000;
38 }
39 // Qwen family
40 if model_id.starts_with("qwen-") || model_id.starts_with("qwq-") {
41 return 32_768;
42 }
43 // Kimi / Moonshot family
44 if model_id.starts_with("kimi-") || model_id.starts_with("moonshot-") {
45 return 128_000;
46 }
47 // Unknown model — conservative default
48 8_192
49}