mirror of
https://github.com/aljazceru/opencode.git
synced 2025-12-22 02:04:22 +01:00
reimplement agent,provider and add file history
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package models
|
||||
|
||||
import "maps"
|
||||
|
||||
type (
|
||||
ModelID string
|
||||
ModelProvider string
|
||||
@@ -14,15 +16,13 @@ type Model struct {
|
||||
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"`
|
||||
}
|
||||
|
||||
// Model IDs
|
||||
const (
|
||||
// Anthropic
|
||||
Claude35Sonnet ModelID = "claude-3.5-sonnet"
|
||||
Claude3Haiku ModelID = "claude-3-haiku"
|
||||
Claude37Sonnet ModelID = "claude-3.7-sonnet"
|
||||
// OpenAI
|
||||
GPT4o ModelID = "gpt-4o"
|
||||
GPT41 ModelID = "gpt-4.1"
|
||||
|
||||
// GEMINI
|
||||
@@ -37,47 +37,59 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
ProviderOpenAI ModelProvider = "openai"
|
||||
ProviderAnthropic ModelProvider = "anthropic"
|
||||
ProviderBedrock ModelProvider = "bedrock"
|
||||
ProviderGemini ModelProvider = "gemini"
|
||||
ProviderGROQ ModelProvider = "groq"
|
||||
ProviderOpenAI ModelProvider = "openai"
|
||||
ProviderBedrock ModelProvider = "bedrock"
|
||||
ProviderGemini ModelProvider = "gemini"
|
||||
ProviderGROQ ModelProvider = "groq"
|
||||
|
||||
// ForTests
|
||||
ProviderMock ModelProvider = "__mock"
|
||||
)
|
||||
|
||||
var SupportedModels = map[ModelID]Model{
|
||||
// Anthropic
|
||||
Claude35Sonnet: {
|
||||
ID: Claude35Sonnet,
|
||||
Name: "Claude 3.5 Sonnet",
|
||||
Provider: ProviderAnthropic,
|
||||
APIModel: "claude-3-5-sonnet-latest",
|
||||
CostPer1MIn: 3.0,
|
||||
CostPer1MInCached: 3.75,
|
||||
CostPer1MOutCached: 0.30,
|
||||
CostPer1MOut: 15.0,
|
||||
// // Anthropic
|
||||
// Claude35Sonnet: {
|
||||
// ID: Claude35Sonnet,
|
||||
// Name: "Claude 3.5 Sonnet",
|
||||
// Provider: ProviderAnthropic,
|
||||
// APIModel: "claude-3-5-sonnet-latest",
|
||||
// CostPer1MIn: 3.0,
|
||||
// CostPer1MInCached: 3.75,
|
||||
// CostPer1MOutCached: 0.30,
|
||||
// CostPer1MOut: 15.0,
|
||||
// },
|
||||
// Claude3Haiku: {
|
||||
// ID: Claude3Haiku,
|
||||
// Name: "Claude 3 Haiku",
|
||||
// Provider: ProviderAnthropic,
|
||||
// APIModel: "claude-3-haiku-latest",
|
||||
// CostPer1MIn: 0.80,
|
||||
// CostPer1MInCached: 1,
|
||||
// CostPer1MOutCached: 0.08,
|
||||
// CostPer1MOut: 4,
|
||||
// },
|
||||
// Claude37Sonnet: {
|
||||
// ID: Claude37Sonnet,
|
||||
// Name: "Claude 3.7 Sonnet",
|
||||
// Provider: ProviderAnthropic,
|
||||
// APIModel: "claude-3-7-sonnet-latest",
|
||||
// CostPer1MIn: 3.0,
|
||||
// CostPer1MInCached: 3.75,
|
||||
// CostPer1MOutCached: 0.30,
|
||||
// CostPer1MOut: 15.0,
|
||||
// },
|
||||
//
|
||||
// // OpenAI
|
||||
GPT4o: {
|
||||
ID: GPT4o,
|
||||
Name: "GPT-4o",
|
||||
Provider: ProviderOpenAI,
|
||||
APIModel: "gpt-4.1",
|
||||
CostPer1MIn: 2.00,
|
||||
CostPer1MInCached: 0.50,
|
||||
CostPer1MOutCached: 0,
|
||||
CostPer1MOut: 8.00,
|
||||
},
|
||||
Claude3Haiku: {
|
||||
ID: Claude3Haiku,
|
||||
Name: "Claude 3 Haiku",
|
||||
Provider: ProviderAnthropic,
|
||||
APIModel: "claude-3-haiku-latest",
|
||||
CostPer1MIn: 0.80,
|
||||
CostPer1MInCached: 1,
|
||||
CostPer1MOutCached: 0.08,
|
||||
CostPer1MOut: 4,
|
||||
},
|
||||
Claude37Sonnet: {
|
||||
ID: Claude37Sonnet,
|
||||
Name: "Claude 3.7 Sonnet",
|
||||
Provider: ProviderAnthropic,
|
||||
APIModel: "claude-3-7-sonnet-latest",
|
||||
CostPer1MIn: 3.0,
|
||||
CostPer1MInCached: 3.75,
|
||||
CostPer1MOutCached: 0.30,
|
||||
CostPer1MOut: 15.0,
|
||||
},
|
||||
|
||||
// OpenAI
|
||||
GPT41: {
|
||||
ID: GPT41,
|
||||
Name: "GPT-4.1",
|
||||
@@ -88,51 +100,55 @@ var SupportedModels = map[ModelID]Model{
|
||||
CostPer1MOutCached: 0,
|
||||
CostPer1MOut: 8.00,
|
||||
},
|
||||
|
||||
// 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,
|
||||
},
|
||||
|
||||
// GROQ
|
||||
QWENQwq: {
|
||||
ID: QWENQwq,
|
||||
Name: "Qwen Qwq",
|
||||
Provider: ProviderGROQ,
|
||||
APIModel: "qwen-qwq-32b",
|
||||
CostPer1MIn: 0,
|
||||
CostPer1MInCached: 0,
|
||||
CostPer1MOutCached: 0,
|
||||
CostPer1MOut: 0,
|
||||
},
|
||||
|
||||
// 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,
|
||||
},
|
||||
//
|
||||
// // 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,
|
||||
// },
|
||||
//
|
||||
// // GROQ
|
||||
// QWENQwq: {
|
||||
// ID: QWENQwq,
|
||||
// Name: "Qwen Qwq",
|
||||
// Provider: ProviderGROQ,
|
||||
// APIModel: "qwen-qwq-32b",
|
||||
// CostPer1MIn: 0,
|
||||
// CostPer1MInCached: 0,
|
||||
// CostPer1MOutCached: 0,
|
||||
// CostPer1MOut: 0,
|
||||
// },
|
||||
//
|
||||
// // 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,
|
||||
// },
|
||||
}
|
||||
|
||||
func init() {
|
||||
maps.Copy(SupportedModels, AnthropicModels)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user