|
|
|
|
@ -135,8 +135,8 @@ const [currentStreamingMessageId, setCurrentStreamingMessageId] = useState(null)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 模拟流式效果
|
|
|
|
|
const simulateStreamingEffect = (fullContent, messageId) => {
|
|
|
|
|
console.log('开始流式效果:', { fullContent: fullContent.substring(0, 100) + '...', messageId, length: fullContent.length })
|
|
|
|
|
const simulateStreamingEffect = (fullContent, messageId, hasThoughtContent = false) => {
|
|
|
|
|
console.log('开始流式效果:', { fullContent: fullContent.substring(0, 100) + '...', messageId, length: fullContent.length, hasThoughtContent })
|
|
|
|
|
setIsStreaming(true)
|
|
|
|
|
setStreamingContent('')
|
|
|
|
|
setCurrentStreamingMessageId(messageId)
|
|
|
|
|
@ -242,12 +242,15 @@ const [currentStreamingMessageId, setCurrentStreamingMessageId] = useState(null)
|
|
|
|
|
console.log('Final content:', finalContent)
|
|
|
|
|
|
|
|
|
|
if (finalContent.trim()) {
|
|
|
|
|
// 预判断是否包含思考内容,避免样式闪烁
|
|
|
|
|
const hasThoughtContent = deepThinkingEnabled && finalContent.includes('\n\n')
|
|
|
|
|
|
|
|
|
|
// 先添加一个空的助手消息
|
|
|
|
|
const assistantMessageId = conversationStore.addMessage('assistant', '')
|
|
|
|
|
setCurrentStreamingMessageId(assistantMessageId)
|
|
|
|
|
|
|
|
|
|
// 开始模拟流式效果
|
|
|
|
|
simulateStreamingEffect(finalContent, assistantMessageId)
|
|
|
|
|
// 开始模拟流式效果,传递预判断结果
|
|
|
|
|
simulateStreamingEffect(finalContent, assistantMessageId, hasThoughtContent)
|
|
|
|
|
} else {
|
|
|
|
|
console.log('No content, adding fallback message')
|
|
|
|
|
conversationStore.addMessage('assistant', '抱歉,我无法生成回复内容。')
|
|
|
|
|
@ -400,7 +403,7 @@ const [currentStreamingMessageId, setCurrentStreamingMessageId] = useState(null)
|
|
|
|
|
<div className='ds-message-content'>
|
|
|
|
|
{displayContent ? (
|
|
|
|
|
<div>
|
|
|
|
|
{deepThinkingEnabled && displayContent.includes('\n\n') ? (
|
|
|
|
|
{deepThinkingEnabled && (displayContent.includes('\n\n') || (isStreaming && currentStreamingMessageId === msg.id)) ? (
|
|
|
|
|
// 当开启深度思考且有思考内容时,分别渲染
|
|
|
|
|
(() => {
|
|
|
|
|
const parts = displayContent.split('\n\n')
|
|
|
|
|
|