Feat: Add Wikipedia search engine (#478)

* feat: add Wikipedia search engine

* wikipedia

* make format
This commit is contained in:
HansleCho
2025-07-29 14:58:08 +09:00
committed by GitHub
parent 89c1b689dc
commit bedf7d4af2
4 changed files with 50 additions and 13 deletions

View File

@@ -13,6 +13,7 @@ class SearchEngine(enum.Enum):
DUCKDUCKGO = "duckduckgo"
BRAVE_SEARCH = "brave_search"
ARXIV = "arxiv"
WIKIPEDIA = "wikipedia"
# Tool configuration

View File

@@ -5,9 +5,17 @@ import logging
import os
from typing import List, Optional
from langchain_community.tools import BraveSearch, DuckDuckGoSearchResults
from langchain_community.tools import (
BraveSearch,
DuckDuckGoSearchResults,
WikipediaQueryRun,
)
from langchain_community.tools.arxiv import ArxivQueryRun
from langchain_community.utilities import ArxivAPIWrapper, BraveSearchWrapper
from langchain_community.utilities import (
ArxivAPIWrapper,
BraveSearchWrapper,
WikipediaAPIWrapper,
)
from src.config import SearchEngine, SELECTED_SEARCH_ENGINE
from src.config import load_yaml_config
@@ -24,6 +32,7 @@ LoggedTavilySearch = create_logged_tool(TavilySearchResultsWithImages)
LoggedDuckDuckGoSearch = create_logged_tool(DuckDuckGoSearchResults)
LoggedBraveSearch = create_logged_tool(BraveSearch)
LoggedArxivSearch = create_logged_tool(ArxivQueryRun)
LoggedWikipediaSearch = create_logged_tool(WikipediaQueryRun)
def get_search_config():
@@ -76,5 +85,19 @@ def get_web_search_tool(max_search_results: int):
load_all_available_meta=True,
),
)
elif SELECTED_SEARCH_ENGINE == SearchEngine.WIKIPEDIA.value:
wiki_lang = search_config.get("wikipedia_lang", "en")
wiki_doc_content_chars_max = search_config.get(
"wikipedia_doc_content_chars_max", 4000
)
return LoggedWikipediaSearch(
name="web_search",
api_wrapper=WikipediaAPIWrapper(
lang=wiki_lang,
top_k_results=max_search_results,
load_all_available_meta=True,
doc_content_chars_max=wiki_doc_content_chars_max,
),
)
else:
raise ValueError(f"Unsupported search engine: {SELECTED_SEARCH_ENGINE}")