fix: remove deprecated (#9006)

* refactor: 移除已弃用的ProviderSettingsPopup组件

* refactor(providers): 重命名函数以更准确描述其功能

* fix(openai): 修正服务层级和数组内容支持的判断逻辑

使用新的提供者检查函数替代原有的布尔值判断,提高代码可维护性

* refactor(mcp-tools): 将参数isCompatibleMode重命名为noSupportArrayContent以更清晰表达意图

* refactor(providers): 移除不再使用的provider配置属性

清理多个系统provider中已不再使用的配置属性,包括isNotSupportArrayContent、isNotSupportStreamOptions和isNotSupportDeveloperRole,以简化配置结构
This commit is contained in:
Phantom 2025-08-09 13:59:33 +08:00 committed by GitHub
parent f005afb71c
commit 8823dc6a52
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 14 additions and 102 deletions

View File

@ -6,7 +6,7 @@ import {
isSupportFlexServiceTierModel isSupportFlexServiceTierModel
} from '@renderer/config/models' } from '@renderer/config/models'
import { REFERENCE_PROMPT } from '@renderer/config/prompts' import { REFERENCE_PROMPT } from '@renderer/config/prompts'
import { isSupportServiceTierProviders } from '@renderer/config/providers' import { isSupportServiceTierProvider } from '@renderer/config/providers'
import { getLMStudioKeepAliveTime } from '@renderer/hooks/useLMStudio' import { getLMStudioKeepAliveTime } from '@renderer/hooks/useLMStudio'
import { getAssistantSettings } from '@renderer/services/AssistantService' import { getAssistantSettings } from '@renderer/services/AssistantService'
import { import {
@ -208,7 +208,7 @@ export abstract class BaseApiClient<
protected getServiceTier(model: Model) { protected getServiceTier(model: Model) {
const serviceTierSetting = this.provider.serviceTier const serviceTierSetting = this.provider.serviceTier
if (!isSupportServiceTierProviders(this.provider) || !isOpenAIModel(model) || !serviceTierSetting) { if (!isSupportServiceTierProvider(this.provider) || !isOpenAIModel(model) || !serviceTierSetting) {
return undefined return undefined
} }

View File

@ -416,7 +416,7 @@ export class OpenAIAPIClient extends OpenAIBaseClient<
mcpToolResponse, mcpToolResponse,
resp, resp,
isVisionModel(model), isVisionModel(model),
this.provider.isNotSupportArrayContent ?? false !isSupportArrayContentProvider(this.provider)
) )
} else if ('toolCallId' in mcpToolResponse && mcpToolResponse.toolCallId) { } else if ('toolCallId' in mcpToolResponse && mcpToolResponse.toolCallId) {
return { return {

View File

@ -96,8 +96,7 @@ export const SYSTEM_PROVIDERS_CONFIG: Record<SystemProviderId, SystemProvider> =
apiHost: 'https://api.deepseek.com', apiHost: 'https://api.deepseek.com',
models: SYSTEM_MODELS.deepseek, models: SYSTEM_MODELS.deepseek,
isSystem: true, isSystem: true,
enabled: false, enabled: false
isNotSupportArrayContent: true
}, },
ppio: { ppio: {
id: 'ppio', id: 'ppio',
@ -352,8 +351,7 @@ export const SYSTEM_PROVIDERS_CONFIG: Record<SystemProviderId, SystemProvider> =
apiHost: 'https://api.baichuan-ai.com', apiHost: 'https://api.baichuan-ai.com',
models: SYSTEM_MODELS.baichuan, models: SYSTEM_MODELS.baichuan,
isSystem: true, isSystem: true,
enabled: false, enabled: false
isNotSupportArrayContent: true
}, },
dashscope: { dashscope: {
id: 'dashscope', id: 'dashscope',
@ -403,8 +401,7 @@ export const SYSTEM_PROVIDERS_CONFIG: Record<SystemProviderId, SystemProvider> =
apiHost: 'https://api.minimax.chat/v1/', apiHost: 'https://api.minimax.chat/v1/',
models: SYSTEM_MODELS.minimax, models: SYSTEM_MODELS.minimax,
isSystem: true, isSystem: true,
enabled: false, enabled: false
isNotSupportArrayContent: true
}, },
groq: { groq: {
id: 'groq', id: 'groq',
@ -474,8 +471,7 @@ export const SYSTEM_PROVIDERS_CONFIG: Record<SystemProviderId, SystemProvider> =
apiHost: 'https://api.mistral.ai', apiHost: 'https://api.mistral.ai',
models: SYSTEM_MODELS.mistral, models: SYSTEM_MODELS.mistral,
isSystem: true, isSystem: true,
enabled: false, enabled: false
isNotSupportStreamOptions: true
}, },
jina: { jina: {
id: 'jina', id: 'jina',
@ -515,8 +511,7 @@ export const SYSTEM_PROVIDERS_CONFIG: Record<SystemProviderId, SystemProvider> =
apiHost: 'https://wishub-x1.ctyun.cn', apiHost: 'https://wishub-x1.ctyun.cn',
models: SYSTEM_MODELS.xirang, models: SYSTEM_MODELS.xirang,
isSystem: true, isSystem: true,
enabled: false, enabled: false
isNotSupportArrayContent: true
}, },
hunyuan: { hunyuan: {
id: 'hunyuan', id: 'hunyuan',
@ -586,8 +581,7 @@ export const SYSTEM_PROVIDERS_CONFIG: Record<SystemProviderId, SystemProvider> =
apiHost: 'https://api.poe.com/v1/', apiHost: 'https://api.poe.com/v1/',
models: SYSTEM_MODELS['poe'], models: SYSTEM_MODELS['poe'],
isSystem: true, isSystem: true,
enabled: false, enabled: false
isNotSupportDeveloperRole: true
} }
} as const } as const
@ -1294,7 +1288,7 @@ const NOT_SUPPORT_SERVICE_TIER_PROVIDERS = ['github', 'copilot'] as const satisf
/** /**
* service_tier Only for OpenAI API. * service_tier Only for OpenAI API.
*/ */
export const isSupportServiceTierProviders = (provider: Provider) => { export const isSupportServiceTierProvider = (provider: Provider) => {
return ( return (
provider.apiOptions?.isNotSupportServiceTier !== true && provider.apiOptions?.isNotSupportServiceTier !== true &&
!NOT_SUPPORT_SERVICE_TIER_PROVIDERS.some((pid) => pid === provider.id) !NOT_SUPPORT_SERVICE_TIER_PROVIDERS.some((pid) => pid === provider.id)

View File

@ -1,5 +1,6 @@
import Selector from '@renderer/components/Selector' import Selector from '@renderer/components/Selector'
import { isSupportedReasoningEffortOpenAIModel, isSupportFlexServiceTierModel } from '@renderer/config/models' import { isSupportedReasoningEffortOpenAIModel, isSupportFlexServiceTierModel } from '@renderer/config/models'
import { isSupportServiceTierProvider } from '@renderer/config/providers'
import { useProvider } from '@renderer/hooks/useProvider' import { useProvider } from '@renderer/hooks/useProvider'
import { SettingDivider, SettingRow } from '@renderer/pages/settings' import { SettingDivider, SettingRow } from '@renderer/pages/settings'
import { CollapsibleSettingGroup } from '@renderer/pages/settings/SettingGroup' import { CollapsibleSettingGroup } from '@renderer/pages/settings/SettingGroup'
@ -38,7 +39,7 @@ const OpenAISettingsGroup: FC<Props> = ({ model, providerId, SettingGroup, Setti
isSupportedReasoningEffortOpenAIModel(model) && isSupportedReasoningEffortOpenAIModel(model) &&
!model.id.includes('o1-pro') && !model.id.includes('o1-pro') &&
(provider.type === 'openai-response' || provider.id === 'aihubmix') (provider.type === 'openai-response' || provider.id === 'aihubmix')
const isSupportServiceTier = !provider.isNotSupportServiceTier const isSupportServiceTier = isSupportServiceTierProvider(provider)
const isSupportedFlexServiceTier = isSupportFlexServiceTierModel(model) const isSupportedFlexServiceTier = isSupportFlexServiceTierModel(model)
const setSummaryText = useCallback( const setSummaryText = useCallback(

View File

@ -1,83 +0,0 @@
import { TopView } from '@renderer/components/TopView'
import { useProvider } from '@renderer/hooks/useProvider'
import { Provider } from '@renderer/types'
import { Checkbox, Modal } from 'antd'
import { useState } from 'react'
import { useTranslation } from 'react-i18next'
interface ShowParams {
provider: Provider
}
interface Props extends ShowParams {
resolve: (data: any) => void
}
const PopupContainer: React.FC<Props> = ({ resolve, ...props }) => {
const [open, setOpen] = useState(true)
const [isNotSupportArrayContent, setIsNotSupportArrayContent] = useState(props.provider.isNotSupportArrayContent)
const { provider, updateProvider } = useProvider(props.provider.id)
const { t } = useTranslation()
const onOk = () => {
setOpen(false)
}
const onCancel = () => {
setOpen(false)
}
const onClose = () => {
resolve({})
}
ProviderSettingsPopup.hide = onCancel
return (
<Modal
title={provider.name}
open={open}
onOk={onOk}
onCancel={onCancel}
afterClose={onClose}
transitionName="animation-move-down"
centered>
<Checkbox
checked={isNotSupportArrayContent}
onChange={(e) => {
setIsNotSupportArrayContent(e.target.checked)
updateProvider({ ...provider, isNotSupportArrayContent: e.target.checked })
}}>
{t('settings.provider.is_not_support_array_content')}
</Checkbox>
</Modal>
)
}
const TopViewKey = 'ProviderSettingsPopup'
/**
* @deprecated
*/
export default class ProviderSettingsPopup {
static topviewId = 0
static hide() {
TopView.hide(TopViewKey)
}
static show(props: ShowParams) {
return new Promise<any>((resolve) => {
TopView.show(
<PopupContainer
{...props}
resolve={(v) => {
resolve(v)
TopView.hide(TopViewKey)
}}
/>,
TopViewKey
)
})
}
}

View File

@ -386,14 +386,14 @@ export function mcpToolCallResponseToOpenAICompatibleMessage(
mcpToolResponse: MCPToolResponse, mcpToolResponse: MCPToolResponse,
resp: MCPCallToolResponse, resp: MCPCallToolResponse,
isVisionModel: boolean = false, isVisionModel: boolean = false,
isCompatibleMode: boolean = false noSupportArrayContent: boolean = false
): ChatCompletionMessageParam { ): ChatCompletionMessageParam {
const message = { const message = {
role: 'user' role: 'user'
} as ChatCompletionMessageParam } as ChatCompletionMessageParam
if (resp.isError) { if (resp.isError) {
message.content = JSON.stringify(resp.content) message.content = JSON.stringify(resp.content)
} else if (isCompatibleMode) { } else if (noSupportArrayContent) {
let content: string = `Here is the result of mcp tool use \`${mcpToolResponse.tool.name}\`:\n` let content: string = `Here is the result of mcp tool use \`${mcpToolResponse.tool.name}\`:\n`
if (isVisionModel) { if (isVisionModel) {