feat(websearch): improve web search enablement logic
This commit is contained in:
parent
9689f00214
commit
aa73025568
@ -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<string, any> {
|
||||
if (WebSearchService.isWebSearchEnabled() && WebSearchService.isOverwriteEnabled()) {
|
||||
return {}
|
||||
}
|
||||
if (isWebSearchModel(model)) {
|
||||
if (assistant.enableWebSearch) {
|
||||
const webSearchTools = getWebSearchTools(model)
|
||||
|
||||
@ -777,9 +777,7 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
||||
})
|
||||
}
|
||||
|
||||
const onEnableWebSearch = () => {
|
||||
if (!isWebSearchModel(model)) {
|
||||
if (!WebSearchService.isWebSearchEnabled()) {
|
||||
const showWebSearchEnableModal = () => {
|
||||
window.modal.confirm({
|
||||
title: t('chat.input.web_search.enable'),
|
||||
content: t('chat.input.web_search.enable_content'),
|
||||
@ -789,8 +787,23 @@ const Inputbar: FC<Props> = ({ assistant: _assistant, setActiveTopic, topic }) =
|
||||
navigate('/settings/web-search')
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
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 })
|
||||
|
||||
@ -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')
|
||||
|
||||
@ -41,7 +41,7 @@ const initialState: WebSearchState = {
|
||||
maxResults: 5,
|
||||
excludeDomains: [],
|
||||
enhanceMode: false,
|
||||
overwrite: true
|
||||
overwrite: false
|
||||
}
|
||||
|
||||
const websearchSlice = createSlice({
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user