Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-llm/src/lexigram/ai/llm/selection/_scoring.py: 100%
15 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1"""Selector factory presets for model scoring tradeoffs."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7if TYPE_CHECKING:
8 from lexigram.ai.llm.selection.core import ModelSelector
11def create_cost_optimized_selector(
12 budget_per_1k_tokens: float = 2.0,
13) -> ModelSelector:
14 """Create a cost-optimized model selector."""
15 from lexigram.ai.llm.selection.core import ModelSelector, SelectionStrategy
17 _ = budget_per_1k_tokens
18 strategies = [
19 SelectionStrategy(
20 name="budget_tiny",
21 model="claude-3-haiku-20240307",
22 conditions={"max_tokens": 500},
23 priority=10,
24 description=None,
25 ),
26 SelectionStrategy(
27 name="budget_small",
28 model="gpt-3.5-turbo",
29 conditions={"max_tokens": 2000},
30 priority=9,
31 description=None,
32 ),
33 SelectionStrategy(
34 name="budget_medium",
35 model="claude-3-sonnet-20240229",
36 conditions={"max_tokens": 10000},
37 priority=8,
38 description=None,
39 ),
40 ]
42 return ModelSelector(
43 default_model="gpt-3.5-turbo",
44 strategies=strategies,
45 fallback_chain=[
46 "claude-3-haiku-20240307",
47 "gpt-3.5-turbo",
48 "ollama/llama3",
49 ],
50 )
53def create_quality_optimized_selector() -> ModelSelector:
54 """Create a quality-optimized model selector."""
55 from lexigram.ai.llm.selection.core import ModelSelector, SelectionStrategy
57 strategies = [
58 SelectionStrategy(
59 name="max_quality_long",
60 model="claude-3-opus-20240229",
61 conditions={"min_tokens": 1000},
62 priority=10,
63 description=None,
64 ),
65 SelectionStrategy(
66 name="max_quality_short",
67 model="gpt-4-turbo",
68 conditions={"max_tokens": 10000},
69 priority=9,
70 description=None,
71 ),
72 ]
74 return ModelSelector(
75 default_model="gpt-4-turbo",
76 strategies=strategies,
77 fallback_chain=[
78 "claude-3-opus-20240229",
79 "gpt-4-turbo",
80 "claude-3-sonnet-20240229",
81 "gpt-3.5-turbo",
82 ],
83 )
86def create_balanced_selector() -> ModelSelector:
87 """Create a balanced model selector."""
88 from lexigram.ai.llm.selection.core import ModelSelector, SelectionStrategy
90 strategies = [
91 SelectionStrategy(
92 name="simple_fast",
93 model="claude-3-haiku-20240307",
94 conditions={"max_tokens": 500},
95 priority=10,
96 description=None,
97 ),
98 SelectionStrategy(
99 name="medium_balanced",
100 model="claude-3-sonnet-20240229",
101 conditions={"min_tokens": 500, "max_tokens": 5000},
102 priority=9,
103 description=None,
104 ),
105 SelectionStrategy(
106 name="complex_quality",
107 model="gpt-4-turbo",
108 conditions={"min_tokens": 5000},
109 priority=8,
110 description=None,
111 ),
112 ]
114 return ModelSelector(
115 default_model="claude-3-sonnet-20240229",
116 strategies=strategies,
117 fallback_chain=[
118 "claude-3-sonnet-20240229",
119 "gpt-3.5-turbo",
120 "claude-3-haiku-20240307",
121 ],
122 )