@@ -17,21 +17,40 @@ const MODEL_CONTEXT: Record<string, number> = {
1717 "anthropic/claude-3-haiku" : 200_000 ,
1818 "anthropic/claude-opus-4" : 200_000 ,
1919 "anthropic/claude-opus-4-7" : 1_000_000 ,
20+ "openai/gpt-5.5" : 1_050_000 ,
21+ "openai/gpt-5.5-pro" : 1_050_000 ,
22+ "openai/gpt-5.5-2026-04-23" : 1_050_000 ,
23+ "openai/gpt-5.5-pro-2026-04-23" : 1_050_000 ,
24+ "openai/gpt-5.4" : 1_050_000 ,
25+ "openai/gpt-5.4-pro" : 1_050_000 ,
26+ "openai/gpt-5.4-2026-03-05" : 1_050_000 ,
27+ "openai/gpt-5.4-mini" : 400_000 ,
28+ "openai/gpt-5.4-mini-2026-03-17" : 400_000 ,
29+ "openai/gpt-5.4-nano" : 400_000 ,
30+ "openai/gpt-5.4-nano-2026-03-17" : 400_000 ,
31+ "openai/gpt-5.3-codex" : 400_000 ,
32+ "openai/gpt-5.3-chat-latest" : 128_000 ,
33+ "openai/gpt-5" : 400_000 ,
34+ "openai/gpt-5-mini" : 400_000 ,
35+ "openai/gpt-5-nano" : 400_000 ,
2036 "openai/gpt-4o-mini" : 128_000 ,
2137 "openai/gpt-4o" : 128_000 ,
2238 "openai/gpt-4.1" : 200_000 ,
2339 "openai/o1" : 200_000 ,
2440 "openai/o1-mini" : 128_000 ,
25- "google/gemini-pro" : 128_000 ,
26- "google/gemini-2.0-flash" : 1_000_000 ,
27- "google/gemini-2.5-pro" : 1_000_000 ,
28- "google/gemini-3.0-pro" : 1_000_000 ,
41+ "google/gemini-3.1-pro-preview" : 1_000_000 ,
42+ "google/gemini-3.1-flash-lite-preview" : 1_000_000 ,
43+ "google/gemini-3-flash-preview" : 1_000_000 ,
44+ "google/gemini-3.1-flash-image-preview" : 128_000 ,
45+ "google/gemini-3-pro-image-preview" : 65_000 ,
2946 "tencent/hy3-preview:free" : 262_144 ,
3047 "tencent/hy3-preview-20260421:free" : 262_144 ,
48+ "deepseek/deepseek-v4-pro" : 1_000_000 ,
49+ "deepseek/deepseek-v4-flash" : 1_000_000 ,
3150 "deepseek/deepseek-r1" : 64_000 ,
3251 "deepseek/deepseek-r1-0528-qwen3-8b:free" : 8_000 ,
3352 "deepseek/deepseek-coder" : 16_000 ,
34- "deepseek/deepseek-v4" : 128_000 ,
53+ "deepseek/deepseek-v4" : 1_000_000 ,
3554} ;
3655
3756/** Safety margin to prevent hitting exact limits (10% reserved) */
@@ -81,7 +100,7 @@ export function getSafeContextWindow(model: string): number {
81100export function getModelFamily ( model : string ) : string {
82101 const normalized = model . toLowerCase ( ) ;
83102 if ( normalized . includes ( 'claude' ) ) return 'claude' ;
84- if ( normalized . includes ( 'gpt-4' ) || normalized . includes ( 'o1' ) || normalized . includes ( 'o3' ) ) return 'openai' ;
103+ if ( normalized . includes ( 'gpt-4' ) || normalized . includes ( 'gpt-5' ) || normalized . includes ( ' o1') || normalized . includes ( 'o3' ) ) return 'openai' ;
85104 if ( normalized . includes ( 'gemini' ) ) return 'gemini' ;
86105 if ( normalized . includes ( 'deepseek' ) ) return 'deepseek' ;
87106 return 'default' ;
0 commit comments