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
« 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."""
3from loguru import logger
5from ...llm_registry import register_llm
6from ..openai_base import OpenAICompatibleProvider
9class IONOSProvider(OpenAICompatibleProvider):
10 """IONOS AI Model Hub provider using OpenAI-compatible endpoint.
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 """
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
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
31 @classmethod
32 def requires_auth_for_models(cls):
33 """IONOS requires authentication for listing models."""
34 return True
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.
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
46 Returns:
47 A configured ChatOpenAI instance pointing to IONOS's API
49 Raises:
50 ValueError: If IONOS API key is not configured
51 """
52 return IONOSProvider.create_llm(model_name, temperature, **kwargs)
55def is_ionos_available(settings_snapshot=None):
56 """Check if IONOS is available.
58 Args:
59 settings_snapshot: Optional settings snapshot to use
61 Returns:
62 True if IONOS API key is configured, False otherwise
63 """
64 return IONOSProvider.is_available(settings_snapshot)
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")