diff --git a/packages/aiCore/src/core/providers/registry.ts b/packages/aiCore/src/core/providers/registry.ts index 9271f9460..f4be68da2 100644 --- a/packages/aiCore/src/core/providers/registry.ts +++ b/packages/aiCore/src/core/providers/registry.ts @@ -24,7 +24,7 @@ import { type ReplicateProviderSettings } from '@ai-sdk/replicate' import { type TogetherAIProviderSettings } from '@ai-sdk/togetherai' import { type VercelProviderSettings } from '@ai-sdk/vercel' import { type XaiProviderSettings } from '@ai-sdk/xai' -import { type OpenRouterProviderSettings } from '@openrouter/ai-sdk-provider' +// import { type OpenRouterProviderSettings } from '@openrouter/ai-sdk-provider' import { type AnthropicVertexProviderSettings } from 'anthropic-vertex-ai' import { type OllamaProviderSettings } from 'ollama-ai-provider' import { type QwenProviderSettings } from 'qwen-ai-provider' @@ -56,7 +56,6 @@ export type ProviderSettingsMap = { qwen: QwenProviderSettings zhipu: ZhipuProviderSettings 'anthropic-vertex': AnthropicVertexProviderSettings - openrouter: OpenRouterProviderSettings } export type ProviderId = keyof ProviderSettingsMap @@ -267,14 +266,15 @@ export class AiProviderRegistry { import: () => import('anthropic-vertex-ai'), creatorFunctionName: 'createAnthropicVertex', supportsImageGeneration: false - }, - { - id: 'openrouter', - name: 'OpenRouter', - import: () => import('@openrouter/ai-sdk-provider'), - creatorFunctionName: 'createOpenRouter', - supportsImageGeneration: false } + // bug太多 + // { + // id: 'openrouter', + // name: 'OpenRouter', + // import: () => import('@openrouter/ai-sdk-provider'), + // creatorFunctionName: 'createOpenRouter', + // supportsImageGeneration: false + // } ] providers.forEach((config) => { @@ -365,7 +365,6 @@ export type { OllamaProviderSettings, OpenAICompatibleProviderSettings, OpenAIProviderSettings, - OpenRouterProviderSettings, PerplexityProviderSettings, QwenProviderSettings, ReplicateProviderSettings, diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index c23361d1a..76be63284 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -119,12 +119,11 @@ export default class ModernAiProvider { */ private buildPlugins(middlewareConfig: AiSdkMiddlewareConfig) { const plugins: AiPlugin[] = [] - const model = middlewareConfig.model // 1. 总是添加通用插件 plugins.push(textPlugin) // 2. 推理模型时添加推理插件 - if (model && middlewareConfig.enableReasoning) { + if (middlewareConfig.enableReasoning) { plugins.push( smoothReasoningPlugin({ delayInMs: 80, diff --git a/src/renderer/src/aiCore/transformParameters.ts b/src/renderer/src/aiCore/transformParameters.ts index 12f4ee2fc..8fd263260 100644 --- a/src/renderer/src/aiCore/transformParameters.ts +++ b/src/renderer/src/aiCore/transformParameters.ts @@ -210,8 +210,7 @@ export async function buildStreamTextParams( const enableReasoning = ((isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) && reasoning_effort !== undefined) || - (isReasoningModel(model) && (!isSupportedThinkingTokenModel(model) || !isSupportedReasoningEffortModel(model))) - + (isReasoningModel(model) && !isSupportedThinkingTokenModel(model) && !isSupportedReasoningEffortModel(model)) const enableWebSearch = (assistant.enableWebSearch && isWebSearchModel(model)) || isOpenRouterBuiltInWebSearchModel(model) || diff --git a/src/renderer/src/aiCore/utils/options.ts b/src/renderer/src/aiCore/utils/options.ts index 299a4fb80..898106f55 100644 --- a/src/renderer/src/aiCore/utils/options.ts +++ b/src/renderer/src/aiCore/utils/options.ts @@ -179,16 +179,13 @@ function buildGenericProviderOptions( enableGenerateImage: boolean } ): Record { - const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities + const { enableWebSearch, enableGenerateImage } = capabilities let providerOptions: Record = {} - // 使用原有的通用推理逻辑 - if (enableReasoning) { - const reasoningParams = getReasoningEffort(assistant, model) - providerOptions = { - ...providerOptions, - ...reasoningParams - } + const reasoningParams = getReasoningEffort(assistant, model) + providerOptions = { + ...providerOptions, + ...reasoningParams } if (enableWebSearch) { diff --git a/src/renderer/src/aiCore/utils/reasoning.ts b/src/renderer/src/aiCore/utils/reasoning.ts index 6de34dfdb..ef4e9b5eb 100644 --- a/src/renderer/src/aiCore/utils/reasoning.ts +++ b/src/renderer/src/aiCore/utils/reasoning.ts @@ -28,6 +28,32 @@ export function getReasoningEffort(assistant: Assistant, model: Model): Reasonin } const reasoningEffort = assistant?.settings?.reasoning_effort + if (!reasoningEffort) { + if (model.provider === 'openrouter') { + return { reasoning: { enabled: false } } + } + if (isSupportedThinkingTokenQwenModel(model)) { + return { enable_thinking: false } + } + + if (isSupportedThinkingTokenClaudeModel(model)) { + return {} + } + + if (isSupportedThinkingTokenGeminiModel(model)) { + if (GEMINI_FLASH_MODEL_REGEX.test(model.id)) { + return { reasoning_effort: 'none' } + } + return {} + } + + if (isSupportedThinkingTokenDoubaoModel(model)) { + return { thinking: { type: 'disabled' } } + } + + return {} + } + // Doubao 思考模式支持 if (isSupportedThinkingTokenDoubaoModel(model)) { // reasoningEffort 为空,默认开启 enabled diff --git a/src/renderer/src/services/AssistantService.ts b/src/renderer/src/services/AssistantService.ts index e8ec416b1..0cc5cb9c1 100644 --- a/src/renderer/src/services/AssistantService.ts +++ b/src/renderer/src/services/AssistantService.ts @@ -116,6 +116,7 @@ export const getAssistantSettings = (assistant: Assistant): AssistantSettings => streamOutput: assistant?.settings?.streamOutput ?? true, toolUseMode: assistant?.settings?.toolUseMode ?? 'prompt', defaultModel: assistant?.defaultModel ?? undefined, + reasoning_effort: assistant?.settings?.reasoning_effort ?? undefined, customParameters: assistant?.settings?.customParameters ?? [] } }