refactor(providers): support more provider to remove /no_think command for qwen3 (#8855)

* feat(providers): 添加对Qwen3思考模式的支持判断

新增`isSupportQwen3EnableThinkingProvider`函数用于判断提供商是否支持Qwen3的enable_thinking参数控制思考模式

* docs(providers): 添加函数注释说明各提供商的API支持情况

* docs(providers): 修正 stream_options 参数的注释描述
This commit is contained in:
Phantom 2025-08-05 22:59:25 +08:00 committed by GitHub
parent c6cc1baae1
commit 87e603af31
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 1 deletions

View File

@ -25,6 +25,7 @@ import {
import {
isSupportArrayContentProvider,
isSupportDeveloperRoleProvider,
isSupportQwen3EnableThinkingProvider,
isSupportStreamOptionsProvider
} from '@renderer/config/providers'
import { processPostsuffixQwen3Model, processReqMessages } from '@renderer/services/ModelMessageService'
@ -526,7 +527,11 @@ export class OpenAIAPIClient extends OpenAIBaseClient<
}
const lastUserMsg = userMessages.findLast((m) => m.role === 'user')
if (lastUserMsg && isSupportedThinkingTokenQwenModel(model) && model.provider !== 'dashscope') {
if (
lastUserMsg &&
isSupportedThinkingTokenQwenModel(model) &&
!isSupportQwen3EnableThinkingProvider(this.provider)
) {
const postsuffix = '/no_think'
const qwenThinkModeEnabled = assistant.settings?.qwenThinkMode === true
const currentContent = lastUserMsg.content

View File

@ -722,22 +722,40 @@ export const PROVIDER_CONFIG = {
const NOT_SUPPORT_ARRAY_CONTENT_PROVIDERS = ['deepseek', 'baichuan', 'minimax', 'xirang']
/**
* message content Only for OpenAI Chat Completions API.
*/
export const isSupportArrayContentProvider = (provider: Provider) => {
return provider.isNotSupportArrayContent !== true || !NOT_SUPPORT_ARRAY_CONTENT_PROVIDERS.includes(provider.id)
}
const NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS = ['poe']
/**
* developer message role Only for OpenAI API.
*/
export const isSupportDeveloperRoleProvider = (provider: Provider) => {
return provider.isNotSupportDeveloperRole !== true || !NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS.includes(provider.id)
}
const NOT_SUPPORT_STREAM_OPTIONS_PROVIDERS = ['mistral']
/**
* stream_options Only for OpenAI API.
*/
export const isSupportStreamOptionsProvider = (provider: Provider) => {
return provider.isNotSupportStreamOptions !== true || !NOT_SUPPORT_STREAM_OPTIONS_PROVIDERS.includes(provider.id)
}
const SUPPORT_QWEN3_ENABLE_THINKING_PROVIDER = ['dashscope', 'modelscope']
/**
* 使enable_thinking参数来控制Qwen3系列模型的思考 Only for OpenAI Chat Completions API.
*/
export const isSupportQwen3EnableThinkingProvider = (provider: Provider) => {
return SUPPORT_QWEN3_ENABLE_THINKING_PROVIDER.includes(provider.id)
}
/**
* 使`provider.isSystem`
* @param provider - Provider对象