feat: 联网搜索功能初步通过

This commit is contained in:
肖应宇 2026-03-12 13:56:23 +08:00
parent 7569e588b9
commit 0ff9f1fd74
3 changed files with 23 additions and 5 deletions

View File

@ -10,7 +10,7 @@ from typing import Dict, List, Optional
from fastapi.responses import JSONResponse, StreamingResponse from fastapi.responses import JSONResponse, StreamingResponse
from .base import BaseAdapter, ChatCompletionRequest, ModelInfo from .base import BaseAdapter, ChatCompletionRequest, ModelInfo
from .plugins import get_web_search_mode, build_openai_search_tool, execute_tavily_search from .plugins import get_web_search_mode, build_openai_search_tool, execute_tavily_search, get_current_time_info
from core import get_logger from core import get_logger
logger = get_logger() logger = get_logger()
@ -156,6 +156,21 @@ class OpenAIAdapter(BaseAdapter):
# 构建消息 # 构建消息
messages = self._build_messages(request) messages = self._build_messages(request)
# 统一添加联网搜索插件参数
web_search_mode = get_web_search_mode(request)
if web_search_mode:
# 注入当前时间信息到 System Prompt 中,以便模型拥有时间感知能力
time_info = get_current_time_info()
has_system = False
for msg in messages:
if msg.get("role") == "system":
msg["content"] = f"当前系统时间:{time_info}\n" + str(msg.get("content", ""))
has_system = True
break
if not has_system:
messages.insert(0, {"role": "system", "content": f"当前系统时间:{time_info}"})
logger.info( logger.info(
f" - messages: {json.dumps(messages, ensure_ascii=False, indent=2)}" f" - messages: {json.dumps(messages, ensure_ascii=False, indent=2)}"
) )
@ -169,8 +184,6 @@ class OpenAIAdapter(BaseAdapter):
"stream": request.stream, "stream": request.stream,
} }
# 统一添加联网搜索插件参数
web_search_mode = get_web_search_mode(request)
if web_search_mode: if web_search_mode:
search_tool = build_openai_search_tool(web_search_mode) search_tool = build_openai_search_tool(web_search_mode)
kwargs["tools"] = [search_tool] kwargs["tools"] = [search_tool]

View File

@ -5,6 +5,12 @@ from typing import Dict
from datetime import datetime from datetime import datetime
from .base import ChatCompletionRequest from .base import ChatCompletionRequest
def get_current_time_info() -> str:
"""获取当前时间信息"""
now = datetime.now()
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
return f"{now.strftime('%Y年%m月%d%H:%M:%S')} {weekdays[now.weekday()]}"
def get_web_search_mode(request: ChatCompletionRequest) -> str: def get_web_search_mode(request: ChatCompletionRequest) -> str:
"""获取联网搜索模式""" """获取联网搜索模式"""
if getattr(request, 'deep_search', False): if getattr(request, 'deep_search', False):
@ -84,7 +90,7 @@ def build_openai_search_tool(mode: str) -> Dict:
def build_glm_search_tool(mode: str) -> Dict: def build_glm_search_tool(mode: str) -> Dict:
"""构建 GLM 联网搜索工具""" """构建 GLM 联网搜索工具"""
today = datetime.now().strftime("%Y年%m月%d") today = get_current_time_info()
if mode == "deep": if mode == "deep":
# 深度搜索:返回搜索结果详情 # 深度搜索:返回搜索结果详情

View File

@ -1 +0,0 @@
{"root":["./src/main.ts","./src/components/icons/index.ts","./src/composables/useKeyboard.ts","./src/services/api.ts","./src/services/authService.ts","./src/services/conversationApi.ts","./src/services/request.ts","./src/stores/auth.ts","./src/stores/chat.ts","./src/stores/settings.ts","./src/types/chat.ts","./src/utils/helpers.ts","./src/utils/migrateData.ts","./src/App.vue","./src/components/chat/ChatHeader.vue","./src/components/chat/ChatMain.vue","./src/components/chat/MessageList.vue","./src/components/chat/WelcomeScreen.vue","./src/components/input/AttachmentPreview.vue","./src/components/input/ChatInput.vue","./src/components/message/CodeBlock.vue","./src/components/message/MessageActions.vue","./src/components/message/MessageBubble.vue","./src/components/message/components/EChartsContainerNode.vue","./src/components/message/components/Loading.vue","./src/components/message/components/ThinkingNode.vue","./src/components/modals/ConversationSettingsModal.vue","./src/components/modals/SearchModal.vue","./src/components/modals/SettingsModal.vue","./src/components/modals/ShortcutsModal.vue","./src/components/sidebar/ChatSidebar.vue","./src/components/sidebar/ConversationItem.vue","./src/components/ui/FormSelect.vue","./src/components/ui/FormSlider.vue","./src/components/ui/FormSwitch.vue"],"errors":true,"version":"5.9.3"}