From ef7cdde43c580843dd192554645d2786b0ab22e5 Mon Sep 17 00:00:00 2001 From: muava12 Date: Tue, 24 Feb 2026 12:55:06 +0800 Subject: [PATCH] feat(tools): prioritize tavily as first search provider Reorder web search priority from Perplexity > Brave > Tavily > DuckDuckGo to Tavily > Perplexity > Brave > DuckDuckGo. Add Tavily configuration entry to config.example.json for discoverability. --- config/config.example.json | 5 +++++ pkg/tools/web.go | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/config/config.example.json b/config/config.example.json index 0e5615ae3..a91be5b05 100644 --- a/config/config.example.json +++ b/config/config.example.json @@ -214,6 +214,11 @@ "enabled": true, "max_results": 5 }, + "tavily": { + "enabled": false, + "api_key": "tvly-YOUR_TAVILY_API_KEY", + "max_results": 5 + }, "perplexity": { "enabled": false, "api_key": "pplx-xxx", diff --git a/pkg/tools/web.go b/pkg/tools/web.go index 452e95e0f..cfe95e1bd 100644 --- a/pkg/tools/web.go +++ b/pkg/tools/web.go @@ -354,8 +354,16 @@ func NewWebSearchTool(opts WebSearchToolOptions) *WebSearchTool { var provider SearchProvider maxResults := 5 - // Priority: Perplexity > Brave > Tavily > DuckDuckGo - if opts.PerplexityEnabled && opts.PerplexityAPIKey != "" { + // Priority: Tavily > Perplexity > Brave > DuckDuckGo + if opts.TavilyEnabled && opts.TavilyAPIKey != "" { + provider = &TavilySearchProvider{ + apiKey: opts.TavilyAPIKey, + baseURL: opts.TavilyBaseURL, + } + if opts.TavilyMaxResults > 0 { + maxResults = opts.TavilyMaxResults + } + } else if opts.PerplexityEnabled && opts.PerplexityAPIKey != "" { provider = &PerplexitySearchProvider{apiKey: opts.PerplexityAPIKey} if opts.PerplexityMaxResults > 0 { maxResults = opts.PerplexityMaxResults @@ -365,14 +373,6 @@ func NewWebSearchTool(opts WebSearchToolOptions) *WebSearchTool { if opts.BraveMaxResults > 0 { maxResults = opts.BraveMaxResults } - } else if opts.TavilyEnabled && opts.TavilyAPIKey != "" { - provider = &TavilySearchProvider{ - apiKey: opts.TavilyAPIKey, - baseURL: opts.TavilyBaseURL, - } - if opts.TavilyMaxResults > 0 { - maxResults = opts.TavilyMaxResults - } } else if opts.DuckDuckGoEnabled { provider = &DuckDuckGoSearchProvider{} if opts.DuckDuckGoMaxResults > 0 {