Support params on GoogleSearchApiWrapper (#6810) (#7014)

## Description
Support search params in GoogleSearchApiWrapper's result call, for the
extra filtering on search,
to support extra query parameters that google cse provides:

https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list?hl=ko

## Issue
#6810
This commit is contained in:
skspark 2023-07-02 16:18:38 +09:00 committed by GitHub
parent 052c797429
commit e5f6f0ffc4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View File

@ -100,12 +100,18 @@ class GoogleSearchAPIWrapper(BaseModel):
return " ".join(snippets) return " ".join(snippets)
def results(self, query: str, num_results: int) -> List[Dict]: def results(
self,
query: str,
num_results: int,
search_params: Optional[Dict[str, str]] = None,
) -> List[Dict]:
"""Run query through GoogleSearch and return metadata. """Run query through GoogleSearch and return metadata.
Args: Args:
query: The query to search for. query: The query to search for.
num_results: The number of results to return. num_results: The number of results to return.
search_params: Parameters to be passed on search
Returns: Returns:
A list of dictionaries with the following keys: A list of dictionaries with the following keys:
@ -114,7 +120,9 @@ class GoogleSearchAPIWrapper(BaseModel):
link - The link to the result. link - The link to the result.
""" """
metadata_results = [] metadata_results = []
results = self._google_search_results(query, num=num_results) results = self._google_search_results(
query, num=num_results, **(search_params or {})
)
if len(results) == 0: if len(results) == 0:
return [{"Result": "No good Google Search Result was found"}] return [{"Result": "No good Google Search Result was found"}]
for result in results: for result in results:

View File

@ -17,3 +17,14 @@ def test_no_result_call() -> None:
) )
print(type(output)) print(type(output))
assert "No good Google Search Result was found" == output assert "No good Google Search Result was found" == output
def test_result_with_params_call() -> None:
"""Test that call gives the correct answer with extra params."""
search = GoogleSearchAPIWrapper()
output = search.results(
query="What was Obama's first name?",
num_results=5,
search_params={"cr": "us", "safe": "active"},
)
assert len(output)