mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-11 01:34:45 +08:00
feat: config max_search_results for search engine (#192)
* feat: implement UI * feat: config max_search_results for search engine via api --------- Co-authored-by: Henry Li <henry1943@163.com>
This commit is contained in:
@@ -5,28 +5,12 @@ import os
|
||||
|
||||
from .crawl import crawl_tool
|
||||
from .python_repl import python_repl_tool
|
||||
from .search import (
|
||||
tavily_search_tool,
|
||||
duckduckgo_search_tool,
|
||||
brave_search_tool,
|
||||
arxiv_search_tool,
|
||||
)
|
||||
from .search import get_web_search_tool
|
||||
from .tts import VolcengineTTS
|
||||
from src.config import SELECTED_SEARCH_ENGINE, SearchEngine
|
||||
|
||||
# Map search engine names to their respective tools
|
||||
search_tool_mappings = {
|
||||
SearchEngine.TAVILY.value: tavily_search_tool,
|
||||
SearchEngine.DUCKDUCKGO.value: duckduckgo_search_tool,
|
||||
SearchEngine.BRAVE_SEARCH.value: brave_search_tool,
|
||||
SearchEngine.ARXIV.value: arxiv_search_tool,
|
||||
}
|
||||
|
||||
web_search_tool = search_tool_mappings.get(SELECTED_SEARCH_ENGINE, tavily_search_tool)
|
||||
|
||||
__all__ = [
|
||||
"crawl_tool",
|
||||
"web_search_tool",
|
||||
"python_repl_tool",
|
||||
"get_web_search_tool",
|
||||
"VolcengineTTS",
|
||||
]
|
||||
|
||||
@@ -9,7 +9,7 @@ from langchain_community.tools import BraveSearch, DuckDuckGoSearchResults
|
||||
from langchain_community.tools.arxiv import ArxivQueryRun
|
||||
from langchain_community.utilities import ArxivAPIWrapper, BraveSearchWrapper
|
||||
|
||||
from src.config import SEARCH_MAX_RESULTS, SearchEngine
|
||||
from src.config import SearchEngine, SELECTED_SEARCH_ENGINE
|
||||
from src.tools.tavily_search.tavily_search_results_with_images import (
|
||||
TavilySearchResultsWithImages,
|
||||
)
|
||||
@@ -18,44 +18,48 @@ from src.tools.decorators import create_logged_tool
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Create logged versions of the search tools
|
||||
LoggedTavilySearch = create_logged_tool(TavilySearchResultsWithImages)
|
||||
if os.getenv("SEARCH_API", "") == SearchEngine.TAVILY.value:
|
||||
tavily_search_tool = LoggedTavilySearch(
|
||||
name="web_search",
|
||||
max_results=SEARCH_MAX_RESULTS,
|
||||
include_raw_content=True,
|
||||
include_images=True,
|
||||
include_image_descriptions=True,
|
||||
)
|
||||
else:
|
||||
tavily_search_tool = None
|
||||
|
||||
LoggedDuckDuckGoSearch = create_logged_tool(DuckDuckGoSearchResults)
|
||||
duckduckgo_search_tool = LoggedDuckDuckGoSearch(
|
||||
name="web_search", max_results=SEARCH_MAX_RESULTS
|
||||
)
|
||||
|
||||
LoggedBraveSearch = create_logged_tool(BraveSearch)
|
||||
brave_search_tool = LoggedBraveSearch(
|
||||
name="web_search",
|
||||
search_wrapper=BraveSearchWrapper(
|
||||
api_key=os.getenv("BRAVE_SEARCH_API_KEY", ""),
|
||||
search_kwargs={"count": SEARCH_MAX_RESULTS},
|
||||
),
|
||||
)
|
||||
|
||||
LoggedArxivSearch = create_logged_tool(ArxivQueryRun)
|
||||
arxiv_search_tool = LoggedArxivSearch(
|
||||
name="web_search",
|
||||
api_wrapper=ArxivAPIWrapper(
|
||||
top_k_results=SEARCH_MAX_RESULTS,
|
||||
load_max_docs=SEARCH_MAX_RESULTS,
|
||||
load_all_available_meta=True,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
# Get the selected search tool
|
||||
def get_web_search_tool(max_search_results: int):
|
||||
if SELECTED_SEARCH_ENGINE == SearchEngine.TAVILY.value:
|
||||
return LoggedTavilySearch(
|
||||
name="web_search",
|
||||
max_results=max_search_results,
|
||||
include_raw_content=True,
|
||||
include_images=True,
|
||||
include_image_descriptions=True,
|
||||
)
|
||||
elif SELECTED_SEARCH_ENGINE == SearchEngine.DUCKDUCKGO.value:
|
||||
return LoggedDuckDuckGoSearch(name="web_search", max_results=max_search_results)
|
||||
elif SELECTED_SEARCH_ENGINE == SearchEngine.BRAVE_SEARCH.value:
|
||||
return LoggedBraveSearch(
|
||||
name="web_search",
|
||||
search_wrapper=BraveSearchWrapper(
|
||||
api_key=os.getenv("BRAVE_SEARCH_API_KEY", ""),
|
||||
search_kwargs={"count": max_search_results},
|
||||
),
|
||||
)
|
||||
elif SELECTED_SEARCH_ENGINE == SearchEngine.ARXIV.value:
|
||||
return LoggedArxivSearch(
|
||||
name="web_search",
|
||||
api_wrapper=ArxivAPIWrapper(
|
||||
top_k_results=max_search_results,
|
||||
load_max_docs=max_search_results,
|
||||
load_all_available_meta=True,
|
||||
),
|
||||
)
|
||||
else:
|
||||
raise ValueError(f"Unsupported search engine: {SELECTED_SEARCH_ENGINE}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
results = LoggedDuckDuckGoSearch(
|
||||
name="web_search", max_results=SEARCH_MAX_RESULTS, output_format="list"
|
||||
name="web_search", max_results=3, output_format="list"
|
||||
).invoke("cute panda")
|
||||
print(json.dumps(results, indent=2, ensure_ascii=False))
|
||||
|
||||
Reference in New Issue
Block a user