Files
deer-flow/src/tools/search.py

48 lines
1.5 KiB
Python
Raw Normal View History

2025-04-17 11:34:42 +08:00
# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
# SPDX-License-Identifier: MIT
import logging
2025-04-11 15:37:55 +08:00
import os
from langchain_community.tools.tavily_search import TavilySearchResults
2025-04-10 11:45:04 +08:00
from langchain_community.tools import DuckDuckGoSearchResults
2025-04-11 15:37:55 +08:00
from langchain_community.tools import BraveSearch
from langchain_community.tools.arxiv import ArxivQueryRun
from langchain_community.utilities import ArxivAPIWrapper, BraveSearchWrapper
2025-04-10 11:45:04 +08:00
from src.config import SEARCH_MAX_RESULTS
from .decorators import create_logged_tool
logger = logging.getLogger(__name__)
2025-04-10 11:45:04 +08:00
LoggedTavilySearch = create_logged_tool(TavilySearchResults)
2025-04-10 11:45:04 +08:00
tavily_search_tool = LoggedTavilySearch(
name="web_search",
max_results=SEARCH_MAX_RESULTS,
include_raw_content=True,
include_images=True,
2025-04-10 11:45:04 +08:00
)
LoggedDuckDuckGoSearch = create_logged_tool(DuckDuckGoSearchResults)
duckduckgo_search_tool = LoggedDuckDuckGoSearch(
name="web_search", max_results=SEARCH_MAX_RESULTS
)
2025-04-11 15:37:55 +08:00
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,
),
)