From 54c36040affc787d832db3e93d29384b02c90417 Mon Sep 17 00:00:00 2001 From: suyao Date: Sun, 29 Jun 2025 02:59:38 +0800 Subject: [PATCH] feat: extend buildStreamTextParams to include capabilities for enhanced AI functionality - Updated the return type of `buildStreamTextParams` to include `capabilities` for reasoning, web search, and image generation. - Modified `fetchChatCompletion` to utilize the new capabilities structure, improving middleware configuration based on model capabilities. --- src/renderer/src/aiCore/transformParameters.ts | 9 +++++++-- src/renderer/src/services/ApiService.ts | 11 +++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/aiCore/transformParameters.ts b/src/renderer/src/aiCore/transformParameters.ts index 8f4154e640..77112cff4f 100644 --- a/src/renderer/src/aiCore/transformParameters.ts +++ b/src/renderer/src/aiCore/transformParameters.ts @@ -194,13 +194,18 @@ export async function buildStreamTextParams( headers?: Record } } = {} -): Promise<{ params: StreamTextParams; modelId: string }> { +): Promise<{ + params: StreamTextParams + modelId: string + capabilities: { enableReasoning?: boolean; enableWebSearch?: boolean; enableGenerateImage?: boolean } +}> { const { mcpTools, enableTools } = options const model = assistant.model || getDefaultModel() const { maxTokens, reasoning_effort } = getAssistantSettings(assistant) + // 这三个变量透传出来,交给下面动态启用插件/中间件 const enableReasoning = ((isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) && reasoning_effort !== undefined) || @@ -244,7 +249,7 @@ export async function buildStreamTextParams( maxSteps: 10 } - return { params, modelId: model.id } + return { params, modelId: model.id, capabilities: { enableReasoning, enableWebSearch, enableGenerateImage } } } /** diff --git a/src/renderer/src/services/ApiService.ts b/src/renderer/src/services/ApiService.ts index 00a7bc6d96..c35942491d 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -301,19 +301,22 @@ export async function fetchChatCompletion({ const mcpTools = await fetchMcpTools(assistant) // 使用 transformParameters 模块构建参数 - const { params: aiSdkParams, modelId } = await buildStreamTextParams(messages, assistant, { + const { + params: aiSdkParams, + modelId, + capabilities + } = await buildStreamTextParams(messages, assistant, { mcpTools: mcpTools, enableTools: isEnabledToolUse(assistant), requestOptions: options }) - console.log('assistant.settings?.reasoning_effort', assistant.settings?.reasoning_effort) + const middlewareConfig: AiSdkMiddlewareConfig = { streamOutput: assistant.settings?.streamOutput ?? true, onChunk: onChunkReceived, model: assistant.model, provider: provider, - // FIXME: 这里需要根据模型来判断是否启用推理 - enableReasoning: assistant.settings?.reasoning_effort !== undefined, + enableReasoning: capabilities.enableReasoning, enableTool: assistant.settings?.toolUseMode === 'prompt', mcpTools }