summaryrefslogtreecommitdiff
path: root/internal/llmutils
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-20 18:27:35 +0300
committerPaul Buetow <paul@buetow.org>2026-05-20 18:27:35 +0300
commit83caeb9bcdc4a5eafda937807cd42ea8455948a6 (patch)
treef2258d2d77bfb3f9186bbc457cecdfe17877b891 /internal/llmutils
parent005c262d09314cd43285af33dc6f1afef0621714 (diff)
Add YouSearch (You.com Research API) provider integration
Amp-Thread-ID: https://ampcode.com/threads/T-019e45ff-4976-750c-b2e6-121d0e5991ef Co-authored-by: Amp <amp@ampcode.com>
Diffstat (limited to 'internal/llmutils')
-rw-r--r--internal/llmutils/client.go40
1 files changed, 25 insertions, 15 deletions
diff --git a/internal/llmutils/client.go b/internal/llmutils/client.go
index c626918..a68746e 100644
--- a/internal/llmutils/client.go
+++ b/internal/llmutils/client.go
@@ -36,6 +36,11 @@ func DefaultModelForProvider(cfg appconfig.App, provider string) string {
return model
}
return "claude-3-5-sonnet-20240620"
+ case "yousearch":
+ if effort := strings.TrimSpace(cfg.YouSearchResearchEffort); effort != "" {
+ return effort
+ }
+ return "standard"
default:
if model := strings.TrimSpace(cfg.OpenAIModel); model != "" {
return model
@@ -77,20 +82,21 @@ func NewClientFromAppForProvider(cfg appconfig.App, provider, modelOverride stri
// 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,
- RequestTimeout: cfg.RequestTimeout,
- OpenAIBaseURL: cfg.OpenAIBaseURL,
- OpenAIModel: cfg.OpenAIModel,
- OpenAITemperature: cfg.OpenAITemperature,
- OpenRouterBaseURL: cfg.OpenRouterBaseURL,
- OpenRouterModel: cfg.OpenRouterModel,
- OpenRouterTemperature: cfg.OpenRouterTemperature,
- OllamaBaseURL: cfg.OllamaBaseURL,
- OllamaModel: cfg.OllamaModel,
- OllamaTemperature: cfg.OllamaTemperature,
- AnthropicBaseURL: cfg.AnthropicBaseURL,
- AnthropicModel: cfg.AnthropicModel,
- AnthropicTemperature: cfg.AnthropicTemperature,
+ Provider: cfg.Provider,
+ RequestTimeout: cfg.RequestTimeout,
+ OpenAIBaseURL: cfg.OpenAIBaseURL,
+ OpenAIModel: cfg.OpenAIModel,
+ OpenAITemperature: cfg.OpenAITemperature,
+ OpenRouterBaseURL: cfg.OpenRouterBaseURL,
+ OpenRouterModel: cfg.OpenRouterModel,
+ OpenRouterTemperature: cfg.OpenRouterTemperature,
+ OllamaBaseURL: cfg.OllamaBaseURL,
+ OllamaModel: cfg.OllamaModel,
+ OllamaTemperature: cfg.OllamaTemperature,
+ AnthropicBaseURL: cfg.AnthropicBaseURL,
+ AnthropicModel: cfg.AnthropicModel,
+ AnthropicTemperature: cfg.AnthropicTemperature,
+ YouSearchResearchEffort: cfg.YouSearchResearchEffort,
}
oaKey := os.Getenv("HEXAI_OPENAI_API_KEY")
if strings.TrimSpace(oaKey) == "" {
@@ -110,5 +116,9 @@ func NewClientFromApp(cfg appconfig.App) (llm.Client, error) {
if strings.TrimSpace(olKey) == "" {
olKey = os.Getenv("OLLAMA_API_KEY")
}
- return llm.NewFromConfig(llmCfg, oaKey, orKey, anKey, olKey)
+ ysKey := os.Getenv("HEXAI_YOUSEARCH_API_KEY")
+ if strings.TrimSpace(ysKey) == "" {
+ ysKey = os.Getenv("YOU_API_KEY")
+ }
+ return llm.NewFromConfig(llmCfg, oaKey, orKey, anKey, olKey, ysKey)
}