Browse Source

fix: 修复最后报告无法显示的bug

main
tanxing 5 days ago
parent
commit
d966a3fbb3
  1. 2
      deepsearcher/agent/deep_search.py
  2. 18
      deepsearcher/backend/templates/index.html
  3. 10
      deepsearcher/utils/message_stream.py
  4. 7
      main.py

2
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

18
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);
}

10
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

7
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
# 尝试从队列获取消息,设置超时

Loading…
Cancel
Save