fix(web): prefer configured providers before Gemini in auto mode
This commit is contained in:
parent
a5fd7a41a6
commit
7b861437c0
3 changed files with 16 additions and 9 deletions
|
|
@ -1312,6 +1312,13 @@ func (opts WebSearchToolOptions) resolveProviderName(query string) (string, erro
|
|||
|
||||
sogouReady := opts.providerReady("sogou")
|
||||
duckReady := opts.providerReady("duckduckgo")
|
||||
|
||||
for _, name := range autoPrimaryWebSearchProviders {
|
||||
if opts.providerReady(name) {
|
||||
return name, nil
|
||||
}
|
||||
}
|
||||
|
||||
if sogouReady && duckReady {
|
||||
if prefersDuckDuckGoQuery(query) {
|
||||
return "duckduckgo", nil
|
||||
|
|
@ -1325,7 +1332,7 @@ func (opts WebSearchToolOptions) resolveProviderName(query string) (string, erro
|
|||
return "duckduckgo", nil
|
||||
}
|
||||
|
||||
for _, name := range autoPrimaryWebSearchProviders {
|
||||
for _, name := range autoFallbackWebSearchProviders {
|
||||
if opts.providerReady(name) {
|
||||
return name, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1853,7 +1853,7 @@ func TestWebTool_AutoProviderPrefersConfiguredProvidersBeforeSogou(t *testing.T)
|
|||
}
|
||||
}
|
||||
|
||||
func TestWebTool_AutoProviderPrefersFreeProvidersBeforeGemini(t *testing.T) {
|
||||
func TestWebTool_AutoProviderPrefersConfiguredProvidersBeforeGemini(t *testing.T) {
|
||||
opts := WebSearchToolOptions{
|
||||
GeminiEnabled: true,
|
||||
GeminiAPIKey: "google-key",
|
||||
|
|
@ -1872,16 +1872,16 @@ func TestWebTool_AutoProviderPrefersFreeProvidersBeforeGemini(t *testing.T) {
|
|||
if err != nil {
|
||||
t.Fatalf("ResolveWebSearchProviderName() error: %v", err)
|
||||
}
|
||||
if name != "duckduckgo" {
|
||||
t.Fatalf("provider = %q, want duckduckgo", name)
|
||||
if name != "gemini" {
|
||||
t.Fatalf("provider = %q, want gemini", name)
|
||||
}
|
||||
|
||||
name, err = ResolveWebSearchProviderName(opts, "今天上海天气")
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveWebSearchProviderName() error: %v", err)
|
||||
}
|
||||
if name != "sogou" {
|
||||
t.Fatalf("provider = %q, want sogou", name)
|
||||
if name != "gemini" {
|
||||
t.Fatalf("provider = %q, want gemini", name)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -540,15 +540,15 @@ func TestHandleUpdateWebSearchConfig_PreservesAndReplacesMultiKeys(t *testing.T)
|
|||
}
|
||||
}
|
||||
|
||||
func TestResolveCurrentWebSearchProvider_PrefersFreeProvidersInAutoMode(t *testing.T) {
|
||||
func TestResolveCurrentWebSearchProvider_PrefersConfiguredProvidersInAutoMode(t *testing.T) {
|
||||
cfg := config.DefaultConfig()
|
||||
cfg.Tools.Web.Provider = "auto"
|
||||
cfg.Tools.Web.Sogou.Enabled = true
|
||||
cfg.Tools.Web.Brave.Enabled = true
|
||||
cfg.Tools.Web.Brave.SetAPIKey("brave-test-key")
|
||||
|
||||
if got := resolveCurrentWebSearchProvider(cfg); got != "sogou" {
|
||||
t.Fatalf("resolveCurrentWebSearchProvider() = %q, want sogou", got)
|
||||
if got := resolveCurrentWebSearchProvider(cfg); got != "brave" {
|
||||
t.Fatalf("resolveCurrentWebSearchProvider() = %q, want brave", got)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue