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