mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-11 16:39:15 +08:00
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:
parent
ef616e1c3b
commit
54c36040af
@ -194,13 +194,18 @@ export async function buildStreamTextParams(
|
|||||||
headers?: Record<string, string>
|
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 { mcpTools, enableTools } = options
|
||||||
|
|
||||||
const model = assistant.model || getDefaultModel()
|
const model = assistant.model || getDefaultModel()
|
||||||
|
|
||||||
const { maxTokens, reasoning_effort } = getAssistantSettings(assistant)
|
const { maxTokens, reasoning_effort } = getAssistantSettings(assistant)
|
||||||
|
|
||||||
|
// 这三个变量透传出来,交给下面动态启用插件/中间件
|
||||||
const enableReasoning =
|
const enableReasoning =
|
||||||
((isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) &&
|
((isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) &&
|
||||||
reasoning_effort !== undefined) ||
|
reasoning_effort !== undefined) ||
|
||||||
@ -244,7 +249,7 @@ export async function buildStreamTextParams(
|
|||||||
maxSteps: 10
|
maxSteps: 10
|
||||||
}
|
}
|
||||||
|
|
||||||
return { params, modelId: model.id }
|
return { params, modelId: model.id, capabilities: { enableReasoning, enableWebSearch, enableGenerateImage } }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -301,19 +301,22 @@ export async function fetchChatCompletion({
|
|||||||
const mcpTools = await fetchMcpTools(assistant)
|
const mcpTools = await fetchMcpTools(assistant)
|
||||||
|
|
||||||
// 使用 transformParameters 模块构建参数
|
// 使用 transformParameters 模块构建参数
|
||||||
const { params: aiSdkParams, modelId } = await buildStreamTextParams(messages, assistant, {
|
const {
|
||||||
|
params: aiSdkParams,
|
||||||
|
modelId,
|
||||||
|
capabilities
|
||||||
|
} = await buildStreamTextParams(messages, assistant, {
|
||||||
mcpTools: mcpTools,
|
mcpTools: mcpTools,
|
||||||
enableTools: isEnabledToolUse(assistant),
|
enableTools: isEnabledToolUse(assistant),
|
||||||
requestOptions: options
|
requestOptions: options
|
||||||
})
|
})
|
||||||
console.log('assistant.settings?.reasoning_effort', assistant.settings?.reasoning_effort)
|
|
||||||
const middlewareConfig: AiSdkMiddlewareConfig = {
|
const middlewareConfig: AiSdkMiddlewareConfig = {
|
||||||
streamOutput: assistant.settings?.streamOutput ?? true,
|
streamOutput: assistant.settings?.streamOutput ?? true,
|
||||||
onChunk: onChunkReceived,
|
onChunk: onChunkReceived,
|
||||||
model: assistant.model,
|
model: assistant.model,
|
||||||
provider: provider,
|
provider: provider,
|
||||||
// FIXME: 这里需要根据模型来判断是否启用推理
|
enableReasoning: capabilities.enableReasoning,
|
||||||
enableReasoning: assistant.settings?.reasoning_effort !== undefined,
|
|
||||||
enableTool: assistant.settings?.toolUseMode === 'prompt',
|
enableTool: assistant.settings?.toolUseMode === 'prompt',
|
||||||
mcpTools
|
mcpTools
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user