From 80eeae1cdc5b7dfdb6a81ffb049e7fb41f076e4c Mon Sep 17 00:00:00 2001 From: sladro Date: Sat, 31 Jan 2026 11:14:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=89=8D=E7=9A=84=E5=9B=9E=E7=AD=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/service/search_service.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/service/search_service.py b/ruoyi-fastapi-backend/module_admin/service/search_service.py index 0038a08..a51b78f 100644 --- a/ruoyi-fastapi-backend/module_admin/service/search_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/search_service.py @@ -1,10 +1,11 @@ import json +import hashlib import re import time import httpx from datetime import datetime -from typing import Any, Dict, List, Optional +from typing import Any, Dict, Optional from config.env import SearchConfig from utils.log_util import logger from fastapi.responses import StreamingResponse @@ -229,6 +230,9 @@ class SearchService: async def _stream_baidu_search(cls, question: str): """Stream Search + Answer using ZhipuAI (GLM-4)""" # Note: Method name kept for compatibility, but logic switched to ZhipuAI + + # 先回一条提示,避免联网搜索阶段用户感知“卡住” + yield format_sse({'data': '请稍等,我来搜索一下答案…'}) if not SearchConfig.ZHIPUAI_API_KEY: yield format_sse({'message': 'Configuration Error: Missing ZHIPUAI_API_KEY. Please set valid API key.'}, event='error') @@ -268,9 +272,11 @@ class SearchService: return async for line in response.aiter_lines(): - if not line.strip(): continue + if not line.strip(): + continue data_str = line[6:].strip() if line.startswith('data: ') else line - if not data_str or data_str == '[DONE]': continue + if not data_str or data_str == '[DONE]': + continue try: chunk = json.loads(data_str) @@ -340,7 +346,8 @@ class SearchService: if choices: content = choices[0]['message']['content'].strip().upper() # Simple heuristic cleanup - if 'SEARCH' in content: return 'SEARCH' + if 'SEARCH' in content: + return 'SEARCH' return 'RAG' except Exception: pass # Fail safe to RAG (or logic below)