package models import "maps" type ( ModelID string ModelProvider string ) type Model struct { ID ModelID `json:"id"` Name string `json:"name"` Provider ModelProvider `json:"provider"` APIModel string `json:"api_model"` CostPer1MIn float64 `json:"cost_per_1m_in"` CostPer1MOut float64 `json:"cost_per_1m_out"` CostPer1MInCached float64 `json:"cost_per_1m_in_cached"` CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"` ContextWindow int64 `json:"context_window"` DefaultMaxTokens int64 `json:"default_max_tokens"` CanReason bool `json:"can_reason"` SupportsAttachments bool `json:"supports_attachments"` } // Model IDs const ( // GEMINI // Bedrock BedrockClaude37Sonnet ModelID = "bedrock.claude-3.7-sonnet" ) const ( ProviderBedrock ModelProvider = "bedrock" // ForTests ProviderMock ModelProvider = "__mock" ) // Providers in order of popularity var ProviderPopularity = map[ModelProvider]int{ ProviderAnthropic: 1, ProviderOpenAI: 2, ProviderGemini: 3, ProviderGROQ: 4, ProviderOpenRouter: 5, ProviderBedrock: 6, ProviderAzure: 7, ProviderVertexAI: 8, } var SupportedModels = map[ModelID]Model{ // // // GEMINI // GEMINI25: { // ID: GEMINI25, // Name: "Gemini 2.5 Pro", // Provider: ProviderGemini, // APIModel: "gemini-2.5-pro-exp-03-25", // CostPer1MIn: 0, // CostPer1MInCached: 0, // CostPer1MOutCached: 0, // CostPer1MOut: 0, // }, // // GRMINI20Flash: { // ID: GRMINI20Flash, // Name: "Gemini 2.0 Flash", // Provider: ProviderGemini, // APIModel: "gemini-2.0-flash", // CostPer1MIn: 0.1, // CostPer1MInCached: 0, // CostPer1MOutCached: 0.025, // CostPer1MOut: 0.4, // }, // // // Bedrock BedrockClaude37Sonnet: { ID: BedrockClaude37Sonnet, Name: "Bedrock: Claude 3.7 Sonnet", Provider: ProviderBedrock, APIModel: "anthropic.claude-3-7-sonnet-20250219-v1:0", CostPer1MIn: 3.0, CostPer1MInCached: 3.75, CostPer1MOutCached: 0.30, CostPer1MOut: 15.0, ContextWindow: 200_000, DefaultMaxTokens: 50_000, CanReason: true, SupportsAttachments: true, }, } func init() { maps.Copy(SupportedModels, AnthropicModels) maps.Copy(SupportedModels, OpenAIModels) maps.Copy(SupportedModels, GeminiModels) maps.Copy(SupportedModels, GroqModels) maps.Copy(SupportedModels, AzureModels) maps.Copy(SupportedModels, OpenRouterModels) maps.Copy(SupportedModels, XAIModels) maps.Copy(SupportedModels, VertexAIGeminiModels) }