From f206d4ec4c5b3a6a0677d223d4c453a93824d24b Mon Sep 17 00:00:00 2001 From: MyPrototypeWhat Date: Fri, 20 Jun 2025 17:36:39 +0800 Subject: [PATCH] fix: refine experimental_transform handling and improve chunking logic - Updated PluginEnabledAiClient to streamline the handling of experimental_transform parameters. - Adjusted ModernAiProvider's smoothStream configuration for better chunking of text, enhancing processing efficiency. - Re-enabled block updates in messageThunk for improved state management. --- packages/aiCore/src/clients/PluginEnabledAiClient.ts | 5 ++++- src/renderer/src/aiCore/index_new.ts | 5 +++-- src/renderer/src/store/thunk/messageThunk.ts | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/aiCore/src/clients/PluginEnabledAiClient.ts b/packages/aiCore/src/clients/PluginEnabledAiClient.ts index 38895f7cd2..4e34d188cc 100644 --- a/packages/aiCore/src/clients/PluginEnabledAiClient.ts +++ b/packages/aiCore/src/clients/PluginEnabledAiClient.ts @@ -213,10 +213,13 @@ export class PluginEnabledAiClient { params!, async (finalModelId, transformedParams, streamTransforms) => { const model = await this.getModelWithMiddlewares(finalModelId) + const experimental_transform = + params?.experimental_transform ?? (streamTransforms.length > 0 ? streamTransforms : undefined) + return await streamText({ model, ...transformedParams, - experimental_transform: streamTransforms.length > 0 ? streamTransforms : undefined + experimental_transform }) } ) diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index 37dd4fdeca..206d8cd761 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -177,8 +177,9 @@ export default class ModernAiProvider { const streamResult = await clientWithMiddlewares.streamText(modelId, { ...params, experimental_transform: smoothStream({ - delayInMs: 100, - chunking: 'word' + delayInMs: 80, + // 中文3个字符一个chunk,英文一个单词一个chunk + chunking: /([\u4E00-\u9FFF]{3})|\S+\s+/ }) }) const finalText = await adapter.processStream(streamResult) diff --git a/src/renderer/src/store/thunk/messageThunk.ts b/src/renderer/src/store/thunk/messageThunk.ts index f02aef5b95..fe6e1bf628 100644 --- a/src/renderer/src/store/thunk/messageThunk.ts +++ b/src/renderer/src/store/thunk/messageThunk.ts @@ -147,7 +147,7 @@ const getBlockThrottler = (id: string) => { } const rafId = requestAnimationFrame(() => { - store.dispatch(updateOneBlock({ id, changes: blockUpdate })) + // store.dispatch(updateOneBlock({ id, changes: blockUpdate })) blockUpdateRafs.delete(id) }) @@ -166,6 +166,7 @@ const getBlockThrottler = (id: string) => { */ const throttledBlockUpdate = (id: string, blockUpdate: any) => { const throttler = getBlockThrottler(id) + store.dispatch(updateOneBlock({ id, changes: blockUpdate })) throttler(blockUpdate) }