Honor ChatGPT model maximum context windows
This commit is contained in:
+9
-1
@@ -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
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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!(
|
||||||
|
|||||||
Reference in New Issue
Block a user