返回 JoyAI-Echo
__init__.py
1 """LLM provider abstraction module."""
2
3 from __future__ import annotations
4
5 from importlib import import_module
6 from typing import TYPE_CHECKING
7
8 from nanobot.providers.base import LLMProvider, LLMResponse
9
10 __all__ = [
11 "LLMProvider",
12 "LLMResponse",
13 "AnthropicProvider",
14 "OpenAICompatProvider",
15 "OpenAICodexProvider",
16 "GitHubCopilotProvider",
17 "AzureOpenAIProvider",
18 ]
19
20 _LAZY_IMPORTS = {
21 "AnthropicProvider": ".anthropic_provider",
22 "OpenAICompatProvider": ".openai_compat_provider",
23 "OpenAICodexProvider": ".openai_codex_provider",
24 "GitHubCopilotProvider": ".github_copilot_provider",
25 "AzureOpenAIProvider": ".azure_openai_provider",
26 }
27
28 if TYPE_CHECKING:
29 from nanobot.providers.anthropic_provider import AnthropicProvider
30 from nanobot.providers.azure_openai_provider import AzureOpenAIProvider
31 from nanobot.providers.github_copilot_provider import GitHubCopilotProvider
32 from nanobot.providers.openai_compat_provider import OpenAICompatProvider
33 from nanobot.providers.openai_codex_provider import OpenAICodexProvider
34
35
36 def __getattr__(name: str):
37 """Lazily expose provider implementations without importing all backends up front."""
38 module_name = _LAZY_IMPORTS.get(name)
39 if module_name is None:
40 raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
41 module = import_module(module_name, __name__)
42 return getattr(module, name)
43
43 lines PYTHON