From 04f290dbeeee8a6fcbc70fed253a968336bcb2ab Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Sep 2025 13:19:01 +0300 Subject: more tests --- internal/llmutils/client.go | 35 +++++++++++++++++++++++++++++++++++ internal/llmutils/client_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 internal/llmutils/client.go create mode 100644 internal/llmutils/client_test.go (limited to 'internal/llmutils') diff --git a/internal/llmutils/client.go b/internal/llmutils/client.go new file mode 100644 index 0000000..ae545c5 --- /dev/null +++ b/internal/llmutils/client.go @@ -0,0 +1,35 @@ +package llmutils + +import ( + "os" + "strings" + + "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) +} + diff --git a/internal/llmutils/client_test.go b/internal/llmutils/client_test.go new file mode 100644 index 0000000..9bb7ea2 --- /dev/null +++ b/internal/llmutils/client_test.go @@ -0,0 +1,28 @@ +package llmutils + +import ( + "os" + "testing" + + "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) + } +} + +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") +} + -- cgit v1.2.3