diff options
| author | Florian <2320560+florianbuetow@users.noreply.github.com> | 2026-01-31 23:48:38 +0100 |
|---|---|---|
| committer | Florian <2320560+florianbuetow@users.noreply.github.com> | 2026-01-31 23:48:38 +0100 |
| commit | 22009e90a4576764687328ed3cf81efbd2813d77 (patch) | |
| tree | e69b810f813955e24b79409bc27ff6b86adf11e3 /internal/llm/copilot.go | |
| parent | 7194696eb8c4c5bd50f69df96e9a6b87cec1f049 (diff) | |
feat: add configurable request timeout for LLM calls
Local LLMs (LM Studio, Ollama, etc.) often need more than the default
30-second timeout. Added request_timeout config option (in seconds)
to [general] section and HEXAI_REQUEST_TIMEOUT env var.
Original constructor signatures preserved via *WithTimeout variants,
so no test changes required.
Diffstat (limited to 'internal/llm/copilot.go')
| -rw-r--r-- | internal/llm/copilot.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/internal/llm/copilot.go b/internal/llm/copilot.go index b439ed3..43419ea 100644 --- a/internal/llm/copilot.go +++ b/internal/llm/copilot.go @@ -64,6 +64,10 @@ type copilotChatResponse struct { // Constructor (kept among the first functions by convention) func newCopilot(baseURL, model, apiKey string, defaultTemp *float64) Client { + return newCopilotWithTimeout(baseURL, model, apiKey, defaultTemp, 0) +} + +func newCopilotWithTimeout(baseURL, model, apiKey string, defaultTemp *float64, timeoutSec int) Client { if strings.TrimSpace(baseURL) == "" { baseURL = "https://api.githubcopilot.com" } @@ -72,8 +76,11 @@ func newCopilot(baseURL, model, apiKey string, defaultTemp *float64) Client { // Default to a broadly available, cost-effective option. model = "gpt-4o-mini" } + if timeoutSec <= 0 { + timeoutSec = 30 + } return copilotClient{ - httpClient: &http.Client{Timeout: 30 * time.Second}, + httpClient: &http.Client{Timeout: time.Duration(timeoutSec) * time.Second}, apiKey: apiKey, baseURL: strings.TrimRight(baseURL, "/"), defaultModel: model, |
