openrouter.go

  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}