Source code for langchain_community.tools.asknews.tool
"""Tool for the AskNews API.To use this tool, you must first set your credentials as environment variables: ASKNEWS_CLIENT_ID ASKNEWS_CLIENT_SECRET"""fromtypingimportAny,Optional,Typefromlangchain_core.callbacksimport(AsyncCallbackManagerForToolRun,CallbackManagerForToolRun,)fromlangchain_core.toolsimportBaseToolfrompydanticimportBaseModel,Fieldfromlangchain_community.utilities.asknewsimportAskNewsAPIWrapper
[docs]classSearchInput(BaseModel):"""Input for the AskNews Search tool."""query:str=Field(description="Search query to be used for finding real-time or historical news ""information.")hours_back:Optional[int]=Field(0,description="If the Assistant deems that the event may have occurred more ""than 48 hours ago, it estimates the number of hours back to search. For ""example, if the event was one month ago, the Assistant may set this to 720. ""One week would be 168. The Assistant can estimate up to on year back (8760).",)
[docs]classAskNewsSearch(BaseTool):# type: ignore[override]"""Tool that searches the AskNews API."""name:str="asknews_search"description:str=("This tool allows you to perform a search on up-to-date news and historical ""news. If you needs news from more than 48 hours ago, you can estimate the ""number of hours back to search.")api_wrapper:AskNewsAPIWrapper=Field(default_factory=AskNewsAPIWrapper)# type: ignore[arg-type]max_results:int=10args_schema:Optional[Type[BaseModel]]=SearchInputdef_run(self,query:str,hours_back:int=0,run_manager:Optional[CallbackManagerForToolRun]=None,**kwargs:Any,)->str:"""Use the tool."""try:returnself.api_wrapper.search_news(query,hours_back=hours_back,max_results=self.max_results,)exceptExceptionase:returnrepr(e)asyncdef_arun(self,query:str,hours_back:int=0,run_manager:Optional[AsyncCallbackManagerForToolRun]=None,**kwargs:Any,)->str:"""Use the tool asynchronously."""try:returnawaitself.api_wrapper.asearch_news(query,hours_back=hours_back,max_results=self.max_results,)exceptExceptionase:returnrepr(e)