diff options
| author | Paul Buetow <paul@buetow.org> | 2025-09-06 13:19:01 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-09-06 13:19:01 +0300 |
| commit | 04f290dbeeee8a6fcbc70fed253a968336bcb2ab (patch) | |
| tree | 3ee23a4ac4bcc5b43b43697cfb0e905735fc6331 /internal/llmutils | |
| parent | 5e966f50111adf6e2cb2683fe588f6fe033fa931 (diff) | |
more tests
Diffstat (limited to 'internal/llmutils')
| -rw-r--r-- | internal/llmutils/client.go | 35 | ||||
| -rw-r--r-- | internal/llmutils/client_test.go | 28 |
2 files changed, 63 insertions, 0 deletions
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") +} + |
