mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-22 00:13:09 +08:00
refactor: extract emitThinkingCompleteIfNeeded to reduce duplication
Extract the shared logic for emitting THINKING_COMPLETE chunk into a reusable method. This removes code duplication between text-start and reasoning-end event handlers as suggested in code review. Signed-off-by: Calvin <calvinvwei@gmail.com>
This commit is contained in:
parent
cc6fcda856
commit
eb2aaf1759
@ -120,6 +120,23 @@ export class AiSdkToChunkAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果有累积的思考内容,发送 THINKING_COMPLETE chunk 并清空
|
||||||
|
* @param final 包含 reasoningContent 的状态对象
|
||||||
|
* @returns 是否发送了 THINKING_COMPLETE chunk
|
||||||
|
*/
|
||||||
|
private emitThinkingCompleteIfNeeded(final: { reasoningContent: string; [key: string]: any }): boolean {
|
||||||
|
if (final.reasoningContent) {
|
||||||
|
this.onChunk({
|
||||||
|
type: ChunkType.THINKING_COMPLETE,
|
||||||
|
text: final.reasoningContent
|
||||||
|
})
|
||||||
|
final.reasoningContent = ''
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换 AI SDK chunk 为 Cherry Studio chunk 并调用回调
|
* 转换 AI SDK chunk 为 Cherry Studio chunk 并调用回调
|
||||||
* @param chunk AI SDK 的 chunk 数据
|
* @param chunk AI SDK 的 chunk 数据
|
||||||
@ -147,13 +164,7 @@ export class AiSdkToChunkAdapter {
|
|||||||
case 'text-start':
|
case 'text-start':
|
||||||
// 如果有未完成的思考内容,先生成 THINKING_COMPLETE
|
// 如果有未完成的思考内容,先生成 THINKING_COMPLETE
|
||||||
// 这处理了某些提供商不发送 reasoning-end 事件的情况
|
// 这处理了某些提供商不发送 reasoning-end 事件的情况
|
||||||
if (final.reasoningContent) {
|
this.emitThinkingCompleteIfNeeded(final)
|
||||||
this.onChunk({
|
|
||||||
type: ChunkType.THINKING_COMPLETE,
|
|
||||||
text: final.reasoningContent
|
|
||||||
})
|
|
||||||
final.reasoningContent = ''
|
|
||||||
}
|
|
||||||
this.onChunk({
|
this.onChunk({
|
||||||
type: ChunkType.TEXT_START
|
type: ChunkType.TEXT_START
|
||||||
})
|
})
|
||||||
@ -224,11 +235,7 @@ export class AiSdkToChunkAdapter {
|
|||||||
})
|
})
|
||||||
break
|
break
|
||||||
case 'reasoning-end':
|
case 'reasoning-end':
|
||||||
this.onChunk({
|
this.emitThinkingCompleteIfNeeded(final)
|
||||||
type: ChunkType.THINKING_COMPLETE,
|
|
||||||
text: final.reasoningContent || ''
|
|
||||||
})
|
|
||||||
final.reasoningContent = ''
|
|
||||||
break
|
break
|
||||||
|
|
||||||
// === 工具调用相关事件(原始 AI SDK 事件,如果没有被中间件处理) ===
|
// === 工具调用相关事件(原始 AI SDK 事件,如果没有被中间件处理) ===
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user