Coverage for src / local_deep_research / llm / providers / implementations / ionos.py: 92%

25 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2026-01-11 07:37 +0000

1"""IONOS AI Model Hub LLM provider for Local Deep Research.""" 

2 

3from loguru import logger 

4 

5from ...llm_registry import register_llm 

6from ..openai_base import OpenAICompatibleProvider 

7 

8 

9class IONOSProvider(OpenAICompatibleProvider): 

10 """IONOS AI Model Hub provider using OpenAI-compatible endpoint. 

11 

12 IONOS provides GDPR-compliant AI services with data processing 

13 in Germany. The service offers OpenAI-compatible API endpoints 

14 and is currently free until September 30, 2025. 

15 """ 

16 

17 provider_name = "IONOS AI Model Hub" 

18 api_key_setting = "llm.ionos.api_key" 

19 default_base_url = "https://openai.inference.de-txl.ionos.com/v1" 

20 default_model = "meta-llama/llama-3.2-3b-instruct" # Default open model 

21 

22 # Metadata for auto-discovery 

23 provider_key = "IONOS" 

24 company_name = "IONOS" 

25 region = "EU" # EU, US, etc. 

26 country = "Germany" 

27 gdpr_compliant = True 

28 data_location = "Germany" # Where data is processed 

29 is_cloud = True 

30 

31 @classmethod 

32 def requires_auth_for_models(cls): 

33 """IONOS requires authentication for listing models.""" 

34 return True 

35 

36 

37# Keep the standalone functions for backward compatibility and registration 

38def create_ionos_llm(model_name=None, temperature=0.7, **kwargs): 

39 """Factory function for IONOS AI Model Hub LLMs using OpenAI-compatible endpoint. 

40 

41 Args: 

42 model_name: Name of the model to use (e.g., "meta-llama/llama-3.2-3b-instruct", etc.) 

43 temperature: Model temperature (0.0-1.0) 

44 **kwargs: Additional arguments including settings_snapshot 

45 

46 Returns: 

47 A configured ChatOpenAI instance pointing to IONOS's API 

48 

49 Raises: 

50 ValueError: If IONOS API key is not configured 

51 """ 

52 return IONOSProvider.create_llm(model_name, temperature, **kwargs) 

53 

54 

55def is_ionos_available(settings_snapshot=None): 

56 """Check if IONOS is available. 

57 

58 Args: 

59 settings_snapshot: Optional settings snapshot to use 

60 

61 Returns: 

62 True if IONOS API key is configured, False otherwise 

63 """ 

64 return IONOSProvider.is_available(settings_snapshot) 

65 

66 

67def register_ionos_provider(): 

68 """Register the IONOS provider with the LLM registry.""" 

69 register_llm("ionos", create_ionos_llm) 

70 logger.info("Registered IONOS AI Model Hub LLM provider")