From 438c979a2e29b0865a8334980414434638e9c082 Mon Sep 17 00:00:00 2001 From: SuperMuel <69467005+SuperMuel@users.noreply.github.com> Date: Thu, 23 May 2024 13:51:17 +0200 Subject: [PATCH 1/2] Add n_results, country, location and locale parameters to payload --- .../tools/serper_dev_tool/serper_dev_tool.py | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py b/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py index 927c0e3b3..9a571cdac 100644 --- a/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py +++ b/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py @@ -2,7 +2,7 @@ import os import json import requests -from typing import Type, Any +from typing import Optional, Type, Any from pydantic.v1 import BaseModel, Field from crewai_tools.tools.base_tool import BaseTool @@ -16,18 +16,27 @@ class SerperDevTool(BaseTool): args_schema: Type[BaseModel] = SerperDevToolSchema search_url: str = "https://google.serper.dev/search" n_results: int = 10 + country: Optional[str] = None + location: Optional[str] = None + locale: Optional[str] = None def _run( self, **kwargs: Any, ) -> Any: - search_query = kwargs.get('search_query') - if search_query is None: - search_query = kwargs.get('query') + search_query = kwargs.get('search_query') or kwargs.get('query') - payload = json.dumps({"q": search_query}) + payload = json.dumps( + { + "q": search_query, + "num": self.n_results, + "gl": self.country, + "location": self.location, + "hl": self.locale, + } + ) headers = { - 'X-API-KEY': os.environ['SERPER_API_KEY'], + 'X-API-KEY': os.environ['SERPER_API_KEY'], 'content-type': 'application/json' } response = requests.request("POST", self.search_url, headers=headers, data=payload) From f447f71a8ee017298acaac590e30b9ca5ae2589e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moura?= Date: Sun, 14 Jul 2024 17:59:17 -0300 Subject: [PATCH 2/2] Update serper_dev_tool.py --- .../tools/serper_dev_tool/serper_dev_tool.py | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py b/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py index 77d008be9..651d9c5a6 100644 --- a/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py +++ b/src/crewai_tools/tools/serper_dev_tool/serper_dev_tool.py @@ -27,7 +27,7 @@ class SerperDevTool(BaseTool): location: Optional[str] = None locale: Optional[str] = None n_results: int = Field(default=10, description="Number of search results to return") - save_file: bool = Field(default=False, description="Flag to determine whether to save the results to a file") + save_file: bool = Field(default=False, description="Flag to determine whether to save the results to a file") def _run( self, @@ -35,22 +35,19 @@ class SerperDevTool(BaseTool): ) -> Any: search_query = kwargs.get('search_query') or kwargs.get('query') - save_file = kwargs.get('save_file', self.save_file) - n_results = kwargs.get('n_results', self.n_results) + save_file = kwargs.get('save_file', self.save_file) + n_results = kwargs.get('n_results', self.n_results) - payload = json.dumps( - { - "q": search_query, - "num": n_results, - "gl": self.country, - "location": self.location, - "hl": self.locale, - } - ) + payload = { "q": search_query, "num": n_results } + payload["gl"] = self.country if self.country + payload["location"] = self.country if self.location + payload["hl"] = self.country if self.locale + + payload = json.dumps(payload) headers = { 'X-API-KEY': os.environ['SERPER_API_KEY'], - 'content-type': 'application/json' + 'content-type': 'application/json' } response = requests.request("POST", self.search_url, headers=headers, data=payload) results = response.json()