summaryrefslogtreecommitdiffhomepage
path: root/internal/llm/models
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-03-24 11:47:39 +0100
committerKujtim Hoxha <[email protected]>2025-03-24 11:47:39 +0100
commit005b8ac16776512b2d4b1f22bd989da162ca1bad (patch)
treecfe0d1da344ac31a467f1bea788ce80c723cd980 /internal/llm/models
parente7258e38aeb46281fda474b8b7fcc3eee35edd9f (diff)
downloadopencode-005b8ac16776512b2d4b1f22bd989da162ca1bad.tar.gz
opencode-005b8ac16776512b2d4b1f22bd989da162ca1bad.zip
initial working agent
Diffstat (limited to 'internal/llm/models')
-rw-r--r--internal/llm/models/models.go48
1 files changed, 40 insertions, 8 deletions
diff --git a/internal/llm/models/models.go b/internal/llm/models/models.go
index 1895e256b..e59da194b 100644
--- a/internal/llm/models/models.go
+++ b/internal/llm/models/models.go
@@ -3,6 +3,7 @@ package models
import (
"context"
"errors"
+ "log"
"github.com/cloudwego/eino-ext/components/model/claude"
"github.com/cloudwego/eino-ext/components/model/openai"
@@ -16,10 +17,12 @@ type (
)
type Model struct {
- ID ModelID `json:"id"`
- Name string `json:"name"`
- Provider ModelProvider `json:"provider"`
- APIModel string `json:"api_model"` // Actual value used when calling the API
+ 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"`
}
const (
@@ -52,6 +55,9 @@ const (
// Meta
Llama3 ModelID = "llama-3"
Llama270B ModelID = "llama-2-70b"
+ // GROQ
+ GroqLlama3SpecDec ModelID = "groq-llama-3-spec-dec"
+ GroqQwen32BCoder ModelID = "qwen-2.5-coder-32b"
)
const (
@@ -61,6 +67,7 @@ const (
ProviderXAI ModelProvider = "xai"
ProviderDeepSeek ModelProvider = "deepseek"
ProviderMeta ModelProvider = "meta"
+ ProviderGroq ModelProvider = "groq"
)
var SupportedModels = map[ModelID]Model{
@@ -72,10 +79,12 @@ var SupportedModels = map[ModelID]Model{
APIModel: "gpt-4o",
},
GPT4oMini: {
- ID: GPT4oMini,
- Name: "GPT-4o Mini",
- Provider: ProviderOpenAI,
- APIModel: "gpt-4o-mini",
+ ID: GPT4oMini,
+ Name: "GPT-4o Mini",
+ Provider: ProviderOpenAI,
+ APIModel: "gpt-4o-mini",
+ CostPer1MIn: 0.150,
+ CostPer1MOut: 0.600,
},
GPT45: {
ID: GPT45,
@@ -172,10 +181,25 @@ var SupportedModels = map[ModelID]Model{
Provider: ProviderMeta,
APIModel: "llama-2-70b",
},
+
+ // GROQ
+ GroqLlama3SpecDec: {
+ ID: GroqLlama3SpecDec,
+ Name: "GROQ LLaMA 3 SpecDec",
+ Provider: ProviderGroq,
+ APIModel: "llama-3.3-70b-specdec",
+ },
+ GroqQwen32BCoder: {
+ ID: GroqQwen32BCoder,
+ Name: "GROQ Qwen 2.5 Coder 32B",
+ Provider: ProviderGroq,
+ APIModel: "qwen-2.5-coder-32b",
+ },
}
func GetModel(ctx context.Context, model ModelID) (model.ChatModel, error) {
provider := SupportedModels[model].Provider
+ log.Printf("Provider: %s", provider)
maxTokens := viper.GetInt("providers.common.max_tokens")
switch provider {
case ProviderOpenAI:
@@ -191,6 +215,14 @@ func GetModel(ctx context.Context, model ModelID) (model.ChatModel, error) {
MaxTokens: maxTokens,
})
+ case ProviderGroq:
+ return openai.NewChatModel(ctx, &openai.ChatModelConfig{
+ BaseURL: "https://api.groq.com/openai/v1",
+ APIKey: viper.GetString("providers.groq.key"),
+ Model: string(SupportedModels[model].APIModel),
+ MaxTokens: &maxTokens,
+ })
+
}
return nil, errors.New("unsupported provider")
}