11"""Factory for creating AIProvider instances based on the provider configuration."""
22
33import importlib
4- from typing import Any , List , Literal , Optional , Type
4+ from typing import Any , Dict , List , Literal , Optional , Tuple , Type
55
66from ldai .models import AIConfigKind
77from ldai .providers .ai_provider import AIProvider
88
99# List of supported AI providers
10- SUPPORTED_AI_PROVIDERS = [
10+ SUPPORTED_AI_PROVIDERS : List [ str ] = [
1111 # Multi-provider packages should be last in the list
12- 'langchain' ,
12+ # 'langchain', # TODO: Uncomment when langchain provider package is introduced
1313]
1414
1515# Type representing the supported AI providers
16- SupportedAIProvider = Literal ['langchain' ]
16+ # TODO: Update this type when provider packages are introduced
17+ # SupportedAIProvider = Literal['langchain']
18+ SupportedAIProvider = Literal ['none' ] # Placeholder until providers are added
1719
1820
1921class AIProviderFactory :
@@ -79,9 +81,10 @@ def _get_providers_to_try(
7981 provider_set .add (provider_name ) # type: ignore
8082
8183 # Then try multi-provider packages, but avoid duplicates
82- multi_provider_packages : List [SupportedAIProvider ] = ['langchain' ]
83- for provider in multi_provider_packages :
84- provider_set .add (provider )
84+ # TODO: Uncomment when langchain provider package is introduced
85+ # multi_provider_packages: List[SupportedAIProvider] = ['langchain']
86+ # for provider in multi_provider_packages:
87+ # provider_set.add(provider)
8588
8689 # Return list of providers, converting from set
8790 # The set contains strings that should be valid SupportedAIProvider values
@@ -102,20 +105,21 @@ async def _try_create_provider(
102105 :return: AIProvider instance or None if creation failed
103106 """
104107 # Handle built-in providers (part of this package)
105- if provider_type == 'langchain' :
106- try :
107- from ldai .providers .langchain import LangChainProvider
108- return await LangChainProvider .create (ai_config , logger )
109- except ImportError as error :
110- if logger :
111- logger .warn (
112- f"Error creating LangChainProvider: { error } . "
113- f"Make sure langchain and langchain-core packages are installed."
114- )
115- return None
108+ # TODO: Uncomment when langchain provider package is introduced
109+ # if provider_type == 'langchain':
110+ # try:
111+ # from ldai.providers.langchain import LangChainProvider
112+ # return await LangChainProvider.create(ai_config, logger)
113+ # except ImportError as error:
114+ # if logger:
115+ # logger.warn(
116+ # f"Error creating LangChainProvider: {error}. "
117+ # f"Make sure langchain and langchain-core packages are installed."
118+ # )
119+ # return None
116120
117121 # For future external providers, use dynamic import
118- provider_mappings = {
122+ provider_mappings : Dict [ str , Tuple [ str , str ]] = {
119123 # 'openai': ('launchdarkly_server_sdk_ai_openai', 'OpenAIProvider'),
120124 # 'vercel': ('launchdarkly_server_sdk_ai_vercel', 'VercelProvider'),
121125 }
0 commit comments