File size: 1,758 Bytes
b313f94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import os
from typing import Dict
from .base import BaseLLMProvider
from .factory import LLMFactory

__all__ = [
    "BaseLLMProvider",
    "LLMFactory",
]


def initialize_providers() -> Dict:
    available_providers = {}
    
    # Auto-discover all providers
    provider_names = LLMFactory.get_available_providers()
    
    for provider_name in provider_names:
        try:
            if provider_name == "mock":
                # Mock provider - always available
                provider = LLMFactory.create_provider(provider_name, delay=0.05)
                if provider.is_available():
                    available_providers[provider.name] = provider

            elif provider_name == "ollama":
                ollama_url = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434")
                provider = LLMFactory.create_provider(provider_name, api_url=ollama_url)
                if provider.is_available():
                    available_providers[provider.name] = provider

            else:
                # Generic provider - try to load with API key or URL from env
                env_url = f"{provider_name.upper()}_API_URL"
                env_key = f"{provider_name.upper()}_API_KEY"
                if api_key := os.getenv(env_key):
                    provider = LLMFactory.create_provider(provider_name, api_key=api_key)

                elif api_url := os.getenv(env_url):
                    provider = LLMFactory.create_provider(provider_name, api_url=api_url)

                if provider.is_available():
                    available_providers[provider.name] = provider
                        
        except Exception as e:
            print(f"Failed to initialize {provider_name}: {e}")
    
    return available_providers