2025-04-17 11:34:42 +08:00
|
|
|
# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
|
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
|
|
2025-04-07 16:25:55 +08:00
|
|
|
import logging
|
2025-04-11 15:37:55 +08:00
|
|
|
import os
|
2025-04-07 16:25:55 +08:00
|
|
|
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
|
2025-04-07 16:25:55 +08:00
|
|
|
from .decorators import create_logged_tool
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
2025-04-10 11:45:04 +08:00
|
|
|
|
2025-04-07 16:25:55 +08:00
|
|
|
LoggedTavilySearch = create_logged_tool(TavilySearchResults)
|
2025-04-10 11:45:04 +08:00
|
|
|
tavily_search_tool = LoggedTavilySearch(
|
2025-04-12 12:01:30 +08:00
|
|
|
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,
|
|
|
|
|
),
|
|
|
|
|
)
|