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