From 539142f8d557bb7b3576ff09f0109c6bf367b326 Mon Sep 17 00:00:00 2001 From: Tim Asp <707699+timothyasp@users.noreply.github.com> Date: Wed, 26 Apr 2023 16:37:03 -0700 Subject: [PATCH] Add way to get serpapi results async (#3604) Sometimes it's nice to get the raw results from serpapi, and we're missing the async version of this function. --- langchain/utilities/serpapi.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/langchain/utilities/serpapi.py b/langchain/utilities/serpapi.py index 70a14b5d..0710c2f3 100644 --- a/langchain/utilities/serpapi.py +++ b/langchain/utilities/serpapi.py @@ -77,7 +77,23 @@ class SerpAPIWrapper(BaseModel): return values async def arun(self, query: str) -> str: - """Use aiohttp to run query through SerpAPI and parse result.""" + """Run query through SerpAPI and parse result async.""" + return self._process_response(await self.aresults(query)) + + def run(self, query: str) -> str: + """Run query through SerpAPI and parse result.""" + return self._process_response(self.results(query)) + + def results(self, query: str) -> dict: + """Run query through SerpAPI and return the raw result.""" + params = self.get_params(query) + with HiddenPrints(): + search = self.search_engine(params) + res = search.get_dict() + return res + + async def aresults(self, query: str) -> dict: + """Use aiohttp to run query through SerpAPI and return the results async.""" def construct_url_and_params() -> Tuple[str, Dict[str, str]]: params = self.get_params(query) @@ -97,18 +113,6 @@ class SerpAPIWrapper(BaseModel): async with self.aiosession.get(url, params=params) as response: res = await response.json() - return self._process_response(res) - - def run(self, query: str) -> str: - """Run query through SerpAPI and parse result.""" - return self._process_response(self.results(query)) - - def results(self, query: str) -> dict: - """Run query through SerpAPI and return the raw result.""" - params = self.get_params(query) - with HiddenPrints(): - search = self.search_engine(params) - res = search.get_dict() return res def get_params(self, query: str) -> Dict[str, str]: