diff --git a/litellm/llms/bedrock_mantle/responses/transformation.py b/litellm/llms/bedrock_mantle/responses/transformation.py index 326233fd24b..769226c8b4d 100644 --- a/litellm/llms/bedrock_mantle/responses/transformation.py +++ b/litellm/llms/bedrock_mantle/responses/transformation.py @@ -5,7 +5,7 @@ Routes /v1/responses to the provider's native Responses endpoint instead of the chat-completions translation fallback. """ -from typing import Optional +from typing import Optional, cast from litellm.llms.bedrock_mantle.chat.transformation import BedrockMantleChatConfig from litellm.llms.openai.responses.transformation import OpenAIResponsesAPIConfig @@ -45,17 +45,16 @@ class BedrockMantleResponsesAPIConfig(OpenAIResponsesAPIConfig): api_base=api_base or litellm_params.get("api_base"), api_key=litellm_params.get("api_key"), ) - if not resolved_api_base: - raise ValueError( - "api_base is required for bedrock_mantle Responses API. " - "Set BEDROCK_MANTLE_API_BASE or BEDROCK_MANTLE_REGION." - ) - api_base = resolved_api_base.rstrip("/") + api_base = cast(str, resolved_api_base).rstrip("/") if api_base.endswith("/responses"): return api_base + if api_base.endswith("/openai/v1"): + return f"{api_base}/responses" + if api_base.endswith("/openai"): + return f"{api_base}/v1/responses" if api_base.endswith("/v1"): return f"{api_base}/responses" - return f"{api_base}/v1/responses" + return f"{api_base}/openai/v1/responses" def supports_native_websocket(self) -> bool: return False diff --git a/tests/test_litellm/llms/bedrock_mantle/test_bedrock_mantle_transformation.py b/tests/test_litellm/llms/bedrock_mantle/test_bedrock_mantle_transformation.py index 729dd2d6514..68fb4a27c2d 100644 --- a/tests/test_litellm/llms/bedrock_mantle/test_bedrock_mantle_transformation.py +++ b/tests/test_litellm/llms/bedrock_mantle/test_bedrock_mantle_transformation.py @@ -107,6 +107,14 @@ class TestBedrockMantleResponsesConfig: url = cfg.get_complete_url(api_base=None, litellm_params={}) assert url == "https://bedrock-mantle.us-east-1.api.aws/openai/v1/responses" + def test_responses_complete_url_bare_api_base(self, monkeypatch): + monkeypatch.setenv( + "BEDROCK_MANTLE_API_BASE", "https://bedrock-mantle.us-east-1.api.aws" + ) + cfg = BedrockMantleResponsesAPIConfig() + url = cfg.get_complete_url(api_base=None, litellm_params={}) + assert url == "https://bedrock-mantle.us-east-1.api.aws/openai/v1/responses" + def test_provider_config_manager_registers_responses(self): cfg = ProviderConfigManager.get_provider_responses_api_config( provider="bedrock_mantle",