Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 56 additions & 1 deletion src/strands/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,63 @@
This package includes an abstract base Model class along with concrete implementations for specific providers.
"""

from typing import Any

from . import bedrock, model
from .bedrock import BedrockModel
from .model import Model

__all__ = ["bedrock", "model", "BedrockModel", "Model"]
__all__ = [
"bedrock",
"model",
"BedrockModel",
"Model",
]


def __getattr__(name: str) -> Any:
"""Lazy load model implementations only when accessed.
This defers the import of optional dependencies until actually needed.
"""
if name == "AnthropicModel":
from .anthropic import AnthropicModel

return AnthropicModel
if name == "GeminiModel":
from .gemini import GeminiModel

return GeminiModel
if name == "LiteLLMModel":
from .litellm import LiteLLMModel

return LiteLLMModel
if name == "LlamaAPIModel":
from .llamaapi import LlamaAPIModel

return LlamaAPIModel
if name == "LlamaCppModel":
from .llamacpp import LlamaCppModel

return LlamaCppModel
if name == "MistralModel":
from .mistral import MistralModel

return MistralModel
if name == "OllamaModel":
from .ollama import OllamaModel

return OllamaModel
if name == "OpenAIModel":
from .openai import OpenAIModel

return OpenAIModel
if name == "SageMakerAIModel":
from .sagemaker import SageMakerAIModel

return SageMakerAIModel
if name == "WriterModel":
from .writer import WriterModel

return WriterModel
raise AttributeError(f"cannot import name '{name}' from '{__name__}' ({__file__})")
Loading