From 718c7792bbe897f783d962b9870b2198c3d24d70 Mon Sep 17 00:00:00 2001 From: Erin McNulty Date: Tue, 22 Sep 2026 15:05:44 -0400 Subject: [PATCH 1/4] strip temp --- crates/lingua/src/providers/openai/capabilities.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/lingua/src/providers/openai/capabilities.rs b/crates/lingua/src/providers/openai/capabilities.rs index bdbf6018..f5a9f22d 100644 --- a/crates/lingua/src/providers/openai/capabilities.rs +++ b/crates/lingua/src/providers/openai/capabilities.rs @@ -44,6 +44,7 @@ const MODEL_TRANSFORM_RULES: &[(&str, &[ModelTransform])] = &[ "gpt-5", &[StripTemperature, StripTopP, ForceMaxCompletionTokens], ), + ("gpt-6", &[StripTemperature]), // TODO: would be nice if we could apply these rules by provider instead of model name, and // apply these to all Mistral models ("mistral", &[ForceMaxTokens]), From c67cb6985556b0f583aaea2887efbeb10f302b21 Mon Sep 17 00:00:00 2001 From: Erin McNulty Date: Tue, 22 Sep 2026 15:07:33 -0400 Subject: [PATCH 2/4] oops --- crates/lingua/src/providers/openai/capabilities.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/lingua/src/providers/openai/capabilities.rs b/crates/lingua/src/providers/openai/capabilities.rs index f5a9f22d..67bdcec1 100644 --- a/crates/lingua/src/providers/openai/capabilities.rs +++ b/crates/lingua/src/providers/openai/capabilities.rs @@ -44,7 +44,10 @@ const MODEL_TRANSFORM_RULES: &[(&str, &[ModelTransform])] = &[ "gpt-5", &[StripTemperature, StripTopP, ForceMaxCompletionTokens], ), - ("gpt-6", &[StripTemperature]), + ( + "gpt-6", + &[StripTemperature, StripTopP, ForceMaxCompletionTokens], + ), // TODO: would be nice if we could apply these rules by provider instead of model name, and // apply these to all Mistral models ("mistral", &[ForceMaxTokens]), From 9ededae556c5c343f6c0f479d11323432b7b0ac2 Mon Sep 17 00:00:00 2001 From: Erin McNulty Date: Tue, 22 Sep 2026 15:15:35 -0400 Subject: [PATCH 3/4] fix for bedrock too --- crates/lingua/src/providers/openai/capabilities.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/lingua/src/providers/openai/capabilities.rs b/crates/lingua/src/providers/openai/capabilities.rs index 67bdcec1..12d075a0 100644 --- a/crates/lingua/src/providers/openai/capabilities.rs +++ b/crates/lingua/src/providers/openai/capabilities.rs @@ -63,8 +63,12 @@ const MODEL_TRANSFORM_RULES: &[(&str, &[ModelTransform])] = &[ /// Get the transforms required for a model. pub fn get_model_transforms(model: &str) -> &'static [ModelTransform] { let lower = model.to_ascii_lowercase(); + let normalized = match lower.strip_prefix("openai.") { + Some(normalized) => normalized, + None => &lower, + }; for (prefix, transforms) in MODEL_TRANSFORM_RULES { - if lower.starts_with(prefix) { + if normalized.starts_with(prefix) { return transforms; } } @@ -372,6 +376,10 @@ mod tests { "gpt-5-mini", &[StripTemperature, StripTopP, ForceMaxCompletionTokens][..], ), + ( + "openai.gpt-6-astra", + &[StripTemperature, StripTopP, ForceMaxCompletionTokens][..], + ), ("gpt-4", &[][..]), ("gpt-4o", &[][..]), ("claude-3", &[][..]), From d4d18e9c80c5bf8f7702af00573feffa705d5b78 Mon Sep 17 00:00:00 2001 From: Erin McNulty Date: Tue, 22 Sep 2026 15:25:28 -0400 Subject: [PATCH 4/4] oops --- .../lingua/src/providers/openai/capabilities.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/crates/lingua/src/providers/openai/capabilities.rs b/crates/lingua/src/providers/openai/capabilities.rs index 12d075a0..1ad3c1e8 100644 --- a/crates/lingua/src/providers/openai/capabilities.rs +++ b/crates/lingua/src/providers/openai/capabilities.rs @@ -62,11 +62,7 @@ const MODEL_TRANSFORM_RULES: &[(&str, &[ModelTransform])] = &[ /// Get the transforms required for a model. pub fn get_model_transforms(model: &str) -> &'static [ModelTransform] { - let lower = model.to_ascii_lowercase(); - let normalized = match lower.strip_prefix("openai.") { - Some(normalized) => normalized, - None => &lower, - }; + let normalized = normalize_openai_model_name(model); for (prefix, transforms) in MODEL_TRANSFORM_RULES { if normalized.starts_with(prefix) { return transforms; @@ -163,7 +159,10 @@ impl EffortFamily { fn normalize_openai_model_name(model: &str) -> String { let lower = model.to_ascii_lowercase(); - if let Some(stripped) = lower.strip_prefix("openai/") { + if let Some(stripped) = lower + .strip_prefix("openai/") + .or_else(|| lower.strip_prefix("openai.")) + { stripped.to_string() } else { lower @@ -380,6 +379,10 @@ mod tests { "openai.gpt-6-astra", &[StripTemperature, StripTopP, ForceMaxCompletionTokens][..], ), + ( + "openai/gpt-6-astra", + &[StripTemperature, StripTopP, ForceMaxCompletionTokens][..], + ), ("gpt-4", &[][..]), ("gpt-4o", &[][..]), ("claude-3", &[][..]),