PlanOpticon
| a94205b… | leo | 1 | """Provider abstraction layer for LLM, vision, and transcription APIs.""" |
| a94205b… | leo | 2 | |
| 0981a08… | noreply | 3 | from video_processor.providers.base import ( |
| 0981a08… | noreply | 4 | BaseProvider, |
| 0981a08… | noreply | 5 | ModelInfo, |
| 0981a08… | noreply | 6 | OpenAICompatibleProvider, |
| 0981a08… | noreply | 7 | ProviderRegistry, |
| 0981a08… | noreply | 8 | ) |
| a94205b… | leo | 9 | from video_processor.providers.manager import ProviderManager |
| a94205b… | leo | 10 | |
| 0981a08… | noreply | 11 | __all__ = [ |
| 0981a08… | noreply | 12 | "BaseProvider", |
| 0981a08… | noreply | 13 | "ModelInfo", |
| 0981a08… | noreply | 14 | "OpenAICompatibleProvider", |
| 0981a08… | noreply | 15 | "ProviderManager", |
| 0981a08… | noreply | 16 | "ProviderRegistry", |
| 0981a08… | noreply | 17 | # OpenAI-compatible providers (lazy-loaded via manager) |
| 0981a08… | noreply | 18 | "AzureOpenAIProvider", |
| 0981a08… | noreply | 19 | "CerebrasProvider", |
| 0981a08… | noreply | 20 | "FireworksProvider", |
| 0981a08… | noreply | 21 | "TogetherProvider", |
| 0981a08… | noreply | 22 | "XAIProvider", |
| 0981a08… | noreply | 23 | ] |
| 0981a08… | noreply | 24 | |
| 0981a08… | noreply | 25 | |
| 0981a08… | noreply | 26 | def __getattr__(name: str): |
| 0981a08… | noreply | 27 | """Lazy import provider classes to avoid import-time side effects.""" |
| 0981a08… | noreply | 28 | _lazy_imports = { |
| 0981a08… | noreply | 29 | "AzureOpenAIProvider": "video_processor.providers.azure_provider", |
| 0981a08… | noreply | 30 | "CerebrasProvider": "video_processor.providers.cerebras_provider", |
| 0981a08… | noreply | 31 | "FireworksProvider": "video_processor.providers.fireworks_provider", |
| 0981a08… | noreply | 32 | "TogetherProvider": "video_processor.providers.together_provider", |
| 0981a08… | noreply | 33 | "XAIProvider": "video_processor.providers.xai_provider", |
| 0981a08… | noreply | 34 | } |
| 0981a08… | noreply | 35 | if name in _lazy_imports: |
| 0981a08… | noreply | 36 | import importlib |
| 0981a08… | noreply | 37 | |
| 0981a08… | noreply | 38 | mod = importlib.import_module(_lazy_imports[name]) |
| 0981a08… | noreply | 39 | return getattr(mod, name) |
| 0981a08… | noreply | 40 | raise AttributeError(f"module {__name__!r} has no attribute {name!r}") |