Files
oai/oai/providers/registry.py

61 lines
1.3 KiB
Python

"""
Provider registry for AI model providers.
This module maintains a central registry of all available AI providers,
allowing dynamic provider lookup and registration.
"""
from typing import Dict, List, Optional, Type
from oai.providers.base import AIProvider
# Global provider registry
PROVIDER_REGISTRY: Dict[str, Type[AIProvider]] = {}
def register_provider(name: str, provider_class: Type[AIProvider]) -> None:
"""
Register a provider class with the given name.
Args:
name: Provider identifier (e.g., "openrouter", "anthropic")
provider_class: The provider class to register
"""
PROVIDER_REGISTRY[name] = provider_class
def get_provider_class(name: str) -> Optional[Type[AIProvider]]:
"""
Get a provider class by name.
Args:
name: Provider identifier
Returns:
Provider class or None if not found
"""
return PROVIDER_REGISTRY.get(name)
def list_providers() -> List[str]:
"""
List all registered provider names.
Returns:
List of provider identifiers
"""
return list(PROVIDER_REGISTRY.keys())
def is_provider_registered(name: str) -> bool:
"""
Check if a provider is registered.
Args:
name: Provider identifier
Returns:
True if provider is registered
"""
return name in PROVIDER_REGISTRY