summaryrefslogtreecommitdiff
path: root/internal/llmutils
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-09-08 12:02:40 +0300
committerPaul Buetow <paul@buetow.org>2025-09-08 12:02:40 +0300
commit75cf6abd55bfb60324fc47cf91eac08dbb8b87b4 (patch)
tree6ef90d8014fe4d9a757d3f7e95bf736b70e4c685 /internal/llmutils
parent0dcf347c3fbc6e4ffb7e46294f5dd92dbbcd98ef (diff)
docs: move tmux documentation to its own file
Diffstat (limited to 'internal/llmutils')
-rw-r--r--internal/llmutils/client.go51
-rw-r--r--internal/llmutils/client_test.go33
2 files changed, 41 insertions, 43 deletions
diff --git a/internal/llmutils/client.go b/internal/llmutils/client.go
index ae545c5..9bd39ee 100644
--- a/internal/llmutils/client.go
+++ b/internal/llmutils/client.go
@@ -1,35 +1,34 @@
package llmutils
import (
- "os"
- "strings"
+ "os"
+ "strings"
- "codeberg.org/snonux/hexai/internal/appconfig"
- "codeberg.org/snonux/hexai/internal/llm"
+ "codeberg.org/snonux/hexai/internal/appconfig"
+ "codeberg.org/snonux/hexai/internal/llm"
)
// NewClientFromApp builds an llm.Client using app config and environment keys.
func NewClientFromApp(cfg appconfig.App) (llm.Client, error) {
- llmCfg := llm.Config{
- Provider: cfg.Provider,
- OpenAIBaseURL: cfg.OpenAIBaseURL,
- OpenAIModel: cfg.OpenAIModel,
- OpenAITemperature: cfg.OpenAITemperature,
- OllamaBaseURL: cfg.OllamaBaseURL,
- OllamaModel: cfg.OllamaModel,
- OllamaTemperature: cfg.OllamaTemperature,
- CopilotBaseURL: cfg.CopilotBaseURL,
- CopilotModel: cfg.CopilotModel,
- CopilotTemperature: cfg.CopilotTemperature,
- }
- oaKey := os.Getenv("HEXAI_OPENAI_API_KEY")
- if strings.TrimSpace(oaKey) == "" {
- oaKey = os.Getenv("OPENAI_API_KEY")
- }
- cpKey := os.Getenv("HEXAI_COPILOT_API_KEY")
- if strings.TrimSpace(cpKey) == "" {
- cpKey = os.Getenv("COPILOT_API_KEY")
- }
- return llm.NewFromConfig(llmCfg, oaKey, cpKey)
+ llmCfg := llm.Config{
+ Provider: cfg.Provider,
+ OpenAIBaseURL: cfg.OpenAIBaseURL,
+ OpenAIModel: cfg.OpenAIModel,
+ OpenAITemperature: cfg.OpenAITemperature,
+ OllamaBaseURL: cfg.OllamaBaseURL,
+ OllamaModel: cfg.OllamaModel,
+ OllamaTemperature: cfg.OllamaTemperature,
+ CopilotBaseURL: cfg.CopilotBaseURL,
+ CopilotModel: cfg.CopilotModel,
+ CopilotTemperature: cfg.CopilotTemperature,
+ }
+ oaKey := os.Getenv("HEXAI_OPENAI_API_KEY")
+ if strings.TrimSpace(oaKey) == "" {
+ oaKey = os.Getenv("OPENAI_API_KEY")
+ }
+ cpKey := os.Getenv("HEXAI_COPILOT_API_KEY")
+ if strings.TrimSpace(cpKey) == "" {
+ cpKey = os.Getenv("COPILOT_API_KEY")
+ }
+ return llm.NewFromConfig(llmCfg, oaKey, cpKey)
}
-
diff --git a/internal/llmutils/client_test.go b/internal/llmutils/client_test.go
index 9bb7ea2..2e20db3 100644
--- a/internal/llmutils/client_test.go
+++ b/internal/llmutils/client_test.go
@@ -1,28 +1,27 @@
package llmutils
import (
- "os"
- "testing"
+ "os"
+ "testing"
- "codeberg.org/snonux/hexai/internal/appconfig"
+ "codeberg.org/snonux/hexai/internal/appconfig"
)
func TestNewClientFromApp_Ollama(t *testing.T) {
- cfg := appconfig.App{Provider: "ollama"}
- c, err := NewClientFromApp(cfg)
- if err != nil || c == nil {
- t.Fatalf("ollama client failed: %v %v", c, err)
- }
+ cfg := appconfig.App{Provider: "ollama"}
+ c, err := NewClientFromApp(cfg)
+ if err != nil || c == nil {
+ t.Fatalf("ollama client failed: %v %v", c, err)
+ }
}
func TestNewClientFromApp_OpenAI_WithKey(t *testing.T) {
- t.Setenv("HEXAI_OPENAI_API_KEY", "test-key")
- cfg := appconfig.App{Provider: "openai"}
- c, err := NewClientFromApp(cfg)
- if err != nil || c == nil {
- t.Fatalf("openai client failed: %v %v", c, err)
- }
- // ensure env override precedence
- _ = os.Unsetenv("OPENAI_API_KEY")
+ t.Setenv("HEXAI_OPENAI_API_KEY", "test-key")
+ cfg := appconfig.App{Provider: "openai"}
+ c, err := NewClientFromApp(cfg)
+ if err != nil || c == nil {
+ t.Fatalf("openai client failed: %v %v", c, err)
+ }
+ // ensure env override precedence
+ _ = os.Unsetenv("OPENAI_API_KEY")
}
-