fix(llms/aws_bedrock): resolve provider for application inference profile ARNs (#6899)

This commit is contained in:
Kartik
2026-08-14 16:49:37 +05:30
committed by GitHub
parent c883f52130
commit a133287015
7 changed files with 162 additions and 7 deletions
+6
View File
@@ -24,6 +24,7 @@ class AWSBedrockConfig(BaseLlmConfig):
aws_session_token: Optional[str] = None,
aws_profile: Optional[str] = None,
model_kwargs: Optional[Dict[str, Any]] = None,
provider_override: Optional[str] = None,
**kwargs,
):
"""
@@ -42,6 +43,10 @@ class AWSBedrockConfig(BaseLlmConfig):
aws_session_token: AWS session token for temporary credentials
aws_profile: AWS profile name for credentials
model_kwargs: Additional model-specific parameters
provider_override: Explicit provider name (e.g. "anthropic"), required when
model is an application inference profile ARN whose opaque ID has no
provider substring for automatic detection. Defaults to None (uses
automatic detection from the model identifier).
**kwargs: Additional arguments passed to base class
"""
super().__init__(
@@ -59,6 +64,7 @@ class AWSBedrockConfig(BaseLlmConfig):
self.aws_session_token = aws_session_token
self.aws_profile = aws_profile
self.model_kwargs = model_kwargs or {}
self.provider_override = provider_override
@property
def provider(self) -> str:
+10 -4
View File
@@ -9,8 +9,8 @@ try:
except ImportError:
raise ImportError("The 'boto3' library is required. Please install it using 'pip install boto3'.")
from mem0.configs.llms.base import BaseLlmConfig
from mem0.configs.llms.aws_bedrock import AWSBedrockConfig
from mem0.configs.llms.base import BaseLlmConfig
from mem0.llms.base import LLMBase
from mem0.memory.utils import extract_json
@@ -23,8 +23,14 @@ PROVIDERS = [
]
def extract_provider(model: str) -> str:
"""Extract provider from model identifier."""
def extract_provider(model: str, explicit_provider: Optional[str] = None) -> str:
"""Extract provider from model identifier, or return explicit_provider when set."""
if explicit_provider:
if explicit_provider not in PROVIDERS:
raise ValueError(
f"Unknown provider_override '{explicit_provider}'. Valid providers: {', '.join(PROVIDERS)}"
)
return explicit_provider
for provider in PROVIDERS:
if re.search(rf"\b{re.escape(provider)}\b", model):
return provider
@@ -69,7 +75,7 @@ class AWSBedrockLLM(LLMBase):
# Get model configuration
self.model_config = self.config.get_model_config()
self.provider = extract_provider(self.config.model)
self.provider = extract_provider(self.config.model, self.config.provider_override)
# Initialize provider-specific settings
self._initialize_provider_settings()