[docs]classJinaSearchAPIWrapper(BaseModel):"""Wrapper around the Jina search engine."""api_key:SecretStrbase_url:str="https://s.jina.ai/""""The base URL for the Jina search engine."""model_config=ConfigDict(extra="forbid",)@model_validator(mode="before")@classmethoddefvalidate_environment(cls,values:Dict)->Any:"""Validate that api key and endpoint exists in environment."""api_key=get_from_dict_or_env(values,"api_key","JINA_API_KEY")values["api_key"]=api_keyreturnvalues
[docs]defrun(self,query:str)->str:"""Query the Jina search engine and return the results as a JSON string. Args: query: The query to search for. Returns: The results as a JSON string. """web_search_results=self._search_request(query=query)final_results=[{"title":item.get("title"),"link":item.get("url"),"snippet":item.get("description"),"content":item.get("content"),}foriteminweb_search_results]returnjson.dumps(final_results)
[docs]defdownload_documents(self,query:str)->List[Document]:"""Query the Jina search engine and return the results as a list of Documents. Args: query: The query to search for. Returns: The results as a list of Documents. """results=self._search_request(query)return[Document(page_content=item.get("content"),# type: ignore[arg-type]metadata={"title":item.get("title"),"link":item.get("url"),"description":item.get("description"),},)foriteminresults]