1"""Model capability definitions for LLM selection."""
2
3from __future__ import annotations
4
5from dataclasses import dataclass
6
7
8@dataclass
9class ModelCapabilities:
10 """Model capabilities and constraints."""
11
12 max_tokens: int
13 supports_functions: bool = False
14 supports_vision: bool = False
15 supports_streaming: bool = True
16 cost_per_1k_input: float = 0.0
17 cost_per_1k_output: float = 0.0
18 avg_latency_ms: float = 2000.0
19 quality_score: float = 0.8
20
21
22DEFAULT_MODEL_CAPABILITIES: dict[str, ModelCapabilities] = {
23 "gpt-4-turbo": ModelCapabilities(
24 max_tokens=128000,
25 supports_functions=True,
26 supports_vision=True,
27 supports_streaming=True,
28 cost_per_1k_input=10.0,
29 cost_per_1k_output=30.0,
30 avg_latency_ms=2000,
31 quality_score=0.95,
32 ),
33 "gpt-4": ModelCapabilities(
34 max_tokens=8192,
35 supports_functions=True,
36 supports_vision=False,
37 supports_streaming=True,
38 cost_per_1k_input=30.0,
39 cost_per_1k_output=60.0,
40 avg_latency_ms=2500,
41 quality_score=0.95,
42 ),
43 "gpt-3.5-turbo": ModelCapabilities(
44 max_tokens=16385,
45 supports_functions=True,
46 supports_vision=False,
47 supports_streaming=True,
48 cost_per_1k_input=0.5,
49 cost_per_1k_output=1.5,
50 avg_latency_ms=800,
51 quality_score=0.75,
52 ),
53 "claude-3-opus-20240229": ModelCapabilities(
54 max_tokens=200000,
55 supports_functions=True,
56 supports_vision=True,
57 supports_streaming=True,
58 cost_per_1k_input=15.0,
59 cost_per_1k_output=75.0,
60 avg_latency_ms=2500,
61 quality_score=0.98,
62 ),
63 "claude-3-sonnet-20240229": ModelCapabilities(
64 max_tokens=200000,
65 supports_functions=True,
66 supports_vision=True,
67 supports_streaming=True,
68 cost_per_1k_input=3.0,
69 cost_per_1k_output=15.0,
70 avg_latency_ms=1500,
71 quality_score=0.90,
72 ),
73 "claude-3-haiku-20240307": ModelCapabilities(
74 max_tokens=200000,
75 supports_functions=True,
76 supports_vision=True,
77 supports_streaming=True,
78 cost_per_1k_input=0.25,
79 cost_per_1k_output=1.25,
80 avg_latency_ms=600,
81 quality_score=0.70,
82 ),
83 "ollama/llama3": ModelCapabilities(
84 max_tokens=8192,
85 supports_functions=False,
86 supports_vision=False,
87 supports_streaming=True,
88 cost_per_1k_input=0.0,
89 cost_per_1k_output=0.0,
90 avg_latency_ms=5000,
91 quality_score=0.75,
92 ),
93}