import dataclasses
[docs]
@dataclasses.dataclass
class ModelProvider:
"""Configuration for an AI model provider.
Attributes:
name (str): Unique name of the model provider.
base_url (str | None): Base URL for the provider's API endpoint.
api_key (str | None): API key for authenticating requests.
"""
name: str
base_url: str | None = None
api_key: str | None = None
[docs]
class ModelProviders(dict[str, ModelProvider]):
"""Registry of ModelProvider instances, keyed by provider name."""
[docs]
def __init__(self):
"""Initialize an empty ModelProviders registry."""
super().__init__()
[docs]
def add_dict(self, provider_dict: dict) -> None:
"""Create and add a ModelProvider from a dictionary.
Args:
provider_dict (dict): Dictionary with keys matching ModelProvider fields.
"""
self.add(ModelProvider(**provider_dict))
[docs]
def add(self, provider: ModelProvider) -> None:
"""Add a ModelProvider to the registry.
Args:
provider (ModelProvider): The provider to register.
Raises:
ValueError: If a provider with the same name already exists.
"""
if provider.name in self:
raise ValueError(f"Provider '{provider.name}' already registered")
self[provider.name] = provider