|  | @@ -0,0 +1,35 @@
 | 
	
		
			
				|  |  | +from typing import Any, Union
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from yarl import URL
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from core.helper import ssrf_proxy
 | 
	
		
			
				|  |  | +from core.tools.entities.tool_entities import ToolInvokeMessage
 | 
	
		
			
				|  |  | +from core.tools.tool.builtin_tool import BuiltinTool
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class JinaReaderTool(BuiltinTool):
 | 
	
		
			
				|  |  | +    _jina_reader_endpoint = 'https://r.jina.ai/'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def _invoke(self, 
 | 
	
		
			
				|  |  | +                user_id: str,
 | 
	
		
			
				|  |  | +               tool_parameters: dict[str, Any], 
 | 
	
		
			
				|  |  | +        ) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +            invoke tools
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +        url = tool_parameters['url']
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        headers = {
 | 
	
		
			
				|  |  | +            'Accept': 'text/event-stream'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        response = ssrf_proxy.get(
 | 
	
		
			
				|  |  | +            str(URL(self._jina_reader_endpoint + url)), 
 | 
	
		
			
				|  |  | +            headers=headers,
 | 
	
		
			
				|  |  | +            timeout=(10, 60)
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if tool_parameters.get('summary', False):
 | 
	
		
			
				|  |  | +            return self.create_text_message(self.summary(user_id, response.text))
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        return self.create_text_message(response.text)
 |