Multi-provider search with Exa → Tavily → Serper → DuckDuckGo fallback chain #219
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements a multi-provider search system with automatic fallback for DeepResearch. It provides a 4-provider fallback chain optimized for quality and reliability.
Fallback Chain
The system automatically falls back to the next provider when:
Why This Approach?
Provider Comparison
Changes
inference/tool_search.py: Complete rewrite with 4-provider fallbacksearch_exa(),search_tavily(),search_serper(),search_duckduckgo()sanitize_query()for input validationformat_results()for consistent outputmulti_provider_search()orchestrates the fallback chain.env.example: Updated with all provider API keysConfiguration
Error Handling
Testing
Tested all four paths:
type: "auto"search