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