| @@ -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 | |||