fix(llms/aws_bedrock): resolve provider for application inference profile ARNs (#6899)
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user