1package models
2
3type (
4 ModelID string
5 ModelProvider string
6)
7
8type Model struct {
9 ID ModelID `json:"id"`
10 Name string `json:"name"`
11 Provider ModelProvider `json:"provider"`
12 APIModel string `json:"api_model"`
13 CostPer1MIn float64 `json:"cost_per_1m_in"`
14 CostPer1MOut float64 `json:"cost_per_1m_out"`
15 CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
16 CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
17}
18
19// Model IDs
20const (
21 // Anthropic
22 Claude35Sonnet ModelID = "claude-3.5-sonnet"
23 Claude3Haiku ModelID = "claude-3-haiku"
24 Claude37Sonnet ModelID = "claude-3.7-sonnet"
25 // OpenAI
26 GPT41 ModelID = "gpt-4.1"
27
28 // GEMINI
29 GEMINI25 ModelID = "gemini-2.5"
30 GRMINI20Flash ModelID = "gemini-2.0-flash"
31
32 // GROQ
33 QWENQwq ModelID = "qwen-qwq"
34
35 // Bedrock
36 BedrockClaude37Sonnet ModelID = "bedrock.claude-3.7-sonnet"
37)
38
39const (
40 ProviderOpenAI ModelProvider = "openai"
41 ProviderAnthropic ModelProvider = "anthropic"
42 ProviderBedrock ModelProvider = "bedrock"
43 ProviderGemini ModelProvider = "gemini"
44 ProviderGROQ ModelProvider = "groq"
45)
46
47var SupportedModels = map[ModelID]Model{
48 // Anthropic
49 Claude35Sonnet: {
50 ID: Claude35Sonnet,
51 Name: "Claude 3.5 Sonnet",
52 Provider: ProviderAnthropic,
53 APIModel: "claude-3-5-sonnet-latest",
54 CostPer1MIn: 3.0,
55 CostPer1MInCached: 3.75,
56 CostPer1MOutCached: 0.30,
57 CostPer1MOut: 15.0,
58 },
59 Claude3Haiku: {
60 ID: Claude3Haiku,
61 Name: "Claude 3 Haiku",
62 Provider: ProviderAnthropic,
63 APIModel: "claude-3-haiku-latest",
64 CostPer1MIn: 0.80,
65 CostPer1MInCached: 1,
66 CostPer1MOutCached: 0.08,
67 CostPer1MOut: 4,
68 },
69 Claude37Sonnet: {
70 ID: Claude37Sonnet,
71 Name: "Claude 3.7 Sonnet",
72 Provider: ProviderAnthropic,
73 APIModel: "claude-3-7-sonnet-latest",
74 CostPer1MIn: 3.0,
75 CostPer1MInCached: 3.75,
76 CostPer1MOutCached: 0.30,
77 CostPer1MOut: 15.0,
78 },
79
80 // OpenAI
81 GPT41: {
82 ID: GPT41,
83 Name: "GPT-4.1",
84 Provider: ProviderOpenAI,
85 APIModel: "gpt-4.1",
86 CostPer1MIn: 2.00,
87 CostPer1MInCached: 0.50,
88 CostPer1MOutCached: 0,
89 CostPer1MOut: 8.00,
90 },
91
92 // GEMINI
93 GEMINI25: {
94 ID: GEMINI25,
95 Name: "Gemini 2.5 Pro",
96 Provider: ProviderGemini,
97 APIModel: "gemini-2.5-pro-exp-03-25",
98 CostPer1MIn: 0,
99 CostPer1MInCached: 0,
100 CostPer1MOutCached: 0,
101 CostPer1MOut: 0,
102 },
103
104 GRMINI20Flash: {
105 ID: GRMINI20Flash,
106 Name: "Gemini 2.0 Flash",
107 Provider: ProviderGemini,
108 APIModel: "gemini-2.0-flash",
109 CostPer1MIn: 0.1,
110 CostPer1MInCached: 0,
111 CostPer1MOutCached: 0.025,
112 CostPer1MOut: 0.4,
113 },
114
115 // GROQ
116 QWENQwq: {
117 ID: QWENQwq,
118 Name: "Qwen Qwq",
119 Provider: ProviderGROQ,
120 APIModel: "qwen-qwq-32b",
121 CostPer1MIn: 0,
122 CostPer1MInCached: 0,
123 CostPer1MOutCached: 0,
124 CostPer1MOut: 0,
125 },
126
127 // Bedrock
128 BedrockClaude37Sonnet: {
129 ID: BedrockClaude37Sonnet,
130 Name: "Bedrock: Claude 3.7 Sonnet",
131 Provider: ProviderBedrock,
132 APIModel: "anthropic.claude-3-7-sonnet-20250219-v1:0",
133 CostPer1MIn: 3.0,
134 CostPer1MInCached: 3.75,
135 CostPer1MOutCached: 0.30,
136 CostPer1MOut: 15.0,
137 },
138}