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 // GROQ
27 QWENQwq ModelID = "qwen-qwq"
28
29 // Bedrock
30 BedrockClaude37Sonnet ModelID = "bedrock.claude-3.7-sonnet"
31)
32
33const (
34 ProviderBedrock ModelProvider = "bedrock"
35 ProviderGROQ ModelProvider = "groq"
36
37 // ForTests
38 ProviderMock ModelProvider = "__mock"
39)
40
41var SupportedModels = map[ModelID]Model{
42 //
43 // // GEMINI
44 // GEMINI25: {
45 // ID: GEMINI25,
46 // Name: "Gemini 2.5 Pro",
47 // Provider: ProviderGemini,
48 // APIModel: "gemini-2.5-pro-exp-03-25",
49 // CostPer1MIn: 0,
50 // CostPer1MInCached: 0,
51 // CostPer1MOutCached: 0,
52 // CostPer1MOut: 0,
53 // },
54 //
55 // GRMINI20Flash: {
56 // ID: GRMINI20Flash,
57 // Name: "Gemini 2.0 Flash",
58 // Provider: ProviderGemini,
59 // APIModel: "gemini-2.0-flash",
60 // CostPer1MIn: 0.1,
61 // CostPer1MInCached: 0,
62 // CostPer1MOutCached: 0.025,
63 // CostPer1MOut: 0.4,
64 // },
65 //
66 // // GROQ
67 // QWENQwq: {
68 // ID: QWENQwq,
69 // Name: "Qwen Qwq",
70 // Provider: ProviderGROQ,
71 // APIModel: "qwen-qwq-32b",
72 // CostPer1MIn: 0,
73 // CostPer1MInCached: 0,
74 // CostPer1MOutCached: 0,
75 // CostPer1MOut: 0,
76 // },
77 //
78 // // Bedrock
79 BedrockClaude37Sonnet: {
80 ID: BedrockClaude37Sonnet,
81 Name: "Bedrock: Claude 3.7 Sonnet",
82 Provider: ProviderBedrock,
83 APIModel: "anthropic.claude-3-7-sonnet-20250219-v1:0",
84 CostPer1MIn: 3.0,
85 CostPer1MInCached: 3.75,
86 CostPer1MOutCached: 0.30,
87 CostPer1MOut: 15.0,
88 },
89}
90
91func init() {
92 maps.Copy(SupportedModels, AnthropicModels)
93 maps.Copy(SupportedModels, OpenAIModels)
94 maps.Copy(SupportedModels, GeminiModels)
95}