From d9181c188e03e8dc400215190a72693a417a4880 Mon Sep 17 00:00:00 2001 From: Alexsander Hamir Date: Fri, 19 Dec 2025 14:19:22 -0800 Subject: [PATCH] [Refactor] - Lazy load 41 configuration classes (#18267) --- litellm/__init__.py | 83 +++++----- litellm/_lazy_imports.py | 342 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 387 insertions(+), 38 deletions(-) diff --git a/litellm/__init__.py b/litellm/__init__.py index 0463282c089..87b1dec2cd0 100644 --- a/litellm/__init__.py +++ b/litellm/__init__.py @@ -1063,46 +1063,8 @@ from .utils import client # Note: Most other utils imports are lazy-loaded via __getattr__ to avoid loading utils.py # (which imports tiktoken) at import time -from .llms.bytez.chat.transformation import BytezChatConfig from .llms.custom_llm import CustomLLM -from .llms.aiohttp_openai.chat.transformation import AiohttpOpenAIChatConfig -from .llms.github.chat.transformation import GithubChatConfig -from .llms.compactifai.chat.transformation import CompactifAIChatConfig -from .llms.empower.chat.transformation import EmpowerChatConfig -from .llms.huggingface.chat.transformation import HuggingFaceChatConfig -from .llms.huggingface.embedding.transformation import HuggingFaceEmbeddingConfig -from .llms.oobabooga.chat.transformation import OobaboogaConfig -from .llms.maritalk import MaritalkConfig -from .llms.openrouter.chat.transformation import OpenrouterConfig -from .llms.datarobot.chat.transformation import DataRobotConfig -from .llms.anthropic.chat.transformation import AnthropicConfig from .llms.anthropic.common_utils import AnthropicModelInfo -from .llms.azure_ai.anthropic.transformation import AzureAnthropicConfig -from .llms.groq.stt.transformation import GroqSTTConfig -from .llms.anthropic.completion.transformation import AnthropicTextConfig -from .llms.triton.completion.transformation import TritonConfig -from .llms.triton.completion.transformation import TritonGenerateConfig -from .llms.triton.completion.transformation import TritonInferConfig -from .llms.triton.embedding.transformation import TritonEmbeddingConfig -from .llms.huggingface.rerank.transformation import HuggingFaceRerankConfig -from .llms.databricks.chat.transformation import DatabricksConfig -from .llms.databricks.embed.transformation import DatabricksEmbeddingConfig -from .llms.predibase.chat.transformation import PredibaseConfig -from .llms.replicate.chat.transformation import ReplicateConfig -from .llms.snowflake.chat.transformation import SnowflakeConfig -from .llms.cohere.rerank.transformation import CohereRerankConfig -from .llms.cohere.rerank_v2.transformation import CohereRerankV2Config -from .llms.azure_ai.rerank.transformation import AzureAIRerankConfig -from .llms.infinity.rerank.transformation import InfinityRerankConfig -from .llms.jina_ai.rerank.transformation import JinaAIRerankConfig -from .llms.deepinfra.rerank.transformation import DeepinfraRerankConfig -from .llms.hosted_vllm.rerank.transformation import HostedVLLMRerankConfig -from .llms.nvidia_nim.rerank.transformation import NvidiaNimRerankConfig -from .llms.nvidia_nim.rerank.ranking_transformation import NvidiaNimRankingConfig -from .llms.vertex_ai.rerank.transformation import VertexAIRerankConfig -from .llms.fireworks_ai.rerank.transformation import FireworksAIRerankConfig -from .llms.voyage.rerank.transformation import VoyageRerankConfig -from .llms.clarifai.chat.transformation import ClarifaiConfig from .llms.ai21.chat.transformation import AI21ChatConfig, AI21ChatConfig as AI21Config from .llms.meta_llama.chat.transformation import LlamaAPIConfig from .llms.anthropic.experimental_pass_through.messages.transformation import ( @@ -1510,6 +1472,51 @@ if TYPE_CHECKING: from litellm.types.utils import ModelInfo as _ModelInfoType from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler, HTTPHandler from litellm.caching.caching import Cache + + # Type stubs for lazy-loaded configs to help mypy + from .llms.bedrock.chat.converse_transformation import AmazonConverseConfig as AmazonConverseConfig + from .llms.openai_like.chat.handler import OpenAILikeChatConfig as OpenAILikeChatConfig + from .llms.galadriel.chat.transformation import GaladrielChatConfig as GaladrielChatConfig + from .llms.github.chat.transformation import GithubChatConfig as GithubChatConfig + from .llms.azure_ai.anthropic.transformation import AzureAnthropicConfig as AzureAnthropicConfig + from .llms.bytez.chat.transformation import BytezChatConfig as BytezChatConfig + from .llms.compactifai.chat.transformation import CompactifAIChatConfig as CompactifAIChatConfig + from .llms.empower.chat.transformation import EmpowerChatConfig as EmpowerChatConfig + from .llms.aiohttp_openai.chat.transformation import AiohttpOpenAIChatConfig as AiohttpOpenAIChatConfig + from .llms.huggingface.chat.transformation import HuggingFaceChatConfig as HuggingFaceChatConfig + from .llms.huggingface.embedding.transformation import HuggingFaceEmbeddingConfig as HuggingFaceEmbeddingConfig + from .llms.oobabooga.chat.transformation import OobaboogaConfig as OobaboogaConfig + from .llms.maritalk import MaritalkConfig as MaritalkConfig + from .llms.openrouter.chat.transformation import OpenrouterConfig as OpenrouterConfig + from .llms.datarobot.chat.transformation import DataRobotConfig as DataRobotConfig + from .llms.anthropic.chat.transformation import AnthropicConfig as AnthropicConfig + from .llms.anthropic.completion.transformation import AnthropicTextConfig as AnthropicTextConfig + from .llms.groq.stt.transformation import GroqSTTConfig as GroqSTTConfig + from .llms.triton.completion.transformation import TritonConfig as TritonConfig + from .llms.triton.completion.transformation import TritonGenerateConfig as TritonGenerateConfig + from .llms.triton.completion.transformation import TritonInferConfig as TritonInferConfig + from .llms.triton.embedding.transformation import TritonEmbeddingConfig as TritonEmbeddingConfig + from .llms.huggingface.rerank.transformation import HuggingFaceRerankConfig as HuggingFaceRerankConfig + from .llms.databricks.chat.transformation import DatabricksConfig as DatabricksConfig + from .llms.databricks.embed.transformation import DatabricksEmbeddingConfig as DatabricksEmbeddingConfig + from .llms.predibase.chat.transformation import PredibaseConfig as PredibaseConfig + from .llms.replicate.chat.transformation import ReplicateConfig as ReplicateConfig + from .llms.snowflake.chat.transformation import SnowflakeConfig as SnowflakeConfig + from .llms.cohere.rerank.transformation import CohereRerankConfig as CohereRerankConfig + from .llms.cohere.rerank_v2.transformation import CohereRerankV2Config as CohereRerankV2Config + from .llms.azure_ai.rerank.transformation import AzureAIRerankConfig as AzureAIRerankConfig + from .llms.infinity.rerank.transformation import InfinityRerankConfig as InfinityRerankConfig + from .llms.jina_ai.rerank.transformation import JinaAIRerankConfig as JinaAIRerankConfig + from .llms.deepinfra.rerank.transformation import DeepinfraRerankConfig as DeepinfraRerankConfig + from .llms.hosted_vllm.rerank.transformation import HostedVLLMRerankConfig as HostedVLLMRerankConfig + from .llms.nvidia_nim.rerank.transformation import NvidiaNimRerankConfig as NvidiaNimRerankConfig + from .llms.nvidia_nim.rerank.ranking_transformation import NvidiaNimRankingConfig as NvidiaNimRankingConfig + from .llms.vertex_ai.rerank.transformation import VertexAIRerankConfig as VertexAIRerankConfig + from .llms.fireworks_ai.rerank.transformation import FireworksAIRerankConfig as FireworksAIRerankConfig + from .llms.voyage.rerank.transformation import VoyageRerankConfig as VoyageRerankConfig + from .llms.clarifai.chat.transformation import ClarifaiConfig as ClarifaiConfig + from .llms.ai21.chat.transformation import AI21ChatConfig as AI21ChatConfig + from .llms.ai21.chat.transformation import AI21Config as AI21Config from litellm.caching.llm_caching_handler import LLMClientCache from litellm.types.llms.bedrock import COHERE_EMBEDDING_INPUT_TYPES from litellm.types.utils import ( diff --git a/litellm/_lazy_imports.py b/litellm/_lazy_imports.py index 14772862686..b25e6830640 100644 --- a/litellm/_lazy_imports.py +++ b/litellm/_lazy_imports.py @@ -159,6 +159,44 @@ LLM_CONFIG_NAMES = ( "AmazonConverseConfig", "OpenAILikeChatConfig", "GaladrielChatConfig", + "GithubChatConfig", + "AzureAnthropicConfig", + "BytezChatConfig", + "CompactifAIChatConfig", + "EmpowerChatConfig", + "AiohttpOpenAIChatConfig", + "HuggingFaceChatConfig", + "HuggingFaceEmbeddingConfig", + "OobaboogaConfig", + "MaritalkConfig", + "OpenrouterConfig", + "DataRobotConfig", + "AnthropicConfig", + "AnthropicTextConfig", + "GroqSTTConfig", + "TritonConfig", + "TritonGenerateConfig", + "TritonInferConfig", + "TritonEmbeddingConfig", + "HuggingFaceRerankConfig", + "DatabricksConfig", + "DatabricksEmbeddingConfig", + "PredibaseConfig", + "ReplicateConfig", + "SnowflakeConfig", + "CohereRerankConfig", + "CohereRerankV2Config", + "AzureAIRerankConfig", + "InfinityRerankConfig", + "JinaAIRerankConfig", + "DeepinfraRerankConfig", + "HostedVLLMRerankConfig", + "NvidiaNimRerankConfig", + "NvidiaNimRankingConfig", + "VertexAIRerankConfig", + "FireworksAIRerankConfig", + "VoyageRerankConfig", + "ClarifaiConfig", ) # Types that support lazy loading via _lazy_import_types @@ -669,4 +707,308 @@ def _lazy_import_llm_configs(name: str) -> Any: _globals["GaladrielChatConfig"] = _GaladrielChatConfig return _GaladrielChatConfig + if name == "GithubChatConfig": + from .llms.github.chat.transformation import ( + GithubChatConfig as _GithubChatConfig, + ) + + _globals["GithubChatConfig"] = _GithubChatConfig + return _GithubChatConfig + + if name == "AzureAnthropicConfig": + from .llms.azure_ai.anthropic.transformation import ( + AzureAnthropicConfig as _AzureAnthropicConfig, + ) + + _globals["AzureAnthropicConfig"] = _AzureAnthropicConfig + return _AzureAnthropicConfig + + if name == "BytezChatConfig": + from .llms.bytez.chat.transformation import ( + BytezChatConfig as _BytezChatConfig, + ) + + _globals["BytezChatConfig"] = _BytezChatConfig + return _BytezChatConfig + + if name == "CompactifAIChatConfig": + from .llms.compactifai.chat.transformation import ( + CompactifAIChatConfig as _CompactifAIChatConfig, + ) + + _globals["CompactifAIChatConfig"] = _CompactifAIChatConfig + return _CompactifAIChatConfig + + if name == "EmpowerChatConfig": + from .llms.empower.chat.transformation import ( + EmpowerChatConfig as _EmpowerChatConfig, + ) + + _globals["EmpowerChatConfig"] = _EmpowerChatConfig + return _EmpowerChatConfig + + if name == "AiohttpOpenAIChatConfig": + from .llms.aiohttp_openai.chat.transformation import ( + AiohttpOpenAIChatConfig as _AiohttpOpenAIChatConfig, + ) + + _globals["AiohttpOpenAIChatConfig"] = _AiohttpOpenAIChatConfig + return _AiohttpOpenAIChatConfig + + if name == "HuggingFaceChatConfig": + from .llms.huggingface.chat.transformation import ( + HuggingFaceChatConfig as _HuggingFaceChatConfig, + ) + + _globals["HuggingFaceChatConfig"] = _HuggingFaceChatConfig + return _HuggingFaceChatConfig + + if name == "HuggingFaceEmbeddingConfig": + from .llms.huggingface.embedding.transformation import ( + HuggingFaceEmbeddingConfig as _HuggingFaceEmbeddingConfig, + ) + + _globals["HuggingFaceEmbeddingConfig"] = _HuggingFaceEmbeddingConfig + return _HuggingFaceEmbeddingConfig + + if name == "OobaboogaConfig": + from .llms.oobabooga.chat.transformation import ( + OobaboogaConfig as _OobaboogaConfig, + ) + + _globals["OobaboogaConfig"] = _OobaboogaConfig + return _OobaboogaConfig + + if name == "MaritalkConfig": + from .llms.maritalk import ( + MaritalkConfig as _MaritalkConfig, + ) + + _globals["MaritalkConfig"] = _MaritalkConfig + return _MaritalkConfig + + if name == "OpenrouterConfig": + from .llms.openrouter.chat.transformation import ( + OpenrouterConfig as _OpenrouterConfig, + ) + + _globals["OpenrouterConfig"] = _OpenrouterConfig + return _OpenrouterConfig + + if name == "DataRobotConfig": + from .llms.datarobot.chat.transformation import ( + DataRobotConfig as _DataRobotConfig, + ) + + _globals["DataRobotConfig"] = _DataRobotConfig + return _DataRobotConfig + + if name == "AnthropicConfig": + from .llms.anthropic.chat.transformation import ( + AnthropicConfig as _AnthropicConfig, + ) + + _globals["AnthropicConfig"] = _AnthropicConfig + return _AnthropicConfig + + if name == "AnthropicTextConfig": + from .llms.anthropic.completion.transformation import ( + AnthropicTextConfig as _AnthropicTextConfig, + ) + + _globals["AnthropicTextConfig"] = _AnthropicTextConfig + return _AnthropicTextConfig + + if name == "GroqSTTConfig": + from .llms.groq.stt.transformation import ( + GroqSTTConfig as _GroqSTTConfig, + ) + + _globals["GroqSTTConfig"] = _GroqSTTConfig + return _GroqSTTConfig + + if name == "TritonConfig": + from .llms.triton.completion.transformation import ( + TritonConfig as _TritonConfig, + ) + + _globals["TritonConfig"] = _TritonConfig + return _TritonConfig + + if name == "TritonGenerateConfig": + from .llms.triton.completion.transformation import ( + TritonGenerateConfig as _TritonGenerateConfig, + ) + + _globals["TritonGenerateConfig"] = _TritonGenerateConfig + return _TritonGenerateConfig + + if name == "TritonInferConfig": + from .llms.triton.completion.transformation import ( + TritonInferConfig as _TritonInferConfig, + ) + + _globals["TritonInferConfig"] = _TritonInferConfig + return _TritonInferConfig + + if name == "TritonEmbeddingConfig": + from .llms.triton.embedding.transformation import ( + TritonEmbeddingConfig as _TritonEmbeddingConfig, + ) + + _globals["TritonEmbeddingConfig"] = _TritonEmbeddingConfig + return _TritonEmbeddingConfig + + if name == "HuggingFaceRerankConfig": + from .llms.huggingface.rerank.transformation import ( + HuggingFaceRerankConfig as _HuggingFaceRerankConfig, + ) + + _globals["HuggingFaceRerankConfig"] = _HuggingFaceRerankConfig + return _HuggingFaceRerankConfig + + if name == "DatabricksConfig": + from .llms.databricks.chat.transformation import ( + DatabricksConfig as _DatabricksConfig, + ) + + _globals["DatabricksConfig"] = _DatabricksConfig + return _DatabricksConfig + + if name == "DatabricksEmbeddingConfig": + from .llms.databricks.embed.transformation import ( + DatabricksEmbeddingConfig as _DatabricksEmbeddingConfig, + ) + + _globals["DatabricksEmbeddingConfig"] = _DatabricksEmbeddingConfig + return _DatabricksEmbeddingConfig + + if name == "PredibaseConfig": + from .llms.predibase.chat.transformation import ( + PredibaseConfig as _PredibaseConfig, + ) + + _globals["PredibaseConfig"] = _PredibaseConfig + return _PredibaseConfig + + if name == "ReplicateConfig": + from .llms.replicate.chat.transformation import ( + ReplicateConfig as _ReplicateConfig, + ) + + _globals["ReplicateConfig"] = _ReplicateConfig + return _ReplicateConfig + + if name == "SnowflakeConfig": + from .llms.snowflake.chat.transformation import ( + SnowflakeConfig as _SnowflakeConfig, + ) + + _globals["SnowflakeConfig"] = _SnowflakeConfig + return _SnowflakeConfig + + if name == "CohereRerankConfig": + from .llms.cohere.rerank.transformation import ( + CohereRerankConfig as _CohereRerankConfig, + ) + + _globals["CohereRerankConfig"] = _CohereRerankConfig + return _CohereRerankConfig + + if name == "CohereRerankV2Config": + from .llms.cohere.rerank_v2.transformation import ( + CohereRerankV2Config as _CohereRerankV2Config, + ) + + _globals["CohereRerankV2Config"] = _CohereRerankV2Config + return _CohereRerankV2Config + + if name == "AzureAIRerankConfig": + from .llms.azure_ai.rerank.transformation import ( + AzureAIRerankConfig as _AzureAIRerankConfig, + ) + + _globals["AzureAIRerankConfig"] = _AzureAIRerankConfig + return _AzureAIRerankConfig + + if name == "InfinityRerankConfig": + from .llms.infinity.rerank.transformation import ( + InfinityRerankConfig as _InfinityRerankConfig, + ) + + _globals["InfinityRerankConfig"] = _InfinityRerankConfig + return _InfinityRerankConfig + + if name == "JinaAIRerankConfig": + from .llms.jina_ai.rerank.transformation import ( + JinaAIRerankConfig as _JinaAIRerankConfig, + ) + + _globals["JinaAIRerankConfig"] = _JinaAIRerankConfig + return _JinaAIRerankConfig + + if name == "DeepinfraRerankConfig": + from .llms.deepinfra.rerank.transformation import ( + DeepinfraRerankConfig as _DeepinfraRerankConfig, + ) + + _globals["DeepinfraRerankConfig"] = _DeepinfraRerankConfig + return _DeepinfraRerankConfig + + if name == "HostedVLLMRerankConfig": + from .llms.hosted_vllm.rerank.transformation import ( + HostedVLLMRerankConfig as _HostedVLLMRerankConfig, + ) + + _globals["HostedVLLMRerankConfig"] = _HostedVLLMRerankConfig + return _HostedVLLMRerankConfig + + if name == "NvidiaNimRerankConfig": + from .llms.nvidia_nim.rerank.transformation import ( + NvidiaNimRerankConfig as _NvidiaNimRerankConfig, + ) + + _globals["NvidiaNimRerankConfig"] = _NvidiaNimRerankConfig + return _NvidiaNimRerankConfig + + if name == "NvidiaNimRankingConfig": + from .llms.nvidia_nim.rerank.ranking_transformation import ( + NvidiaNimRankingConfig as _NvidiaNimRankingConfig, + ) + + _globals["NvidiaNimRankingConfig"] = _NvidiaNimRankingConfig + return _NvidiaNimRankingConfig + + if name == "VertexAIRerankConfig": + from .llms.vertex_ai.rerank.transformation import ( + VertexAIRerankConfig as _VertexAIRerankConfig, + ) + + _globals["VertexAIRerankConfig"] = _VertexAIRerankConfig + return _VertexAIRerankConfig + + if name == "FireworksAIRerankConfig": + from .llms.fireworks_ai.rerank.transformation import ( + FireworksAIRerankConfig as _FireworksAIRerankConfig, + ) + + _globals["FireworksAIRerankConfig"] = _FireworksAIRerankConfig + return _FireworksAIRerankConfig + + if name == "VoyageRerankConfig": + from .llms.voyage.rerank.transformation import ( + VoyageRerankConfig as _VoyageRerankConfig, + ) + + _globals["VoyageRerankConfig"] = _VoyageRerankConfig + return _VoyageRerankConfig + + if name == "ClarifaiConfig": + from .llms.clarifai.chat.transformation import ( + ClarifaiConfig as _ClarifaiConfig, + ) + + _globals["ClarifaiConfig"] = _ClarifaiConfig + return _ClarifaiConfig + raise AttributeError(f"LLM config lazy import: unknown attribute {name!r}") \ No newline at end of file