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")
|
sogouReady := opts.providerReady("sogou")
|
||||||
duckReady := opts.providerReady("duckduckgo")
|
duckReady := opts.providerReady("duckduckgo")
|
||||||
|
|
||||||
|
for _, name := range autoPrimaryWebSearchProviders {
|
||||||
|
if opts.providerReady(name) {
|
||||||
|
return name, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if sogouReady && duckReady {
|
if sogouReady && duckReady {
|
||||||
if prefersDuckDuckGoQuery(query) {
|
if prefersDuckDuckGoQuery(query) {
|
||||||
return "duckduckgo", nil
|
return "duckduckgo", nil
|
||||||
|
|
@ -1325,7 +1332,7 @@ func (opts WebSearchToolOptions) resolveProviderName(query string) (string, erro
|
||||||
return "duckduckgo", nil
|
return "duckduckgo", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, name := range autoPrimaryWebSearchProviders {
|
for _, name := range autoFallbackWebSearchProviders {
|
||||||
if opts.providerReady(name) {
|
if opts.providerReady(name) {
|
||||||
return name, nil
|
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{
|
opts := WebSearchToolOptions{
|
||||||
GeminiEnabled: true,
|
GeminiEnabled: true,
|
||||||
GeminiAPIKey: "google-key",
|
GeminiAPIKey: "google-key",
|
||||||
|
|
@ -1872,16 +1872,16 @@ func TestWebTool_AutoProviderPrefersFreeProvidersBeforeGemini(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("ResolveWebSearchProviderName() error: %v", err)
|
t.Fatalf("ResolveWebSearchProviderName() error: %v", err)
|
||||||
}
|
}
|
||||||
if name != "duckduckgo" {
|
if name != "gemini" {
|
||||||
t.Fatalf("provider = %q, want duckduckgo", name)
|
t.Fatalf("provider = %q, want gemini", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
name, err = ResolveWebSearchProviderName(opts, "今天上海天气")
|
name, err = ResolveWebSearchProviderName(opts, "今天上海天气")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("ResolveWebSearchProviderName() error: %v", err)
|
t.Fatalf("ResolveWebSearchProviderName() error: %v", err)
|
||||||
}
|
}
|
||||||
if name != "sogou" {
|
if name != "gemini" {
|
||||||
t.Fatalf("provider = %q, want sogou", name)
|
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 := config.DefaultConfig()
|
||||||
cfg.Tools.Web.Provider = "auto"
|
cfg.Tools.Web.Provider = "auto"
|
||||||
cfg.Tools.Web.Sogou.Enabled = true
|
cfg.Tools.Web.Sogou.Enabled = true
|
||||||
cfg.Tools.Web.Brave.Enabled = true
|
cfg.Tools.Web.Brave.Enabled = true
|
||||||
cfg.Tools.Web.Brave.SetAPIKey("brave-test-key")
|
cfg.Tools.Web.Brave.SetAPIKey("brave-test-key")
|
||||||
|
|
||||||
if got := resolveCurrentWebSearchProvider(cfg); got != "sogou" {
|
if got := resolveCurrentWebSearchProvider(cfg); got != "brave" {
|
||||||
t.Fatalf("resolveCurrentWebSearchProvider() = %q, want sogou", got)
|
t.Fatalf("resolveCurrentWebSearchProvider() = %q, want brave", got)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue