summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-08-17 08:43:53 +0300
committerPaul Buetow <paul@buetow.org>2025-08-17 08:43:53 +0300
commit07d02d93dbb7a8167758f678c68b5a1a520167c8 (patch)
treeffa0698323175c2c5fa591420f2c33d1bcb9e069 /cmd
parentd44ae13e97eff75704b0fbd90814811dcc98eff5 (diff)
llm: add GitHub Copilot provider
- Implement copilot client reading COPILOT_API_KEY - Wire copilot_base_url and copilot_model config - Update README and config example; defaults to gpt-4.1 - Keep OpenAI default at gpt-4.1 for consistency
Diffstat (limited to 'cmd')
-rw-r--r--cmd/hexai/main.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/cmd/hexai/main.go b/cmd/hexai/main.go
index 941460e..25b5281 100644
--- a/cmd/hexai/main.go
+++ b/cmd/hexai/main.go
@@ -53,9 +53,12 @@ func main() {
OpenAIModel: cfg.OpenAIModel,
OllamaBaseURL: cfg.OllamaBaseURL,
OllamaModel: cfg.OllamaModel,
+ CopilotBaseURL: cfg.CopilotBaseURL,
+ CopilotModel: cfg.CopilotModel,
}
oaKey := os.Getenv("OPENAI_API_KEY")
- if c, err := llm.NewFromConfig(llmCfg, oaKey); err != nil {
+ cpKey := os.Getenv("COPILOT_API_KEY")
+ if c, err := llm.NewFromConfig(llmCfg, oaKey, cpKey); err != nil {
logging.Logf("lsp ", "llm disabled: %v", err)
} else {
client = c
@@ -93,6 +96,8 @@ type appConfig struct {
OpenAIModel string `json:"openai_model"`
OllamaBaseURL string `json:"ollama_base_url"`
OllamaModel string `json:"ollama_model"`
+ CopilotBaseURL string `json:"copilot_base_url"`
+ CopilotModel string `json:"copilot_model"`
}
func loadConfig(logger *log.Logger) appConfig {
@@ -157,5 +162,11 @@ func loadConfig(logger *log.Logger) appConfig {
if strings.TrimSpace(fileCfg.OllamaModel) != "" {
cfg.OllamaModel = fileCfg.OllamaModel
}
+ if strings.TrimSpace(fileCfg.CopilotBaseURL) != "" {
+ cfg.CopilotBaseURL = fileCfg.CopilotBaseURL
+ }
+ if strings.TrimSpace(fileCfg.CopilotModel) != "" {
+ cfg.CopilotModel = fileCfg.CopilotModel
+ }
return cfg
}