summaryrefslogtreecommitdiff
path: root/internal/llmutils/client.go
blob: ae545c50becaea00b007c57ff97a6804e55a24bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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)
}