mirror of
https://github.com/openai/codex.git
synced 2026-10-18 17:18:52 +00:00
Make GPT-5.6 Sol the default Bedrock model (#32288)
## What changed - Prioritize the GPT-5.6 Sol, Terra, and Luna variants ahead of GPT-5.5 and GPT-5.4 in the static Amazon Bedrock catalog, making Sol the default. - Use each GPT-5.6 variant's bundled description and default reasoning level while retaining Bedrock's `max` reasoning support. ## Testing - Update model-provider and app-server tests to cover catalog ordering, variant metadata, and provider-aware fallback to GPT-5.6 Sol. GitOrigin-RevId: 1761390254deae47b62c043b1ba707c384cde5e9
This commit is contained in:
@@ -118,7 +118,7 @@ model = "gpt-5.4-mini"
|
||||
.await??;
|
||||
let response: ThreadStartResponse = to_response(response)?;
|
||||
|
||||
assert_eq!(response.model, "openai.gpt-5.5");
|
||||
assert_eq!(response.model, "openai.gpt-5.6-sol");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -285,7 +285,7 @@ async fn thread_start_provider_model_fallback_uses_bedrock_static_catalog() -> R
|
||||
supported_with_fallback.model,
|
||||
unsupported_without_fallback.model,
|
||||
],
|
||||
vec!["openai.gpt-5.5", "openai.gpt-5.4", "gpt-5.4-mini"]
|
||||
vec!["openai.gpt-5.6-sol", "openai.gpt-5.4", "gpt-5.4-mini"]
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -10,37 +10,43 @@ use codex_protocol::openai_models::ReasoningEffort;
|
||||
use codex_protocol::openai_models::ReasoningEffortPreset;
|
||||
|
||||
const GPT_5_BEDROCK_CONTEXT_WINDOW: i64 = 272_000;
|
||||
const GPT_5_6_SOL_OPENAI_MODEL_ID: &str = "gpt-5.6-sol";
|
||||
const GPT_5_6_TERRA_OPENAI_MODEL_ID: &str = "gpt-5.6-terra";
|
||||
const GPT_5_6_LUNA_OPENAI_MODEL_ID: &str = "gpt-5.6-luna";
|
||||
const GPT_5_5_OPENAI_MODEL_ID: &str = "gpt-5.5";
|
||||
const GPT_5_4_OPENAI_MODEL_ID: &str = "gpt-5.4";
|
||||
|
||||
pub(crate) fn static_model_catalog() -> ModelsResponse {
|
||||
with_default_only_service_tier(ModelsResponse {
|
||||
models: vec![
|
||||
gpt_5_6_bedrock_model(
|
||||
GPT_5_6_SOL_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID,
|
||||
"GPT-5.6 Sol",
|
||||
/*priority*/ 0,
|
||||
),
|
||||
gpt_5_6_bedrock_model(
|
||||
GPT_5_6_TERRA_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID,
|
||||
"GPT-5.6 Terra",
|
||||
/*priority*/ 1,
|
||||
),
|
||||
gpt_5_6_bedrock_model(
|
||||
GPT_5_6_LUNA_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID,
|
||||
"GPT-5.6 Luna",
|
||||
/*priority*/ 2,
|
||||
),
|
||||
gpt_5_bedrock_model(
|
||||
GPT_5_5_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_5_MODEL_ID,
|
||||
"GPT-5.5",
|
||||
/*priority*/ 0,
|
||||
/*priority*/ 3,
|
||||
),
|
||||
gpt_5_bedrock_model(
|
||||
GPT_5_4_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_4_MODEL_ID,
|
||||
"GPT-5.4",
|
||||
/*priority*/ 1,
|
||||
),
|
||||
gpt_5_6_bedrock_model(
|
||||
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID,
|
||||
"GPT-5.6 Sol",
|
||||
/*priority*/ 2,
|
||||
),
|
||||
gpt_5_6_bedrock_model(
|
||||
AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID,
|
||||
"GPT-5.6 Terra",
|
||||
/*priority*/ 3,
|
||||
),
|
||||
gpt_5_6_bedrock_model(
|
||||
AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID,
|
||||
"GPT-5.6 Luna",
|
||||
/*priority*/ 4,
|
||||
),
|
||||
],
|
||||
@@ -74,13 +80,21 @@ fn gpt_5_bedrock_model(
|
||||
model
|
||||
}
|
||||
|
||||
fn gpt_5_6_bedrock_model(bedrock_slug: &str, display_name: &str, priority: i32) -> ModelInfo {
|
||||
fn gpt_5_6_bedrock_model(
|
||||
openai_slug: &str,
|
||||
bedrock_slug: &str,
|
||||
display_name: &str,
|
||||
priority: i32,
|
||||
) -> ModelInfo {
|
||||
let openai_model = bundled_openai_model(openai_slug);
|
||||
let mut model = gpt_5_bedrock_model(
|
||||
GPT_5_5_OPENAI_MODEL_ID,
|
||||
bedrock_slug,
|
||||
display_name,
|
||||
priority,
|
||||
);
|
||||
model.description = openai_model.description;
|
||||
model.default_reasoning_level = openai_model.default_reasoning_level;
|
||||
model
|
||||
.supported_reasoning_levels
|
||||
.push(ReasoningEffortPreset {
|
||||
@@ -107,7 +121,7 @@ mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn catalog_uses_mantle_model_ids_as_slugs() {
|
||||
fn catalog_uses_mantle_model_ids_in_priority_order() {
|
||||
let catalog = static_model_catalog();
|
||||
|
||||
assert_eq!(
|
||||
@@ -117,11 +131,11 @@ mod tests {
|
||||
.map(|model| model.slug.as_str())
|
||||
.collect::<Vec<_>>(),
|
||||
vec![
|
||||
AMAZON_BEDROCK_GPT_5_5_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_4_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_5_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_4_MODEL_ID,
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -151,7 +165,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gpt_5_6_bedrock_models_clone_gpt_5_5_config_with_max_reasoning_effort() {
|
||||
fn gpt_5_6_bedrock_models_use_variant_metadata_and_max_reasoning_effort() {
|
||||
let catalog = static_model_catalog();
|
||||
let gpt_5_5 = catalog
|
||||
.models
|
||||
@@ -159,14 +173,32 @@ mod tests {
|
||||
.find(|model| model.slug == AMAZON_BEDROCK_GPT_5_5_MODEL_ID)
|
||||
.expect("Bedrock catalog should include GPT-5.5");
|
||||
|
||||
for (slug, display_name, priority) in [
|
||||
(AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID, "GPT-5.6 Sol", 2),
|
||||
(AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID, "GPT-5.6 Terra", 3),
|
||||
(AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID, "GPT-5.6 Luna", 4),
|
||||
for (openai_slug, slug, display_name, priority) in [
|
||||
(
|
||||
GPT_5_6_SOL_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_SOL_MODEL_ID,
|
||||
"GPT-5.6 Sol",
|
||||
0,
|
||||
),
|
||||
(
|
||||
GPT_5_6_TERRA_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_TERRA_MODEL_ID,
|
||||
"GPT-5.6 Terra",
|
||||
1,
|
||||
),
|
||||
(
|
||||
GPT_5_6_LUNA_OPENAI_MODEL_ID,
|
||||
AMAZON_BEDROCK_GPT_5_6_LUNA_MODEL_ID,
|
||||
"GPT-5.6 Luna",
|
||||
2,
|
||||
),
|
||||
] {
|
||||
let openai_model = bundled_openai_model(openai_slug);
|
||||
let mut expected = gpt_5_5.clone();
|
||||
expected.slug = slug.to_string();
|
||||
expected.display_name = display_name.to_string();
|
||||
expected.description = openai_model.description;
|
||||
expected.default_reasoning_level = openai_model.default_reasoning_level;
|
||||
expected.priority = priority;
|
||||
expected
|
||||
.supported_reasoning_levels
|
||||
|
||||
@@ -672,25 +672,40 @@ mod tests {
|
||||
assert_eq!(
|
||||
models,
|
||||
vec![
|
||||
("openai.gpt-5.5", "GPT-5.5"),
|
||||
("openai.gpt-5.4", "GPT-5.4"),
|
||||
("openai.gpt-5.6-sol", "GPT-5.6 Sol"),
|
||||
("openai.gpt-5.6-terra", "GPT-5.6 Terra"),
|
||||
("openai.gpt-5.6-luna", "GPT-5.6 Luna"),
|
||||
("openai.gpt-5.5", "GPT-5.5"),
|
||||
("openai.gpt-5.4", "GPT-5.4"),
|
||||
]
|
||||
);
|
||||
|
||||
let default_model = manager
|
||||
let available_models = manager
|
||||
.list_models(
|
||||
RefreshStrategy::Online,
|
||||
HttpClientFactory::new(OutboundProxyPolicy::ReqwestDefault),
|
||||
)
|
||||
.await
|
||||
.into_iter()
|
||||
.await;
|
||||
assert_eq!(
|
||||
available_models
|
||||
.iter()
|
||||
.map(|preset| preset.model.as_str())
|
||||
.collect::<Vec<_>>(),
|
||||
vec![
|
||||
"openai.gpt-5.6-sol",
|
||||
"openai.gpt-5.6-terra",
|
||||
"openai.gpt-5.6-luna",
|
||||
"openai.gpt-5.5",
|
||||
"openai.gpt-5.4",
|
||||
]
|
||||
);
|
||||
|
||||
let default_model = available_models
|
||||
.iter()
|
||||
.find(|preset| preset.is_default)
|
||||
.expect("Bedrock catalog should have a default model");
|
||||
|
||||
assert_eq!(default_model.model, "openai.gpt-5.5");
|
||||
assert_eq!(default_model.model, "openai.gpt-5.6-sol");
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in New Issue
Block a user