Source code for ai.assistant.model.model_provider

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