package models const ( ProviderOpenRouter ModelProvider = "openrouter" OpenRouterGPT41 ModelID = "openrouter.gpt-4.1" OpenRouterGPT41Mini ModelID = "openrouter.gpt-4.1-mini" OpenRouterGPT41Nano ModelID = "openrouter.gpt-4.1-nano" OpenRouterGPT45Preview ModelID = "openrouter.gpt-4.5-preview" OpenRouterGPT4o ModelID = "openrouter.gpt-4o" OpenRouterGPT4oMini ModelID = "openrouter.gpt-4o-mini" OpenRouterO1 ModelID = "openrouter.o1" OpenRouterO1Pro ModelID = "openrouter.o1-pro" OpenRouterO1Mini ModelID = "openrouter.o1-mini" OpenRouterO3 ModelID = "openrouter.o3" OpenRouterO3Mini ModelID = "openrouter.o3-mini" OpenRouterO4Mini ModelID = "openrouter.o4-mini" OpenRouterGemini25Flash ModelID = "openrouter.gemini-2.5-flash" OpenRouterGemini25 ModelID = "openrouter.gemini-2.5" OpenRouterClaude35Sonnet ModelID = "openrouter.claude-3.5-sonnet" OpenRouterClaude3Haiku ModelID = "openrouter.claude-3-haiku" OpenRouterClaude37Sonnet ModelID = "openrouter.claude-3.7-sonnet" OpenRouterClaude35Haiku ModelID = "openrouter.claude-3.5-haiku" OpenRouterClaude3Opus ModelID = "openrouter.claude-3-opus" OpenRouterQwen235B ModelID = "openrouter.qwen-3-235b" OpenRouterQwen32B ModelID = "openrouter.qwen-3-32b" OpenRouterQwen30B ModelID = "openrouter.qwen-3-30b" OpenRouterQwen14B ModelID = "openrouter.qwen-3-14b" OpenRouterQwen8B ModelID = "openrouter.qwen-3-8b" ) var OpenRouterModels = map[ModelID]Model{ OpenRouterGPT41: { ID: OpenRouterGPT41, Name: "OpenRouter: GPT 4.1", Provider: ProviderOpenRouter, APIModel: "openai/gpt-4.1", CostPer1MIn: OpenAIModels[GPT41].CostPer1MIn, CostPer1MInCached: OpenAIModels[GPT41].CostPer1MInCached, CostPer1MOut: OpenAIModels[GPT41].CostPer1MOut, CostPer1MOutCached: OpenAIModels[GPT41].CostPer1MOutCached, ContextWindow: OpenAIModels[GPT41].ContextWindow, DefaultMaxTokens: OpenAIModels[GPT41].DefaultMaxTokens, }, OpenRouterGPT41Mini: { ID: OpenRouterGPT41Mini, Name: "OpenRouter: GPT 4.1 mini", Provider: ProviderOpenRouter, APIModel: "openai/gpt-4.1-mini", CostPer1MIn: OpenAIModels[GPT41Mini].CostPer1MIn, CostPer1MInCached: OpenAIModels[GPT41Mini].CostPer1MInCached, CostPer1MOut: OpenAIModels[GPT41Mini].CostPer1MOut, CostPer1MOutCached: OpenAIModels[GPT41Mini].CostPer1MOutCached, ContextWindow: OpenAIModels[GPT41Mini].ContextWindow, DefaultMaxTokens: OpenAIModels[GPT41Mini].DefaultMaxTokens, }, OpenRouterGPT41Nano: { ID: OpenRouterGPT41Nano, Name: "OpenRouter: GPT 4.1 nano", Provider: ProviderOpenRouter, APIModel: "openai/gpt-4.1-nano", CostPer1MIn: OpenAIModels[GPT41Nano].CostPer1MIn, CostPer1MInCached: OpenAIModels[GPT41Nano].CostPer1MInCached, CostPer1MOut: OpenAIModels[GPT41Nano].CostPer1MOut, CostPer1MOutCached: OpenAIModels[GPT41Nano].CostPer1MOutCached, ContextWindow: OpenAIModels[GPT41Nano].ContextWindow, DefaultMaxTokens: OpenAIModels[GPT41Nano].DefaultMaxTokens, }, OpenRouterGPT45Preview: { ID: OpenRouterGPT45Preview, Name: "OpenRouter: GPT 4.5 preview", Provider: ProviderOpenRouter, APIModel: "openai/gpt-4.5-preview", CostPer1MIn: OpenAIModels[GPT45Preview].CostPer1MIn, CostPer1MInCached: OpenAIModels[GPT45Preview].CostPer1MInCached, CostPer1MOut: OpenAIModels[GPT45Preview].CostPer1MOut, CostPer1MOutCached: OpenAIModels[GPT45Preview].CostPer1MOutCached, ContextWindow: OpenAIModels[GPT45Preview].ContextWindow, DefaultMaxTokens: OpenAIModels[GPT45Preview].DefaultMaxTokens, }, OpenRouterGPT4o: { ID: OpenRouterGPT4o, Name: "OpenRouter: GPT 4o", Provider: ProviderOpenRouter, APIModel: "openai/gpt-4o", CostPer1MIn: OpenAIModels[GPT4o].CostPer1MIn, CostPer1MInCached: OpenAIModels[GPT4o].CostPer1MInCached, CostPer1MOut: OpenAIModels[GPT4o].CostPer1MOut, CostPer1MOutCached: OpenAIModels[GPT4o].CostPer1MOutCached, ContextWindow: OpenAIModels[GPT4o].ContextWindow, DefaultMaxTokens: OpenAIModels[GPT4o].DefaultMaxTokens, }, OpenRouterGPT4oMini: { ID: OpenRouterGPT4oMini, Name: "OpenRouter: GPT 4o mini", Provider: ProviderOpenRouter, APIModel: "openai/gpt-4o-mini", CostPer1MIn: OpenAIModels[GPT4oMini].CostPer1MIn, CostPer1MInCached: OpenAIModels[GPT4oMini].CostPer1MInCached, CostPer1MOut: OpenAIModels[GPT4oMini].CostPer1MOut, CostPer1MOutCached: OpenAIModels[GPT4oMini].CostPer1MOutCached, ContextWindow: OpenAIModels[GPT4oMini].ContextWindow, }, OpenRouterO1: { ID: OpenRouterO1, Name: "OpenRouter: O1", Provider: ProviderOpenRouter, APIModel: "openai/o1", CostPer1MIn: OpenAIModels[O1].CostPer1MIn, CostPer1MInCached: OpenAIModels[O1].CostPer1MInCached, CostPer1MOut: OpenAIModels[O1].CostPer1MOut, CostPer1MOutCached: OpenAIModels[O1].CostPer1MOutCached, ContextWindow: OpenAIModels[O1].ContextWindow, DefaultMaxTokens: OpenAIModels[O1].DefaultMaxTokens, CanReason: OpenAIModels[O1].CanReason, }, OpenRouterO1Pro: { ID: OpenRouterO1Pro, Name: "OpenRouter: o1 pro", Provider: ProviderOpenRouter, APIModel: "openai/o1-pro", CostPer1MIn: OpenAIModels[O1Pro].CostPer1MIn, CostPer1MInCached: OpenAIModels[O1Pro].CostPer1MInCached, CostPer1MOut: OpenAIModels[O1Pro].CostPer1MOut, CostPer1MOutCached: OpenAIModels[O1Pro].CostPer1MOutCached, ContextWindow: OpenAIModels[O1Pro].ContextWindow, DefaultMaxTokens: OpenAIModels[O1Pro].DefaultMaxTokens, CanReason: OpenAIModels[O1Pro].CanReason, }, OpenRouterO1Mini: { ID: OpenRouterO1Mini, Name: "OpenRouter: o1 mini", Provider: ProviderOpenRouter, APIModel: "openai/o1-mini", CostPer1MIn: OpenAIModels[O1Mini].CostPer1MIn, CostPer1MInCached: OpenAIModels[O1Mini].CostPer1MInCached, CostPer1MOut: OpenAIModels[O1Mini].CostPer1MOut, CostPer1MOutCached: OpenAIModels[O1Mini].CostPer1MOutCached, ContextWindow: OpenAIModels[O1Mini].ContextWindow, DefaultMaxTokens: OpenAIModels[O1Mini].DefaultMaxTokens, CanReason: OpenAIModels[O1Mini].CanReason, }, OpenRouterO3: { ID: OpenRouterO3, Name: "OpenRouter: o3", Provider: ProviderOpenRouter, APIModel: "openai/o3", CostPer1MIn: OpenAIModels[O3].CostPer1MIn, CostPer1MInCached: OpenAIModels[O3].CostPer1MInCached, CostPer1MOut: OpenAIModels[O3].CostPer1MOut, CostPer1MOutCached: OpenAIModels[O3].CostPer1MOutCached, ContextWindow: OpenAIModels[O3].ContextWindow, DefaultMaxTokens: OpenAIModels[O3].DefaultMaxTokens, CanReason: OpenAIModels[O3].CanReason, }, OpenRouterO3Mini: { ID: OpenRouterO3Mini, Name: "OpenRouter: o3 mini", Provider: ProviderOpenRouter, APIModel: "openai/o3-mini-high", CostPer1MIn: OpenAIModels[O3Mini].CostPer1MIn, CostPer1MInCached: OpenAIModels[O3Mini].CostPer1MInCached, CostPer1MOut: OpenAIModels[O3Mini].CostPer1MOut, CostPer1MOutCached: OpenAIModels[O3Mini].CostPer1MOutCached, ContextWindow: OpenAIModels[O3Mini].ContextWindow, DefaultMaxTokens: OpenAIModels[O3Mini].DefaultMaxTokens, CanReason: OpenAIModels[O3Mini].CanReason, }, OpenRouterO4Mini: { ID: OpenRouterO4Mini, Name: "OpenRouter: o4 mini", Provider: ProviderOpenRouter, APIModel: "openai/o4-mini-high", CostPer1MIn: OpenAIModels[O4Mini].CostPer1MIn, CostPer1MInCached: OpenAIModels[O4Mini].CostPer1MInCached, CostPer1MOut: OpenAIModels[O4Mini].CostPer1MOut, CostPer1MOutCached: OpenAIModels[O4Mini].CostPer1MOutCached, ContextWindow: OpenAIModels[O4Mini].ContextWindow, DefaultMaxTokens: OpenAIModels[O4Mini].DefaultMaxTokens, CanReason: OpenAIModels[O4Mini].CanReason, }, OpenRouterGemini25Flash: { ID: OpenRouterGemini25Flash, Name: "OpenRouter: Gemini 2.5 Flash", Provider: ProviderOpenRouter, APIModel: "google/gemini-2.5-flash-preview:thinking", CostPer1MIn: GeminiModels[Gemini25Flash].CostPer1MIn, CostPer1MInCached: GeminiModels[Gemini25Flash].CostPer1MInCached, CostPer1MOut: GeminiModels[Gemini25Flash].CostPer1MOut, CostPer1MOutCached: GeminiModels[Gemini25Flash].CostPer1MOutCached, ContextWindow: GeminiModels[Gemini25Flash].ContextWindow, DefaultMaxTokens: GeminiModels[Gemini25Flash].DefaultMaxTokens, }, OpenRouterGemini25: { ID: OpenRouterGemini25, Name: "OpenRouter: Gemini 2.5 Pro", Provider: ProviderOpenRouter, APIModel: "google/gemini-2.5-pro-preview-03-25", CostPer1MIn: GeminiModels[Gemini25].CostPer1MIn, CostPer1MInCached: GeminiModels[Gemini25].CostPer1MInCached, CostPer1MOut: GeminiModels[Gemini25].CostPer1MOut, CostPer1MOutCached: GeminiModels[Gemini25].CostPer1MOutCached, ContextWindow: GeminiModels[Gemini25].ContextWindow, DefaultMaxTokens: GeminiModels[Gemini25].DefaultMaxTokens, }, OpenRouterClaude35Sonnet: { ID: OpenRouterClaude35Sonnet, Name: "OpenRouter: Claude 3.5 Sonnet", Provider: ProviderOpenRouter, APIModel: "anthropic/claude-3.5-sonnet", CostPer1MIn: AnthropicModels[Claude35Sonnet].CostPer1MIn, CostPer1MInCached: AnthropicModels[Claude35Sonnet].CostPer1MInCached, CostPer1MOut: AnthropicModels[Claude35Sonnet].CostPer1MOut, CostPer1MOutCached: AnthropicModels[Claude35Sonnet].CostPer1MOutCached, ContextWindow: AnthropicModels[Claude35Sonnet].ContextWindow, DefaultMaxTokens: AnthropicModels[Claude35Sonnet].DefaultMaxTokens, }, OpenRouterClaude3Haiku: { ID: OpenRouterClaude3Haiku, Name: "OpenRouter: Claude 3 Haiku", Provider: ProviderOpenRouter, APIModel: "anthropic/claude-3-haiku", CostPer1MIn: AnthropicModels[Claude3Haiku].CostPer1MIn, CostPer1MInCached: AnthropicModels[Claude3Haiku].CostPer1MInCached, CostPer1MOut: AnthropicModels[Claude3Haiku].CostPer1MOut, CostPer1MOutCached: AnthropicModels[Claude3Haiku].CostPer1MOutCached, ContextWindow: AnthropicModels[Claude3Haiku].ContextWindow, DefaultMaxTokens: AnthropicModels[Claude3Haiku].DefaultMaxTokens, }, OpenRouterClaude37Sonnet: { ID: OpenRouterClaude37Sonnet, Name: "OpenRouter: Claude 3.7 Sonnet", Provider: ProviderOpenRouter, APIModel: "anthropic/claude-3.7-sonnet", CostPer1MIn: AnthropicModels[Claude37Sonnet].CostPer1MIn, CostPer1MInCached: AnthropicModels[Claude37Sonnet].CostPer1MInCached, CostPer1MOut: AnthropicModels[Claude37Sonnet].CostPer1MOut, CostPer1MOutCached: AnthropicModels[Claude37Sonnet].CostPer1MOutCached, ContextWindow: AnthropicModels[Claude37Sonnet].ContextWindow, DefaultMaxTokens: AnthropicModels[Claude37Sonnet].DefaultMaxTokens, CanReason: AnthropicModels[Claude37Sonnet].CanReason, }, OpenRouterClaude35Haiku: { ID: OpenRouterClaude35Haiku, Name: "OpenRouter: Claude 3.5 Haiku", Provider: ProviderOpenRouter, APIModel: "anthropic/claude-3.5-haiku", CostPer1MIn: AnthropicModels[Claude35Haiku].CostPer1MIn, CostPer1MInCached: AnthropicModels[Claude35Haiku].CostPer1MInCached, CostPer1MOut: AnthropicModels[Claude35Haiku].CostPer1MOut, CostPer1MOutCached: AnthropicModels[Claude35Haiku].CostPer1MOutCached, ContextWindow: AnthropicModels[Claude35Haiku].ContextWindow, DefaultMaxTokens: AnthropicModels[Claude35Haiku].DefaultMaxTokens, }, OpenRouterClaude3Opus: { ID: OpenRouterClaude3Opus, Name: "OpenRouter: Claude 3 Opus", Provider: ProviderOpenRouter, APIModel: "anthropic/claude-3-opus", CostPer1MIn: AnthropicModels[Claude3Opus].CostPer1MIn, CostPer1MInCached: AnthropicModels[Claude3Opus].CostPer1MInCached, CostPer1MOut: AnthropicModels[Claude3Opus].CostPer1MOut, CostPer1MOutCached: AnthropicModels[Claude3Opus].CostPer1MOutCached, ContextWindow: AnthropicModels[Claude3Opus].ContextWindow, DefaultMaxTokens: AnthropicModels[Claude3Opus].DefaultMaxTokens, }, OpenRouterQwen235B: { ID: OpenRouterQwen235B, Name: "OpenRouter: Qwen3 235B A22B", Provider: ProviderOpenRouter, APIModel: "qwen/qwen3-235b-a22b", CostPer1MIn: 0.1, CostPer1MInCached: 0.1, CostPer1MOut: 0.1, CostPer1MOutCached: 0.1, ContextWindow: 40960, DefaultMaxTokens: 4096, }, OpenRouterQwen32B: { ID: OpenRouterQwen32B, Name: "OpenRouter: Qwen3 32B", Provider: ProviderOpenRouter, APIModel: "qwen/qwen3-32b", CostPer1MIn: 0.1, CostPer1MInCached: 0.1, CostPer1MOut: 0.3, CostPer1MOutCached: 0.3, ContextWindow: 40960, DefaultMaxTokens: 4096, }, OpenRouterQwen30B: { ID: OpenRouterQwen30B, Name: "OpenRouter: Qwen3 30B A3B", Provider: ProviderOpenRouter, APIModel: "qwen/qwen3-30b-a3b", CostPer1MIn: 0.1, CostPer1MInCached: 0.1, CostPer1MOut: 0.3, CostPer1MOutCached: 0.3, ContextWindow: 40960, DefaultMaxTokens: 4096, }, OpenRouterQwen14B: { ID: OpenRouterQwen14B, Name: "OpenRouter: Qwen3 14B", Provider: ProviderOpenRouter, APIModel: "qwen/qwen3-14b", CostPer1MIn: 0.7, CostPer1MInCached: 0.7, CostPer1MOut: 0.24, CostPer1MOutCached: 0.24, ContextWindow: 40960, DefaultMaxTokens: 4096, }, OpenRouterQwen8B: { ID: OpenRouterQwen8B, Name: "OpenRouter: Qwen3 8B", Provider: ProviderOpenRouter, APIModel: "qwen/qwen3-8b", CostPer1MIn: 0.35, CostPer1MInCached: 0.35, CostPer1MOut: 0.138, CostPer1MOutCached: 0.138, ContextWindow: 128000, DefaultMaxTokens: 4096, }, }