fix: disable reasoning in translation by default

- Add 'none' to ReasoningEffortOption type definition
- Set reasoning_effort to 'none' in translation assistant settings
- Update enableReasoning check to exclude 'none' value in parameterBuilder.ts
- Update Qwen thinking middleware to properly disable thinking when reasoning_effort='none'
- Ensure translation and other scenarios with reasoning_effort='none' correctly disable all reasoning features
This commit is contained in:
beyondkmp 2025-12-12 17:38:04 +08:00
parent 97f6275104
commit 9c05f35aa5
4 changed files with 10 additions and 7 deletions

View File

@ -244,7 +244,9 @@ function addModelSpecificMiddlewares(builder: AiSdkMiddlewareBuilder, config: Ai
isSupportedThinkingTokenQwenModel(config.model) && isSupportedThinkingTokenQwenModel(config.model) &&
!isSupportEnableThinkingProvider(config.provider) !isSupportEnableThinkingProvider(config.provider)
) { ) {
const enableThinking = config.assistant?.settings?.reasoning_effort !== undefined const enableThinking =
config.assistant?.settings?.reasoning_effort !== undefined &&
config.assistant?.settings?.reasoning_effort !== 'none'
builder.add({ builder.add({
name: 'qwen-thinking-control', name: 'qwen-thinking-control',
middleware: qwenThinkingMiddleware(enableThinking) middleware: qwenThinkingMiddleware(enableThinking)

View File

@ -103,11 +103,11 @@ export async function buildStreamTextParams(
// 这三个变量透传出来,交给下面启用插件/中间件 // 这三个变量透传出来,交给下面启用插件/中间件
// 也可以在外部构建好再传入buildStreamTextParams // 也可以在外部构建好再传入buildStreamTextParams
// FIXME: qwen3即使关闭思考仍然会导致enableReasoning的结果为true
const enableReasoning = const enableReasoning =
((isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) && ((isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) &&
assistant.settings?.reasoning_effort !== undefined) || assistant.settings?.reasoning_effort !== undefined &&
isFixedReasoningModel(model) assistant.settings?.reasoning_effort !== 'none') ||
(isFixedReasoningModel(model) && assistant.settings?.reasoning_effort !== 'none')
// 判断是否使用内置搜索 // 判断是否使用内置搜索
// 条件:没有外部搜索提供商 && (用户开启了内置搜索 || 模型强制使用内置搜索) // 条件:没有外部搜索提供商 && (用户开启了内置搜索 || 模型强制使用内置搜索)

View File

@ -68,8 +68,9 @@ export function getDefaultTranslateAssistant(targetLanguage: TranslateLanguage,
throw new Error('Unknown target language') throw new Error('Unknown target language')
} }
const settings = { const settings: Partial<AssistantSettings> = {
temperature: 0.7 temperature: 0.7,
reasoning_effort: 'none'
} }
const getTranslateContent = (model: Model, text: string, targetLanguage: TranslateLanguage): string => { const getTranslateContent = (model: Model, text: string, targetLanguage: TranslateLanguage): string => {

View File

@ -105,7 +105,7 @@ const ThinkModelTypes = [
'deepseek_hybrid' 'deepseek_hybrid'
] as const ] as const
export type ReasoningEffortOption = NonNullable<OpenAI.ReasoningEffort> | 'auto' export type ReasoningEffortOption = NonNullable<OpenAI.ReasoningEffort> | 'auto' | 'none'
export type ThinkingOption = ReasoningEffortOption export type ThinkingOption = ReasoningEffortOption
export type ThinkingModelType = (typeof ThinkModelTypes)[number] export type ThinkingModelType = (typeof ThinkModelTypes)[number]
export type ThinkingOptionConfig = Record<ThinkingModelType, ThinkingOption[]> export type ThinkingOptionConfig = Record<ThinkingModelType, ThinkingOption[]>