1package models
2
3type (
4 ModelID string
5 ModelProvider string
6)
7
8type Model struct {
9 ID ModelID `json:"id"`
10 Name string `json:"name"`
11 Provider ModelProvider `json:"provider"`
12 APIModel string `json:"api_model"`
13 CostPer1MIn float64 `json:"cost_per_1m_in"`
14 CostPer1MOut float64 `json:"cost_per_1m_out"`
15 CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
16 CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
17}
18
19// Model IDs
20const (
21 // Anthropic
22 Claude35Sonnet ModelID = "claude-3.5-sonnet"
23 Claude3Haiku ModelID = "claude-3-haiku"
24 Claude37Sonnet ModelID = "claude-3.7-sonnet"
25 // OpenAI
26 GPT4o ModelID = "gpt-4o"
27
28 // GEMINI
29 GEMINI25 ModelID = "gemini-2.5"
30 GRMINI20Flash ModelID = "gemini-2.0-flash"
31
32 // GROQ
33 QWENQwq ModelID = "qwen-qwq"
34)
35
36const (
37 ProviderOpenAI ModelProvider = "openai"
38 ProviderAnthropic ModelProvider = "anthropic"
39 ProviderGemini ModelProvider = "gemini"
40 ProviderGROQ ModelProvider = "groq"
41)
42
43var SupportedModels = map[ModelID]Model{
44 // Anthropic
45 Claude35Sonnet: {
46 ID: Claude35Sonnet,
47 Name: "Claude 3.5 Sonnet",
48 Provider: ProviderAnthropic,
49 APIModel: "claude-3-5-sonnet-latest",
50 CostPer1MIn: 3.0,
51 CostPer1MInCached: 3.75,
52 CostPer1MOutCached: 0.30,
53 CostPer1MOut: 15.0,
54 },
55 Claude3Haiku: {
56 ID: Claude3Haiku,
57 Name: "Claude 3 Haiku",
58 Provider: ProviderAnthropic,
59 APIModel: "claude-3-haiku-latest",
60 CostPer1MIn: 0.80,
61 CostPer1MInCached: 1,
62 CostPer1MOutCached: 0.08,
63 CostPer1MOut: 4,
64 },
65 Claude37Sonnet: {
66 ID: Claude37Sonnet,
67 Name: "Claude 3.7 Sonnet",
68 Provider: ProviderAnthropic,
69 APIModel: "claude-3-7-sonnet-latest",
70 CostPer1MIn: 3.0,
71 CostPer1MInCached: 3.75,
72 CostPer1MOutCached: 0.30,
73 CostPer1MOut: 15.0,
74 },
75
76 // OpenAI
77 GPT4o: {
78 ID: GPT4o,
79 Name: "GPT-4o",
80 Provider: ProviderOpenAI,
81 APIModel: "gpt-4o",
82 CostPer1MIn: 2.50,
83 CostPer1MInCached: 1.25,
84 CostPer1MOutCached: 0,
85 CostPer1MOut: 10.00,
86 },
87
88 // GEMINI
89 GEMINI25: {
90 ID: GEMINI25,
91 Name: "Gemini 2.5 Pro",
92 Provider: ProviderGemini,
93 APIModel: "gemini-2.5-pro-exp-03-25",
94 CostPer1MIn: 0,
95 CostPer1MInCached: 0,
96 CostPer1MOutCached: 0,
97 CostPer1MOut: 0,
98 },
99
100 GRMINI20Flash: {
101 ID: GRMINI20Flash,
102 Name: "Gemini 2.0 Flash",
103 Provider: ProviderGemini,
104 APIModel: "gemini-2.0-flash",
105 CostPer1MIn: 0.1,
106 CostPer1MInCached: 0,
107 CostPer1MOutCached: 0.025,
108 CostPer1MOut: 0.4,
109 },
110
111 // GROQ
112 QWENQwq: {
113 ID: QWENQwq,
114 Name: "Qwen Qwq",
115 Provider: ProviderGROQ,
116 APIModel: "qwen-qwq-32b",
117 CostPer1MIn: 0,
118 CostPer1MInCached: 0,
119 CostPer1MOutCached: 0,
120 CostPer1MOut: 0,
121 },
122}