feat: 联网搜索功能初步通过
This commit is contained in:
parent
7569e588b9
commit
0ff9f1fd74
|
|
@ -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]
|
||||||
|
|
|
||||||
|
|
@ -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":
|
||||||
# 深度搜索:返回搜索结果详情
|
# 深度搜索:返回搜索结果详情
|
||||||
|
|
|
||||||
|
|
@ -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"}
|
|
||||||
Loading…
Reference in New Issue