Bases: BaseWebSearchDriver
Source code in griptape/drivers/web_search/duck_duck_go_web_search_driver.py
| @define
class DuckDuckGoWebSearchDriver(BaseWebSearchDriver):
language: str = field(default="en", kw_only=True)
country: str = field(default="us", kw_only=True)
_client: DDGS = field(default=None, kw_only=True, alias="client", metadata={"serializable": False})
@lazy_property()
def client(self) -> DDGS:
return import_optional_dependency("duckduckgo_search").DDGS()
def search(self, query: str, **kwargs) -> ListArtifact:
try:
results = self.client.text(
query, region=f"{self.language}-{self.country}", max_results=self.results_count, **kwargs
)
return ListArtifact(
[
TextArtifact(
json.dumps({"title": result["title"], "url": result["href"], "description": result["body"]}),
)
for result in results
],
)
except Exception as e:
raise Exception(f"Error searching '{query}' with DuckDuckGo: {e}") from e
|
country: str = field(default='us', kw_only=True)
class-attribute
instance-attribute
language: str = field(default='en', kw_only=True)
class-attribute
instance-attribute
client()
Source code in griptape/drivers/web_search/duck_duck_go_web_search_driver.py
| @lazy_property()
def client(self) -> DDGS:
return import_optional_dependency("duckduckgo_search").DDGS()
|
search(query, **kwargs)
Source code in griptape/drivers/web_search/duck_duck_go_web_search_driver.py
| def search(self, query: str, **kwargs) -> ListArtifact:
try:
results = self.client.text(
query, region=f"{self.language}-{self.country}", max_results=self.results_count, **kwargs
)
return ListArtifact(
[
TextArtifact(
json.dumps({"title": result["title"], "url": result["href"], "description": result["body"]}),
)
for result in results
],
)
except Exception as e:
raise Exception(f"Error searching '{query}' with DuckDuckGo: {e}") from e
|