openrouter.go 12 KB

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