fix(bedrock): route cross-region openai inference profiles to correct endpoint

This commit is contained in:
anton-codes-iac 2026-09-08 14:49:50 +02:00
parent 1af7a403c6
commit dcbb5dd013
2 changed files with 38 additions and 1 deletions

View file

@ -1132,6 +1132,10 @@ class BedrockModelInfo(BaseLLMModelInfo):
"agentcore/": "agentcore",
"async_invoke/": "async_invoke",
"openai/": "openai",
"global.openai.": "openai",
"eu.openai.": "openai",
"apac.openai.": "openai",
"us.openai.": "openai",
"mantle/": "mantle",
}
@ -1256,7 +1260,13 @@ class BedrockModelInfo(BaseLLMModelInfo):
Check if the model is an explicit openai route.
Used for Bedrock imported models that use OpenAI Chat Completions format.
"""
return BedrockModelInfo._model_has_route_prefix(model, "openai/")
return (
BedrockModelInfo._model_has_route_prefix(model, "openai/")
or BedrockModelInfo._model_has_route_prefix(model, "global.openai.")
or BedrockModelInfo._model_has_route_prefix(model, "eu.openai.")
or BedrockModelInfo._model_has_route_prefix(model, "apac.openai.")
or BedrockModelInfo._model_has_route_prefix(model, "us.openai.")
)
@staticmethod
def get_bedrock_provider_config_for_messages_api(

View file

@ -871,3 +871,30 @@ def test_every_bedrock_config_get_error_class_keeps_provider_headers(config):
def test_bedrock_get_error_class_audit_covers_every_surface():
assert len(_bedrock_configs_with_get_error_class()) >= 30
@pytest.mark.parametrize(
"model",
[
"bedrock/global.openai.gpt-5.6-sol",
"bedrock/global.openai.gpt-5.6-terra",
"bedrock/global.openai.gpt-5.6-luna",
"bedrock/eu.openai.gpt-5.6-sol",
"bedrock/apac.openai.gpt-5.6-sol",
"bedrock/us.openai.gpt-5.6-sol",
],
)
def test_bedrock_cross_region_openai_routing(model: str):
"""
Ensure cross-region OpenAI inference profiles on Bedrock route to the
OpenAI-compatible config instead of falling back to Bedrock Converse.
"""
import litellm
from litellm.llms.bedrock.common_utils import get_bedrock_chat_config
# 1. Verify route identification
assert BedrockModelInfo.get_bedrock_route(model) == "openai"
assert BedrockModelInfo._explicit_openai_route(model) is True
# 2. Verify config mapping
config = get_bedrock_chat_config(model)
assert isinstance(config, litellm.AmazonBedrockOpenAIConfig)