summaryrefslogtreecommitdiff
path: root/internal/llmutils
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-15 23:24:00 +0200
committerPaul Buetow <paul@buetow.org>2026-03-15 23:24:00 +0200
commit8ec8ee16e23081018e32dea122ecd9a3b8d8b2c7 (patch)
tree5a564bb36fc9750d3353435d2dd3cf2f28fa5261 /internal/llmutils
parent10112d4b7a8150118e705b95df73c08824ac2b22 (diff)
Release v0.23.0v0.23.0
Diffstat (limited to 'internal/llmutils')
-rw-r--r--internal/llmutils/client.go20
-rw-r--r--internal/llmutils/client_test.go16
2 files changed, 32 insertions, 4 deletions
diff --git a/internal/llmutils/client.go b/internal/llmutils/client.go
index 16a6338..3641556 100644
--- a/internal/llmutils/client.go
+++ b/internal/llmutils/client.go
@@ -21,13 +21,25 @@ func CanonicalProvider(name string) string {
func DefaultModelForProvider(cfg appconfig.App, provider string) string {
switch CanonicalProvider(provider) {
case "openrouter":
- return strings.TrimSpace(cfg.OpenRouterModel)
+ if model := strings.TrimSpace(cfg.OpenRouterModel); model != "" {
+ return model
+ }
+ return "openrouter/auto"
case "ollama":
- return strings.TrimSpace(cfg.OllamaModel)
+ if model := strings.TrimSpace(cfg.OllamaModel); model != "" {
+ return model
+ }
+ return "qwen3-coder:30b-a3b-q4_K_M"
case "anthropic":
- return strings.TrimSpace(cfg.AnthropicModel)
+ if model := strings.TrimSpace(cfg.AnthropicModel); model != "" {
+ return model
+ }
+ return "claude-3-5-sonnet-20240620"
default:
- return strings.TrimSpace(cfg.OpenAIModel)
+ if model := strings.TrimSpace(cfg.OpenAIModel); model != "" {
+ return model
+ }
+ return "gpt-4.1"
}
}
diff --git a/internal/llmutils/client_test.go b/internal/llmutils/client_test.go
index 837d408..0e38476 100644
--- a/internal/llmutils/client_test.go
+++ b/internal/llmutils/client_test.go
@@ -56,6 +56,22 @@ func TestDefaultModelForProvider(t *testing.T) {
}
}
+func TestDefaultModelForProvider_Fallbacks(t *testing.T) {
+ cfg := appconfig.App{}
+ if got := DefaultModelForProvider(cfg, "openai"); got != "gpt-4.1" {
+ t.Fatalf("openai fallback = %q", got)
+ }
+ if got := DefaultModelForProvider(cfg, "openrouter"); got != "openrouter/auto" {
+ t.Fatalf("openrouter fallback = %q", got)
+ }
+ if got := DefaultModelForProvider(cfg, "ollama"); got != "qwen3-coder:30b-a3b-q4_K_M" {
+ t.Fatalf("ollama fallback = %q", got)
+ }
+ if got := DefaultModelForProvider(cfg, "anthropic"); got != "claude-3-5-sonnet-20240620" {
+ t.Fatalf("anthropic fallback = %q", got)
+ }
+}
+
func TestConfigForProvider(t *testing.T) {
base := appconfig.App{
Provider: "openai",