Skip to main content

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}