diff options
| author | Jay V <[email protected]> | 2025-05-21 15:01:25 -0400 |
|---|---|---|
| committer | Jay V <[email protected]> | 2025-05-21 15:01:25 -0400 |
| commit | 9049295cc961b250be6144585dde322e778534d7 (patch) | |
| tree | c8a2f09ed6cea54eb9587243eb7dbe298fef1b20 /internal/llm/models | |
| parent | 4526b14b17dc49f3ef4f3b1a1d02eff5c6b6b59f (diff) | |
| parent | dff8e77eb6d1709fa1ddeb52d0d9c19afd13d385 (diff) | |
| download | opencode-9049295cc961b250be6144585dde322e778534d7.tar.gz opencode-9049295cc961b250be6144585dde322e778534d7.zip | |
Merge branch 'dev' into docs
Diffstat (limited to 'internal/llm/models')
| -rw-r--r-- | internal/llm/models/bedrock.go | 25 | ||||
| -rw-r--r-- | internal/llm/models/groq.go | 2 | ||||
| -rw-r--r-- | internal/llm/models/models.go | 52 | ||||
| -rw-r--r-- | internal/llm/models/openai.go | 15 | ||||
| -rw-r--r-- | internal/llm/models/vertexai.go | 38 |
5 files changed, 84 insertions, 48 deletions
diff --git a/internal/llm/models/bedrock.go b/internal/llm/models/bedrock.go new file mode 100644 index 000000000..06f825654 --- /dev/null +++ b/internal/llm/models/bedrock.go @@ -0,0 +1,25 @@ +package models + +const ( + ProviderBedrock ModelProvider = "bedrock" + + // Models + BedrockClaude37Sonnet ModelID = "bedrock.claude-3.7-sonnet" +) + +var BedrockModels = map[ModelID]Model{ + 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, + }, +} diff --git a/internal/llm/models/groq.go b/internal/llm/models/groq.go index 19917f20b..0a54053de 100644 --- a/internal/llm/models/groq.go +++ b/internal/llm/models/groq.go @@ -41,6 +41,7 @@ var GroqModels = map[ModelID]Model{ CostPer1MInCached: 0, CostPer1MOutCached: 0, CostPer1MOut: 0.34, + DefaultMaxTokens: 8192, ContextWindow: 128_000, // 10M when? SupportsAttachments: true, }, @@ -54,6 +55,7 @@ var GroqModels = map[ModelID]Model{ CostPer1MInCached: 0, CostPer1MOutCached: 0, CostPer1MOut: 0.20, + DefaultMaxTokens: 8192, ContextWindow: 128_000, SupportsAttachments: true, }, diff --git a/internal/llm/models/models.go b/internal/llm/models/models.go index 16fd406c8..bfdd0d2d8 100644 --- a/internal/llm/models/models.go +++ b/internal/llm/models/models.go @@ -22,14 +22,7 @@ type Model struct { 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" ) @@ -43,56 +36,19 @@ var ProviderPopularity = map[ModelProvider]int{ 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, - }, -} +var SupportedModels = map[ModelID]Model{} func init() { maps.Copy(SupportedModels, AnthropicModels) + maps.Copy(SupportedModels, BedrockModels) 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) } diff --git a/internal/llm/models/openai.go b/internal/llm/models/openai.go index abe0e30c5..fdca5bed3 100644 --- a/internal/llm/models/openai.go +++ b/internal/llm/models/openai.go @@ -3,6 +3,7 @@ package models const ( ProviderOpenAI ModelProvider = "openai" + CodexMini ModelID = "codex-mini" GPT41 ModelID = "gpt-4.1" GPT41Mini ModelID = "gpt-4.1-mini" GPT41Nano ModelID = "gpt-4.1-nano" @@ -18,6 +19,20 @@ const ( ) var OpenAIModels = map[ModelID]Model{ + CodexMini: { + ID: CodexMini, + Name: "Codex Mini", + Provider: ProviderOpenAI, + APIModel: "codex-mini-latest", + CostPer1MIn: 1.50, + CostPer1MInCached: 0.375, + CostPer1MOutCached: 0.0, + CostPer1MOut: 6.00, + ContextWindow: 200_000, + DefaultMaxTokens: 100_000, + CanReason: true, + SupportsAttachments: true, + }, GPT41: { ID: GPT41, Name: "GPT 4.1", diff --git a/internal/llm/models/vertexai.go b/internal/llm/models/vertexai.go new file mode 100644 index 000000000..d71dfc0be --- /dev/null +++ b/internal/llm/models/vertexai.go @@ -0,0 +1,38 @@ +package models + +const ( + ProviderVertexAI ModelProvider = "vertexai" + + // Models + VertexAIGemini25Flash ModelID = "vertexai.gemini-2.5-flash" + VertexAIGemini25 ModelID = "vertexai.gemini-2.5" +) + +var VertexAIGeminiModels = map[ModelID]Model{ + VertexAIGemini25Flash: { + ID: VertexAIGemini25Flash, + Name: "VertexAI: Gemini 2.5 Flash", + Provider: ProviderVertexAI, + APIModel: "gemini-2.5-flash-preview-04-17", + CostPer1MIn: GeminiModels[Gemini25Flash].CostPer1MIn, + CostPer1MInCached: GeminiModels[Gemini25Flash].CostPer1MInCached, + CostPer1MOut: GeminiModels[Gemini25Flash].CostPer1MOut, + CostPer1MOutCached: GeminiModels[Gemini25Flash].CostPer1MOutCached, + ContextWindow: GeminiModels[Gemini25Flash].ContextWindow, + DefaultMaxTokens: GeminiModels[Gemini25Flash].DefaultMaxTokens, + SupportsAttachments: true, + }, + VertexAIGemini25: { + ID: VertexAIGemini25, + Name: "VertexAI: Gemini 2.5 Pro", + Provider: ProviderVertexAI, + APIModel: "gemini-2.5-pro-preview-03-25", + CostPer1MIn: GeminiModels[Gemini25].CostPer1MIn, + CostPer1MInCached: GeminiModels[Gemini25].CostPer1MInCached, + CostPer1MOut: GeminiModels[Gemini25].CostPer1MOut, + CostPer1MOutCached: GeminiModels[Gemini25].CostPer1MOutCached, + ContextWindow: GeminiModels[Gemini25].ContextWindow, + DefaultMaxTokens: GeminiModels[Gemini25].DefaultMaxTokens, + SupportsAttachments: true, + }, +} |
