From 64bbbf2cc2dcc19940427e162ffb62603628f036 Mon Sep 17 00:00:00 2001 From: Zander Chase <130414180+vowelparrot@users.noreply.github.com> Date: Tue, 25 Apr 2023 10:40:37 -0700 Subject: [PATCH] Add DDG to load_tools (#3535) Fix linting --------- Co-authored-by: Mike Wang <62768671+skcoirz@users.noreply.github.com> --- langchain/agents/load_tools.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/langchain/agents/load_tools.py b/langchain/agents/load_tools.py index 780501bb..da01bd70 100644 --- a/langchain/agents/load_tools.py +++ b/langchain/agents/load_tools.py @@ -1,7 +1,8 @@ # flake8: noqa """Load tools.""" import warnings -from typing import Any, List, Optional +from typing import Any, Dict, List, Optional, Callable, Tuple +from mypy_extensions import KwArg from langchain.agents.tools import Tool from langchain.callbacks.base import BaseCallbackManager @@ -14,6 +15,7 @@ from langchain.requests import TextRequestsWrapper from langchain.tools.arxiv.tool import ArxivQueryRun from langchain.tools.base import BaseTool from langchain.tools.bing_search.tool import BingSearchRun +from langchain.tools.ddg_search.tool import DuckDuckGoSearchTool from langchain.tools.google_search.tool import GoogleSearchResults, GoogleSearchRun from langchain.tools.human.tool import HumanInputRun from langchain.tools.python.tool import PythonREPLTool @@ -31,6 +33,7 @@ from langchain.utilities import ArxivAPIWrapper from langchain.utilities.apify import ApifyWrapper from langchain.utilities.bash import BashProcess from langchain.utilities.bing_search import BingSearchAPIWrapper +from langchain.utilities.duckduckgo_search import DuckDuckGoSearchAPIWrapper from langchain.utilities.google_search import GoogleSearchAPIWrapper from langchain.utilities.google_serper import GoogleSerperAPIWrapper from langchain.utilities.searx_search import SearxSearchWrapper @@ -215,6 +218,10 @@ def _get_bing_search(**kwargs: Any) -> BaseTool: return BingSearchRun(api_wrapper=BingSearchAPIWrapper(**kwargs)) +def _get_ddg_search(**kwargs: Any) -> BaseTool: + return DuckDuckGoSearchTool(api_wrapper=DuckDuckGoSearchAPIWrapper(**kwargs)) + + def _get_human_tool(**kwargs: Any) -> BaseTool: return HumanInputRun(**kwargs) @@ -225,7 +232,7 @@ _EXTRA_LLM_TOOLS = { "podcast-api": (_get_podcast_api, ["listen_api_key"]), } -_EXTRA_OPTIONAL_TOOLS = { +_EXTRA_OPTIONAL_TOOLS: Dict[str, Tuple[Callable[[KwArg(Any)], BaseTool], List[str]]] = { "wolfram-alpha": (_get_wolfram_alpha, ["wolfram_alpha_appid"]), "google-search": (_get_google_search, ["google_api_key", "google_cse_id"]), "google-search-results-json": ( @@ -237,6 +244,7 @@ _EXTRA_OPTIONAL_TOOLS = { ["searx_host", "engines", "num_results", "aiosession"], ), "bing-search": (_get_bing_search, ["bing_subscription_key", "bing_search_url"]), + "ddg-search": (_get_ddg_search, []), "google-serper": (_get_google_serper, ["serper_api_key"]), "serpapi": (_get_serpapi, ["serpapi_api_key", "aiosession"]), "searx-search": (_get_searx_search, ["searx_host", "engines", "aiosession"]),