Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-llm/src/lexigram/ai/llm/routing/__init__.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-25 07:19 +0800

1"""LLM multi-provider routing package. 

2 

3Provides a cascade-style router that tries providers in priority order 

4and records every attempt via a pluggable quota backend and inference logger. 

5 

6Quick start:: 

7 

8 from lexigram.ai.llm.routing import ( 

9 LLMRouter, 

10 LLMConfig, 

11 ProviderConfig, 

12 InferenceResult, 

13 InferenceError, 

14 InferenceLog, 

15 InMemoryQuotaBackend, 

16 InMemoryInferenceLogger, 

17 ) 

18 

19 config = LLMConfig.from_env() 

20 router = LLMRouter( 

21 config=config, 

22 clients={}, 

23 quota_backend=InMemoryQuotaBackend(), 

24 inference_logger=InMemoryInferenceLogger(), 

25 ) 

26 result = await router.route(messages=[{"role": "user", "content": "Hello"}]) 

27""" 

28 

29from __future__ import annotations 

30 

31from lexigram.ai.llm.routing.ab_split import ABSplitConfig, ABSplitStrategy 

32from lexigram.ai.llm.routing.backends.database import DatabaseQuotaBackend 

33from lexigram.ai.llm.routing.backends.memory import InMemoryQuotaBackend 

34from lexigram.ai.llm.routing.config import ( 

35 GenerationDefaults, 

36 LLMConfig, 

37 LogConfig, 

38 ProviderConfig, 

39 QuotaConfig, 

40) 

41from lexigram.ai.llm.routing.loggers.database import DatabaseInferenceLogger 

42from lexigram.ai.llm.routing.loggers.memory import InMemoryInferenceLogger 

43from lexigram.ai.llm.routing.orchestrator import ( 

44 LLMOrchestrator, 

45 NoSuitableModelError, 

46 OrchestratorError, 

47) 

48from lexigram.ai.llm.routing.router import LLMRouter 

49from lexigram.ai.llm.routing.strategies import ( 

50 CostOptimizedStrategy, 

51 LatencyOptimizedStrategy, 

52 ParallelRaceStrategy, 

53 RoutingStrategyProtocol, 

54 SequentialCascadeStrategy, 

55) 

56from lexigram.ai.llm.routing.types import ( 

57 InferenceError, 

58 InferenceLog, 

59 InferenceResult, 

60 ProviderUsage, 

61) 

62 

63__all__ = [ 

64 "ABSplitConfig", 

65 "ABSplitStrategy", 

66 "CostOptimizedStrategy", 

67 "DatabaseInferenceLogger", 

68 "DatabaseQuotaBackend", 

69 "GenerationDefaults", 

70 "InMemoryInferenceLogger", 

71 "InMemoryQuotaBackend", 

72 "InferenceError", 

73 "InferenceLog", 

74 "InferenceResult", 

75 "LLMConfig", 

76 "LLMOrchestrator", 

77 "LLMRouter", 

78 "LatencyOptimizedStrategy", 

79 "LogConfig", 

80 "NoSuitableModelError", 

81 "OrchestratorError", 

82 "ParallelRaceStrategy", 

83 "ProviderConfig", 

84 "ProviderUsage", 

85 "QuotaConfig", 

86 "RoutingStrategyProtocol", 

87 "SequentialCascadeStrategy", 

88]