diff --git a/deepsearcher/agent/deep_search.py b/deepsearcher/agent/deep_search.py index 9d90a5a..61d2b4d 100644 --- a/deepsearcher/agent/deep_search.py +++ b/deepsearcher/agent/deep_search.py @@ -403,7 +403,7 @@ class DeepSearch(BaseAgent): ) response = self.llm.chat([{"role": "user", "content": summary_prompt}]) final_answer = self.llm.remove_think(response) - send_answer("==== FINAL ANSWER====") + # 直接发送最终答案,不发送占位符 send_answer(final_answer) return self.llm.remove_think(response), all_retrieved_results diff --git a/deepsearcher/backend/templates/index.html b/deepsearcher/backend/templates/index.html index 6689d51..36bfdd7 100644 --- a/deepsearcher/backend/templates/index.html +++ b/deepsearcher/backend/templates/index.html @@ -471,13 +471,9 @@ console.log('Query started:', message.query); showStatus('queryStatus', '查询已开始,正在处理...', 'loading'); break; - case 'query_complete': + case 'complete': console.log('Query completed'); showStatus('queryStatus', '查询完成', 'success'); - if (message.result) { - document.getElementById('resultText').textContent = message.result; - showResult(); - } // 关闭EventSource连接 if (window.currentEventSource) { window.currentEventSource.close(); @@ -510,11 +506,21 @@ break; case 'search': case 'think': - case 'answer': // 处理常规消息 console.log('Processing message type:', message.type, 'with content:', message.content.substring(0, 100) + '...'); addMessageToContainer(message); break; + case 'answer': + // 处理answer类型,显示查询结果 + console.log('Processing message type:', message.type, 'with content:', message.content.substring(0, 100) + '...'); + // 将结果内容显示在结果区域 + if (message.content && message.content !== "==== FINAL ANSWER====") { + document.getElementById('resultText').textContent = message.content; + showResult(); + } + // 同时添加到消息容器中 + addMessageToContainer(message); + break; default: console.log('Unknown message type:', message.type); } diff --git a/deepsearcher/utils/message_stream.py b/deepsearcher/utils/message_stream.py index a0ed0e7..dfc364d 100644 --- a/deepsearcher/utils/message_stream.py +++ b/deepsearcher/utils/message_stream.py @@ -11,6 +11,7 @@ class MessageType(Enum): SEARCH = "search" THINK = "think" ANSWER = "answer" + COMPLETE = "complete" @dataclass @@ -93,6 +94,10 @@ class MessageStream: """发送答案消息""" self.send_message(MessageType.ANSWER, content, metadata) + def send_complete(self, metadata: Optional[Dict[str, Any]] = None): + """发送完成消息""" + self.send_message(MessageType.COMPLETE, "", metadata) + def get_messages(self) -> List[Message]: """获取所有消息""" return self._messages.copy() @@ -133,6 +138,11 @@ def send_answer(content: str, metadata: Optional[Dict[str, Any]] = None): message_stream.send_answer(content, metadata) +def send_complete(metadata: Optional[Dict[str, Any]] = None): + """全局完成消息发送函数""" + message_stream.send_complete(metadata) + + def get_message_stream() -> MessageStream: """获取全局消息流实例""" return message_stream diff --git a/main.py b/main.py index bfb5f11..7b648a4 100644 --- a/main.py +++ b/main.py @@ -292,6 +292,9 @@ async def perform_query_stream( def run_query(): try: result_text, _ = query(original_query, max_iter) + # 查询完成后发送complete消息 + from deepsearcher.utils.message_stream import send_complete + send_complete() return result_text, None except Exception as e: return None, str(e) @@ -309,8 +312,8 @@ async def perform_query_stream( result_text, error = query_future.result() if error: yield f"data: {json.dumps({'type': 'query_error', 'error': error}, ensure_ascii=False)}\n\n" - else: - yield f"data: {json.dumps({'type': 'query_complete', 'result': result_text}, ensure_ascii=False)}\n\n" + return + # 成功完成时,complete消息会通过消息流自动发送 return # 尝试从队列获取消息,设置超时