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

1"""xAI Grok 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 XAIProvider(OpenAICompatibleProvider): 

10 """xAI Grok provider using OpenAI-compatible endpoint. 

11 

12 This uses xAI's OpenAI-compatible API endpoint to access Grok models. 

13 """ 

14 

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" 

19 

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 

27 

28 @classmethod 

29 def requires_auth_for_models(cls): 

30 """xAI requires authentication for listing models.""" 

31 return True 

32 

33 

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. 

37 

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 

42 

43 Returns: 

44 A configured ChatOpenAI instance pointing to xAI's API 

45 

46 Raises: 

47 ValueError: If xAI API key is not configured 

48 """ 

49 return XAIProvider.create_llm(model_name, temperature, **kwargs) 

50 

51 

52def is_xai_available(settings_snapshot=None): 

53 """Check if xAI Grok is available. 

54 

55 Args: 

56 settings_snapshot: Optional settings snapshot to use 

57 

58 Returns: 

59 True if xAI API key is configured, False otherwise 

60 """ 

61 return XAIProvider.is_available(settings_snapshot) 

62 

63 

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")