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.
This commit is contained in:
suyao 2025-06-29 02:59:38 +08:00
parent ef616e1c3b
commit 54c36040af
No known key found for this signature in database
2 changed files with 14 additions and 6 deletions

View File

@ -194,13 +194,18 @@ export async function buildStreamTextParams(
headers?: Record<string, string>
}
} = {}
): 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 } }
}
/**

View File

@ -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
}