61 lines
1.3 KiB
Python
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
|