Coverage for src / local_deep_research / llm / providers / implementations / xai.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-02-25 01:07 +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 is_cloud = True 

24 

25 @classmethod 

26 def requires_auth_for_models(cls): 

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

28 return True 

29 

30 

31# Keep the standalone functions for backward compatibility and registration 

32def create_xai_llm(model_name=None, temperature=0.7, **kwargs): 

33 """Factory function for xAI Grok LLMs using OpenAI-compatible endpoint. 

34 

35 Args: 

36 model_name: Name of the model to use (e.g., "grok-beta", "grok-2", "grok-2-mini") 

37 temperature: Model temperature (0.0-1.0) 

38 **kwargs: Additional arguments including settings_snapshot 

39 

40 Returns: 

41 A configured ChatOpenAI instance pointing to xAI's API 

42 

43 Raises: 

44 ValueError: If xAI API key is not configured 

45 """ 

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

47 

48 

49def is_xai_available(settings_snapshot=None): 

50 """Check if xAI Grok is available. 

51 

52 Args: 

53 settings_snapshot: Optional settings snapshot to use 

54 

55 Returns: 

56 True if xAI API key is configured, False otherwise 

57 """ 

58 return XAIProvider.is_available(settings_snapshot) 

59 

60 

61def register_xai_provider(): 

62 """Register the xAI Grok provider with the LLM registry.""" 

63 register_llm("xai", create_xai_llm) 

64 logger.info("Registered xAI Grok LLM provider")