models.go

  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}