1package models
2
3const (
4 ProviderOpenRouter InferenceProvider = "openrouter"
5
6 OpenRouterGPT41 ModelID = "openrouter.gpt-4.1"
7 OpenRouterGPT41Mini ModelID = "openrouter.gpt-4.1-mini"
8 OpenRouterGPT41Nano ModelID = "openrouter.gpt-4.1-nano"
9 OpenRouterGPT45Preview ModelID = "openrouter.gpt-4.5-preview"
10 OpenRouterGPT4o ModelID = "openrouter.gpt-4o"
11 OpenRouterGPT4oMini ModelID = "openrouter.gpt-4o-mini"
12 OpenRouterO1 ModelID = "openrouter.o1"
13 OpenRouterO1Pro ModelID = "openrouter.o1-pro"
14 OpenRouterO1Mini ModelID = "openrouter.o1-mini"
15 OpenRouterO3 ModelID = "openrouter.o3"
16 OpenRouterO3Mini ModelID = "openrouter.o3-mini"
17 OpenRouterO4Mini ModelID = "openrouter.o4-mini"
18 OpenRouterGemini25Flash ModelID = "openrouter.gemini-2.5-flash"
19 OpenRouterGemini25 ModelID = "openrouter.gemini-2.5"
20 OpenRouterClaude35Sonnet ModelID = "openrouter.claude-3.5-sonnet"
21 OpenRouterClaude3Haiku ModelID = "openrouter.claude-3-haiku"
22 OpenRouterClaude37Sonnet ModelID = "openrouter.claude-3.7-sonnet"
23 OpenRouterClaude35Haiku ModelID = "openrouter.claude-3.5-haiku"
24 OpenRouterClaude3Opus ModelID = "openrouter.claude-3-opus"
25 OpenRouterDeepSeekR1Free ModelID = "openrouter.deepseek-r1-free"
26)
27
28var OpenRouterModels = map[ModelID]Model{
29 OpenRouterGPT41: {
30 ID: OpenRouterGPT41,
31 Name: "OpenRouter – GPT 4.1",
32 Provider: ProviderOpenRouter,
33 APIModel: "openai/gpt-4.1",
34 CostPer1MIn: OpenAIModels[GPT41].CostPer1MIn,
35 CostPer1MInCached: OpenAIModels[GPT41].CostPer1MInCached,
36 CostPer1MOut: OpenAIModels[GPT41].CostPer1MOut,
37 CostPer1MOutCached: OpenAIModels[GPT41].CostPer1MOutCached,
38 ContextWindow: OpenAIModels[GPT41].ContextWindow,
39 DefaultMaxTokens: OpenAIModels[GPT41].DefaultMaxTokens,
40 },
41 OpenRouterGPT41Mini: {
42 ID: OpenRouterGPT41Mini,
43 Name: "OpenRouter – GPT 4.1 mini",
44 Provider: ProviderOpenRouter,
45 APIModel: "openai/gpt-4.1-mini",
46 CostPer1MIn: OpenAIModels[GPT41Mini].CostPer1MIn,
47 CostPer1MInCached: OpenAIModels[GPT41Mini].CostPer1MInCached,
48 CostPer1MOut: OpenAIModels[GPT41Mini].CostPer1MOut,
49 CostPer1MOutCached: OpenAIModels[GPT41Mini].CostPer1MOutCached,
50 ContextWindow: OpenAIModels[GPT41Mini].ContextWindow,
51 DefaultMaxTokens: OpenAIModels[GPT41Mini].DefaultMaxTokens,
52 },
53 OpenRouterGPT41Nano: {
54 ID: OpenRouterGPT41Nano,
55 Name: "OpenRouter – GPT 4.1 nano",
56 Provider: ProviderOpenRouter,
57 APIModel: "openai/gpt-4.1-nano",
58 CostPer1MIn: OpenAIModels[GPT41Nano].CostPer1MIn,
59 CostPer1MInCached: OpenAIModels[GPT41Nano].CostPer1MInCached,
60 CostPer1MOut: OpenAIModels[GPT41Nano].CostPer1MOut,
61 CostPer1MOutCached: OpenAIModels[GPT41Nano].CostPer1MOutCached,
62 ContextWindow: OpenAIModels[GPT41Nano].ContextWindow,
63 DefaultMaxTokens: OpenAIModels[GPT41Nano].DefaultMaxTokens,
64 },
65 OpenRouterGPT45Preview: {
66 ID: OpenRouterGPT45Preview,
67 Name: "OpenRouter – GPT 4.5 preview",
68 Provider: ProviderOpenRouter,
69 APIModel: "openai/gpt-4.5-preview",
70 CostPer1MIn: OpenAIModels[GPT45Preview].CostPer1MIn,
71 CostPer1MInCached: OpenAIModels[GPT45Preview].CostPer1MInCached,
72 CostPer1MOut: OpenAIModels[GPT45Preview].CostPer1MOut,
73 CostPer1MOutCached: OpenAIModels[GPT45Preview].CostPer1MOutCached,
74 ContextWindow: OpenAIModels[GPT45Preview].ContextWindow,
75 DefaultMaxTokens: OpenAIModels[GPT45Preview].DefaultMaxTokens,
76 },
77 OpenRouterGPT4o: {
78 ID: OpenRouterGPT4o,
79 Name: "OpenRouter – GPT 4o",
80 Provider: ProviderOpenRouter,
81 APIModel: "openai/gpt-4o",
82 CostPer1MIn: OpenAIModels[GPT4o].CostPer1MIn,
83 CostPer1MInCached: OpenAIModels[GPT4o].CostPer1MInCached,
84 CostPer1MOut: OpenAIModels[GPT4o].CostPer1MOut,
85 CostPer1MOutCached: OpenAIModels[GPT4o].CostPer1MOutCached,
86 ContextWindow: OpenAIModels[GPT4o].ContextWindow,
87 DefaultMaxTokens: OpenAIModels[GPT4o].DefaultMaxTokens,
88 },
89 OpenRouterGPT4oMini: {
90 ID: OpenRouterGPT4oMini,
91 Name: "OpenRouter – GPT 4o mini",
92 Provider: ProviderOpenRouter,
93 APIModel: "openai/gpt-4o-mini",
94 CostPer1MIn: OpenAIModels[GPT4oMini].CostPer1MIn,
95 CostPer1MInCached: OpenAIModels[GPT4oMini].CostPer1MInCached,
96 CostPer1MOut: OpenAIModels[GPT4oMini].CostPer1MOut,
97 CostPer1MOutCached: OpenAIModels[GPT4oMini].CostPer1MOutCached,
98 ContextWindow: OpenAIModels[GPT4oMini].ContextWindow,
99 },
100 OpenRouterO1: {
101 ID: OpenRouterO1,
102 Name: "OpenRouter – O1",
103 Provider: ProviderOpenRouter,
104 APIModel: "openai/o1",
105 CostPer1MIn: OpenAIModels[O1].CostPer1MIn,
106 CostPer1MInCached: OpenAIModels[O1].CostPer1MInCached,
107 CostPer1MOut: OpenAIModels[O1].CostPer1MOut,
108 CostPer1MOutCached: OpenAIModels[O1].CostPer1MOutCached,
109 ContextWindow: OpenAIModels[O1].ContextWindow,
110 DefaultMaxTokens: OpenAIModels[O1].DefaultMaxTokens,
111 CanReason: OpenAIModels[O1].CanReason,
112 },
113 OpenRouterO1Pro: {
114 ID: OpenRouterO1Pro,
115 Name: "OpenRouter – o1 pro",
116 Provider: ProviderOpenRouter,
117 APIModel: "openai/o1-pro",
118 CostPer1MIn: OpenAIModels[O1Pro].CostPer1MIn,
119 CostPer1MInCached: OpenAIModels[O1Pro].CostPer1MInCached,
120 CostPer1MOut: OpenAIModels[O1Pro].CostPer1MOut,
121 CostPer1MOutCached: OpenAIModels[O1Pro].CostPer1MOutCached,
122 ContextWindow: OpenAIModels[O1Pro].ContextWindow,
123 DefaultMaxTokens: OpenAIModels[O1Pro].DefaultMaxTokens,
124 CanReason: OpenAIModels[O1Pro].CanReason,
125 },
126 OpenRouterO1Mini: {
127 ID: OpenRouterO1Mini,
128 Name: "OpenRouter – o1 mini",
129 Provider: ProviderOpenRouter,
130 APIModel: "openai/o1-mini",
131 CostPer1MIn: OpenAIModels[O1Mini].CostPer1MIn,
132 CostPer1MInCached: OpenAIModels[O1Mini].CostPer1MInCached,
133 CostPer1MOut: OpenAIModels[O1Mini].CostPer1MOut,
134 CostPer1MOutCached: OpenAIModels[O1Mini].CostPer1MOutCached,
135 ContextWindow: OpenAIModels[O1Mini].ContextWindow,
136 DefaultMaxTokens: OpenAIModels[O1Mini].DefaultMaxTokens,
137 CanReason: OpenAIModels[O1Mini].CanReason,
138 },
139 OpenRouterO3: {
140 ID: OpenRouterO3,
141 Name: "OpenRouter – o3",
142 Provider: ProviderOpenRouter,
143 APIModel: "openai/o3",
144 CostPer1MIn: OpenAIModels[O3].CostPer1MIn,
145 CostPer1MInCached: OpenAIModels[O3].CostPer1MInCached,
146 CostPer1MOut: OpenAIModels[O3].CostPer1MOut,
147 CostPer1MOutCached: OpenAIModels[O3].CostPer1MOutCached,
148 ContextWindow: OpenAIModels[O3].ContextWindow,
149 DefaultMaxTokens: OpenAIModels[O3].DefaultMaxTokens,
150 CanReason: OpenAIModels[O3].CanReason,
151 },
152 OpenRouterO3Mini: {
153 ID: OpenRouterO3Mini,
154 Name: "OpenRouter – o3 mini",
155 Provider: ProviderOpenRouter,
156 APIModel: "openai/o3-mini-high",
157 CostPer1MIn: OpenAIModels[O3Mini].CostPer1MIn,
158 CostPer1MInCached: OpenAIModels[O3Mini].CostPer1MInCached,
159 CostPer1MOut: OpenAIModels[O3Mini].CostPer1MOut,
160 CostPer1MOutCached: OpenAIModels[O3Mini].CostPer1MOutCached,
161 ContextWindow: OpenAIModels[O3Mini].ContextWindow,
162 DefaultMaxTokens: OpenAIModels[O3Mini].DefaultMaxTokens,
163 CanReason: OpenAIModels[O3Mini].CanReason,
164 },
165 OpenRouterO4Mini: {
166 ID: OpenRouterO4Mini,
167 Name: "OpenRouter – o4 mini",
168 Provider: ProviderOpenRouter,
169 APIModel: "openai/o4-mini-high",
170 CostPer1MIn: OpenAIModels[O4Mini].CostPer1MIn,
171 CostPer1MInCached: OpenAIModels[O4Mini].CostPer1MInCached,
172 CostPer1MOut: OpenAIModels[O4Mini].CostPer1MOut,
173 CostPer1MOutCached: OpenAIModels[O4Mini].CostPer1MOutCached,
174 ContextWindow: OpenAIModels[O4Mini].ContextWindow,
175 DefaultMaxTokens: OpenAIModels[O4Mini].DefaultMaxTokens,
176 CanReason: OpenAIModels[O4Mini].CanReason,
177 },
178 OpenRouterGemini25Flash: {
179 ID: OpenRouterGemini25Flash,
180 Name: "OpenRouter – Gemini 2.5 Flash",
181 Provider: ProviderOpenRouter,
182 APIModel: "google/gemini-2.5-flash-preview:thinking",
183 CostPer1MIn: GeminiModels[Gemini25Flash].CostPer1MIn,
184 CostPer1MInCached: GeminiModels[Gemini25Flash].CostPer1MInCached,
185 CostPer1MOut: GeminiModels[Gemini25Flash].CostPer1MOut,
186 CostPer1MOutCached: GeminiModels[Gemini25Flash].CostPer1MOutCached,
187 ContextWindow: GeminiModels[Gemini25Flash].ContextWindow,
188 DefaultMaxTokens: GeminiModels[Gemini25Flash].DefaultMaxTokens,
189 },
190 OpenRouterGemini25: {
191 ID: OpenRouterGemini25,
192 Name: "OpenRouter – Gemini 2.5 Pro",
193 Provider: ProviderOpenRouter,
194 APIModel: "google/gemini-2.5-pro-preview-03-25",
195 CostPer1MIn: GeminiModels[Gemini25].CostPer1MIn,
196 CostPer1MInCached: GeminiModels[Gemini25].CostPer1MInCached,
197 CostPer1MOut: GeminiModels[Gemini25].CostPer1MOut,
198 CostPer1MOutCached: GeminiModels[Gemini25].CostPer1MOutCached,
199 ContextWindow: GeminiModels[Gemini25].ContextWindow,
200 DefaultMaxTokens: GeminiModels[Gemini25].DefaultMaxTokens,
201 },
202 OpenRouterClaude35Sonnet: {
203 ID: OpenRouterClaude35Sonnet,
204 Name: "OpenRouter – Claude 3.5 Sonnet",
205 Provider: ProviderOpenRouter,
206 APIModel: "anthropic/claude-3.5-sonnet",
207 CostPer1MIn: AnthropicModels[Claude35Sonnet].CostPer1MIn,
208 CostPer1MInCached: AnthropicModels[Claude35Sonnet].CostPer1MInCached,
209 CostPer1MOut: AnthropicModels[Claude35Sonnet].CostPer1MOut,
210 CostPer1MOutCached: AnthropicModels[Claude35Sonnet].CostPer1MOutCached,
211 ContextWindow: AnthropicModels[Claude35Sonnet].ContextWindow,
212 DefaultMaxTokens: AnthropicModels[Claude35Sonnet].DefaultMaxTokens,
213 },
214 OpenRouterClaude3Haiku: {
215 ID: OpenRouterClaude3Haiku,
216 Name: "OpenRouter – Claude 3 Haiku",
217 Provider: ProviderOpenRouter,
218 APIModel: "anthropic/claude-3-haiku",
219 CostPer1MIn: AnthropicModels[Claude3Haiku].CostPer1MIn,
220 CostPer1MInCached: AnthropicModels[Claude3Haiku].CostPer1MInCached,
221 CostPer1MOut: AnthropicModels[Claude3Haiku].CostPer1MOut,
222 CostPer1MOutCached: AnthropicModels[Claude3Haiku].CostPer1MOutCached,
223 ContextWindow: AnthropicModels[Claude3Haiku].ContextWindow,
224 DefaultMaxTokens: AnthropicModels[Claude3Haiku].DefaultMaxTokens,
225 },
226 OpenRouterClaude37Sonnet: {
227 ID: OpenRouterClaude37Sonnet,
228 Name: "OpenRouter – Claude 3.7 Sonnet",
229 Provider: ProviderOpenRouter,
230 APIModel: "anthropic/claude-3.7-sonnet",
231 CostPer1MIn: AnthropicModels[Claude37Sonnet].CostPer1MIn,
232 CostPer1MInCached: AnthropicModels[Claude37Sonnet].CostPer1MInCached,
233 CostPer1MOut: AnthropicModels[Claude37Sonnet].CostPer1MOut,
234 CostPer1MOutCached: AnthropicModels[Claude37Sonnet].CostPer1MOutCached,
235 ContextWindow: AnthropicModels[Claude37Sonnet].ContextWindow,
236 DefaultMaxTokens: AnthropicModels[Claude37Sonnet].DefaultMaxTokens,
237 CanReason: AnthropicModels[Claude37Sonnet].CanReason,
238 },
239 OpenRouterClaude35Haiku: {
240 ID: OpenRouterClaude35Haiku,
241 Name: "OpenRouter – Claude 3.5 Haiku",
242 Provider: ProviderOpenRouter,
243 APIModel: "anthropic/claude-3.5-haiku",
244 CostPer1MIn: AnthropicModels[Claude35Haiku].CostPer1MIn,
245 CostPer1MInCached: AnthropicModels[Claude35Haiku].CostPer1MInCached,
246 CostPer1MOut: AnthropicModels[Claude35Haiku].CostPer1MOut,
247 CostPer1MOutCached: AnthropicModels[Claude35Haiku].CostPer1MOutCached,
248 ContextWindow: AnthropicModels[Claude35Haiku].ContextWindow,
249 DefaultMaxTokens: AnthropicModels[Claude35Haiku].DefaultMaxTokens,
250 },
251 OpenRouterClaude3Opus: {
252 ID: OpenRouterClaude3Opus,
253 Name: "OpenRouter – Claude 3 Opus",
254 Provider: ProviderOpenRouter,
255 APIModel: "anthropic/claude-3-opus",
256 CostPer1MIn: AnthropicModels[Claude3Opus].CostPer1MIn,
257 CostPer1MInCached: AnthropicModels[Claude3Opus].CostPer1MInCached,
258 CostPer1MOut: AnthropicModels[Claude3Opus].CostPer1MOut,
259 CostPer1MOutCached: AnthropicModels[Claude3Opus].CostPer1MOutCached,
260 ContextWindow: AnthropicModels[Claude3Opus].ContextWindow,
261 DefaultMaxTokens: AnthropicModels[Claude3Opus].DefaultMaxTokens,
262 },
263
264 OpenRouterDeepSeekR1Free: {
265 ID: OpenRouterDeepSeekR1Free,
266 Name: "OpenRouter – DeepSeek R1 Free",
267 Provider: ProviderOpenRouter,
268 APIModel: "deepseek/deepseek-r1-0528:free",
269 CostPer1MIn: 0,
270 CostPer1MInCached: 0,
271 CostPer1MOut: 0,
272 CostPer1MOutCached: 0,
273 ContextWindow: 163_840,
274 DefaultMaxTokens: 10000,
275 },
276}