summaryrefslogtreecommitdiffhomepage
path: root/internal/llm/models
diff options
context:
space:
mode:
authorJay V <[email protected]>2025-05-21 15:01:25 -0400
committerJay V <[email protected]>2025-05-21 15:01:25 -0400
commit9049295cc961b250be6144585dde322e778534d7 (patch)
treec8a2f09ed6cea54eb9587243eb7dbe298fef1b20 /internal/llm/models
parent4526b14b17dc49f3ef4f3b1a1d02eff5c6b6b59f (diff)
parentdff8e77eb6d1709fa1ddeb52d0d9c19afd13d385 (diff)
downloadopencode-9049295cc961b250be6144585dde322e778534d7.tar.gz
opencode-9049295cc961b250be6144585dde322e778534d7.zip
Merge branch 'dev' into docs
Diffstat (limited to 'internal/llm/models')
-rw-r--r--internal/llm/models/bedrock.go25
-rw-r--r--internal/llm/models/groq.go2
-rw-r--r--internal/llm/models/models.go52
-rw-r--r--internal/llm/models/openai.go15
-rw-r--r--internal/llm/models/vertexai.go38
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,
+ },
+}