backend/src/llm/factory.py
from llm.providers.base_provider import BaseProvider from llm.providers.ollama_provider import OllamaProvider from llm.providers.openrouter_provider import OpenRouterProvider from llm.providers.openai_provider import OpenAIProvider from llm.providers.anthropic_provider import AnthropicProvider # Registry: add new providers here — nowhere else needs to change. _REGISTRY: dict[str, type[BaseProvider]] = { "ollama": OllamaProvider, "openrouter": OpenRouterProvider, "openai": OpenAIProvider, "anthropic": AnthropicProvider, } # Providers exposed in the UI provider picker. UI_PROVIDERS = ("ollama", "openrouter") class LLMFactory: @staticmethod def create(provider_name: str, model: str) -> BaseProvider: provider_cls = _REGISTRY.get(provider_name.lower()) if provider_cls is None: available = ", ".join(_REGISTRY.keys()) raise ValueError( f"Unknown provider '{provider_name}'. Available: {available}" ) return provider_cls(model=model) @staticmethod def available_providers() -> list[str]: return list(_REGISTRY.keys()) @staticmethod def ui_providers() -> list[str]: return list(UI_PROVIDERS)
Follow the work.
Occasional updates on SignalFoundry, MarketCompass, and what we are building at CompassFoundry Labs.