Honor ChatGPT model maximum context windows

This commit is contained in:
2026-08-31 00:10:45 -05:00
parent 1c7d3c175d
commit 4a3a6c7848
2 changed files with 16 additions and 2 deletions
+9 -1
View File
@@ -2742,7 +2742,15 @@ fn openai_model_context_window(
is_configurable: max_context_size > default_context_size, is_configurable: max_context_size > default_context_size,
min: default_context_size, min: default_context_size,
max: max_context_size, max: max_context_size,
default_max: default_context_size, // ChatGPT's catalog exposes `context_window` as the effective window
// and `max_context_window` as the model's actual maximum. Use the
// latter as the default so model refreshes do not reset the profile
// to the smaller effective window (for example, 272k).
default_max: if provider_kind == OpenAIProviderKind::ChatGPTSubscription {
max_context_size
} else {
default_context_size
},
} }
} }
+7 -1
View File
@@ -813,7 +813,7 @@ fn chatgpt_codex_models_parse_visible_catalog_entries() {
); );
assert!(configurable.is_configurable); assert!(configurable.is_configurable);
assert_eq!(configurable.min, 258_400); assert_eq!(configurable.min, 258_400);
assert_eq!(configurable.default_max, 258_400); assert_eq!(configurable.default_max, 828_400);
assert_eq!(configurable.max, 828_400); assert_eq!(configurable.max, 828_400);
let fixed = let fixed =
@@ -829,6 +829,8 @@ fn chatgpt_catalog_merge_drops_stale_models_but_preserves_overrides() {
let mut existing = openai_model("gpt-5.6-sol"); let mut existing = openai_model("gpt-5.6-sol");
existing.enabled = false; existing.enabled = false;
existing.use_rig = false; existing.use_rig = false;
existing.context_size = 272_000;
existing.max_input_tokens = Some(272_000);
existing.capability_overrides.insert( existing.capability_overrides.insert(
"vision".to_string(), "vision".to_string(),
crate::settings::ModelCapabilityOverride::Unsupported, crate::settings::ModelCapabilityOverride::Unsupported,
@@ -839,11 +841,15 @@ fn chatgpt_catalog_merge_drops_stale_models_but_preserves_overrides() {
discovered.display_name = "GPT-5.6-Sol".to_string(); discovered.display_name = "GPT-5.6-Sol".to_string();
discovered.vision_supported = true; discovered.vision_supported = true;
discovered.use_rig = true; discovered.use_rig = true;
discovered.context_size = 828_400;
discovered.max_input_tokens = Some(258_400);
let merged = merge_discovered_chatgpt_subscription_models(&[existing, stale], vec![discovered]); let merged = merge_discovered_chatgpt_subscription_models(&[existing, stale], vec![discovered]);
assert_eq!(merged.len(), 1); assert_eq!(merged.len(), 1);
assert_eq!(merged[0].model_id, "gpt-5.6-sol"); assert_eq!(merged[0].model_id, "gpt-5.6-sol");
assert_eq!(merged[0].context_size, 828_400);
assert_eq!(merged[0].max_input_tokens, Some(258_400));
assert!(!merged[0].enabled); assert!(!merged[0].enabled);
assert!(!merged[0].use_rig); assert!(!merged[0].use_rig);
assert_eq!( assert_eq!(