Coverage for src / local_deep_research / llm / providers / implementations / xai.py: 92%
24 statements
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
1"""xAI Grok LLM provider for Local Deep Research."""
3from loguru import logger
5from ...llm_registry import register_llm
6from ..openai_base import OpenAICompatibleProvider
9class XAIProvider(OpenAICompatibleProvider):
10 """xAI Grok provider using OpenAI-compatible endpoint.
12 This uses xAI's OpenAI-compatible API endpoint to access Grok models.
13 """
15 provider_name = "xAI Grok"
16 api_key_setting = "llm.xai.api_key"
17 default_base_url = "https://api.x.ai/v1"
18 default_model = "grok-beta"
20 # Metadata for auto-discovery
21 provider_key = "XAI"
22 company_name = "xAI"
23 region = "US"
24 country = "United States"
25 data_location = "United States"
26 is_cloud = True
28 @classmethod
29 def requires_auth_for_models(cls):
30 """xAI requires authentication for listing models."""
31 return True
34# Keep the standalone functions for backward compatibility and registration
35def create_xai_llm(model_name=None, temperature=0.7, **kwargs):
36 """Factory function for xAI Grok LLMs using OpenAI-compatible endpoint.
38 Args:
39 model_name: Name of the model to use (e.g., "grok-beta", "grok-2", "grok-2-mini")
40 temperature: Model temperature (0.0-1.0)
41 **kwargs: Additional arguments including settings_snapshot
43 Returns:
44 A configured ChatOpenAI instance pointing to xAI's API
46 Raises:
47 ValueError: If xAI API key is not configured
48 """
49 return XAIProvider.create_llm(model_name, temperature, **kwargs)
52def is_xai_available(settings_snapshot=None):
53 """Check if xAI Grok is available.
55 Args:
56 settings_snapshot: Optional settings snapshot to use
58 Returns:
59 True if xAI API key is configured, False otherwise
60 """
61 return XAIProvider.is_available(settings_snapshot)
64def register_xai_provider():
65 """Register the xAI Grok provider with the LLM registry."""
66 register_llm("xai", create_xai_llm)
67 logger.info("Registered xAI Grok LLM provider")