| 
					
				 | 
			
			
				@@ -2,9 +2,20 @@ from typing import Any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from duckduckgo_search import DDGS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.model_runtime.entities.message_entities import SystemPromptMessage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from core.tools.entities.tool_entities import ToolInvokeMessage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from core.tools.tool.builtin_tool import BuiltinTool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+SUMMARY_PROMPT = """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+User's query:  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{query} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Here is the search engine result: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{content} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Please summarize the result in a few sentences. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class DuckDuckGoSearchTool(BuiltinTool): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,5 +36,12 @@ class DuckDuckGoSearchTool(BuiltinTool): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         results = [res.get("body") for res in response] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         results = "\n".join(results) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if require_summary: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            results = self.summary(user_id=user_id, content=results) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            results = self.summary_results(user_id=user_id, content=results, query=query) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return self.create_text_message(text=results) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def summary_results(self, user_id: str, content: str, query: str) -> str: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        prompt = SUMMARY_PROMPT.format(query=query, content=content) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        summary = self.invoke_model(user_id=user_id, prompt_messages=[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SystemPromptMessage(content=prompt), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], stop=[]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return summary.message.content 
			 |