diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 6ba42cbd..8f2170e5 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -130,6 +130,7 @@ import XirangModelLogoDark from '@renderer/assets/images/models/xirang_dark.png' import YiModelLogo from '@renderer/assets/images/models/yi.png' import YiModelLogoDark from '@renderer/assets/images/models/yi_dark.png' import { getProviderByModel } from '@renderer/services/AssistantService' +import WebSearchService from '@renderer/services/WebSearchService' import { Assistant, Model } from '@renderer/types' import OpenAI from 'openai' @@ -2270,6 +2271,9 @@ export function isGenerateImageModel(model: Model): boolean { } export function getOpenAIWebSearchParams(assistant: Assistant, model: Model): Record { + if (WebSearchService.isWebSearchEnabled() && WebSearchService.isOverwriteEnabled()) { + return {} + } if (isWebSearchModel(model)) { if (assistant.enableWebSearch) { const webSearchTools = getWebSearchTools(model) diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 5fb739e9..63f23bc7 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -777,20 +777,33 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = }) } - const onEnableWebSearch = () => { - if (!isWebSearchModel(model)) { - if (!WebSearchService.isWebSearchEnabled()) { - window.modal.confirm({ - title: t('chat.input.web_search.enable'), - content: t('chat.input.web_search.enable_content'), - centered: true, - okText: t('chat.input.web_search.button.ok'), - onOk: () => { - navigate('/settings/web-search') - } - }) - return + const showWebSearchEnableModal = () => { + window.modal.confirm({ + title: t('chat.input.web_search.enable'), + content: t('chat.input.web_search.enable_content'), + centered: true, + okText: t('chat.input.web_search.button.ok'), + onOk: () => { + navigate('/settings/web-search') } + }) + } + + const shouldShowEnableModal = () => { + // 网络搜索功能是否未启用 + const webSearchNotEnabled = !WebSearchService.isWebSearchEnabled() + // 非网络搜索模型:仅当网络搜索功能未启用时显示启用提示 + if (!isWebSearchModel(model)) { + return webSearchNotEnabled + } + // 网络搜索模型:当允许覆盖但网络搜索功能未启用时显示启用提示 + return WebSearchService.isOverwriteEnabled() && webSearchNotEnabled + } + + const onEnableWebSearch = () => { + if (shouldShowEnableModal()) { + showWebSearchEnableModal() + return } updateAssistant({ ...assistant, enableWebSearch: !assistant.enableWebSearch }) diff --git a/src/renderer/src/services/ApiService.ts b/src/renderer/src/services/ApiService.ts index 22763f89..c87b7856 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -58,11 +58,7 @@ export async function fetchChatCompletion({ // Search web if (WebSearchService.isWebSearchEnabled() && assistant.enableWebSearch && assistant.model) { - let webSearchParams = getOpenAIWebSearchParams(assistant, assistant.model) - if (WebSearchService.isOverwriteEnabled()) { - webSearchParams = {} - } - + const webSearchParams = getOpenAIWebSearchParams(assistant, assistant.model) if (isEmpty(webSearchParams) && !isOpenAIWebSearch(assistant.model)) { const lastMessage = findLast(messages, (m) => m.role === 'user') const lastAnswer = findLast(messages, (m) => m.role === 'assistant') diff --git a/src/renderer/src/store/websearch.ts b/src/renderer/src/store/websearch.ts index d31edf51..aa63edbc 100644 --- a/src/renderer/src/store/websearch.ts +++ b/src/renderer/src/store/websearch.ts @@ -41,7 +41,7 @@ const initialState: WebSearchState = { maxResults: 5, excludeDomains: [], enhanceMode: false, - overwrite: true + overwrite: false } const websearchSlice = createSlice({