1package models
2
3import "maps"
4
5type (
6 ModelID string
7 ModelProvider string
8)
9
10type Model struct {
11 ID ModelID `json:"id"`
12 Name string `json:"name"`
13 Provider ModelProvider `json:"provider"`
14 APIModel string `json:"api_model"`
15 CostPer1MIn float64 `json:"cost_per_1m_in"`
16 CostPer1MOut float64 `json:"cost_per_1m_out"`
17 CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
18 CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
19 ContextWindow int64 `json:"context_window"`
20 DefaultMaxTokens int64 `json:"default_max_tokens"`
21 CanReason bool `json:"can_reason"`
22}
23
24// Model IDs
25const ( // GEMINI
26 GEMINI25 ModelID = "gemini-2.5"
27 GRMINI20Flash ModelID = "gemini-2.0-flash"
28
29 // GROQ
30 QWENQwq ModelID = "qwen-qwq"
31
32 // Bedrock
33 BedrockClaude37Sonnet ModelID = "bedrock.claude-3.7-sonnet"
34)
35
36const (
37 ProviderBedrock ModelProvider = "bedrock"
38 ProviderGemini ModelProvider = "gemini"
39 ProviderGROQ ModelProvider = "groq"
40
41 // ForTests
42 ProviderMock ModelProvider = "__mock"
43)
44
45var SupportedModels = map[ModelID]Model{
46 //
47 // // GEMINI
48 // GEMINI25: {
49 // ID: GEMINI25,
50 // Name: "Gemini 2.5 Pro",
51 // Provider: ProviderGemini,
52 // APIModel: "gemini-2.5-pro-exp-03-25",
53 // CostPer1MIn: 0,
54 // CostPer1MInCached: 0,
55 // CostPer1MOutCached: 0,
56 // CostPer1MOut: 0,
57 // },
58 //
59 // GRMINI20Flash: {
60 // ID: GRMINI20Flash,
61 // Name: "Gemini 2.0 Flash",
62 // Provider: ProviderGemini,
63 // APIModel: "gemini-2.0-flash",
64 // CostPer1MIn: 0.1,
65 // CostPer1MInCached: 0,
66 // CostPer1MOutCached: 0.025,
67 // CostPer1MOut: 0.4,
68 // },
69 //
70 // // GROQ
71 // QWENQwq: {
72 // ID: QWENQwq,
73 // Name: "Qwen Qwq",
74 // Provider: ProviderGROQ,
75 // APIModel: "qwen-qwq-32b",
76 // CostPer1MIn: 0,
77 // CostPer1MInCached: 0,
78 // CostPer1MOutCached: 0,
79 // CostPer1MOut: 0,
80 // },
81 //
82 // // Bedrock
83 BedrockClaude37Sonnet: {
84 ID: BedrockClaude37Sonnet,
85 Name: "Bedrock: Claude 3.7 Sonnet",
86 Provider: ProviderBedrock,
87 APIModel: "anthropic.claude-3-7-sonnet-20250219-v1:0",
88 CostPer1MIn: 3.0,
89 CostPer1MInCached: 3.75,
90 CostPer1MOutCached: 0.30,
91 CostPer1MOut: 15.0,
92 },
93}
94
95func init() {
96 maps.Copy(SupportedModels, AnthropicModels)
97 maps.Copy(SupportedModels, OpenAIModels)
98}