diff --git a/src/api/ai/chat/message/index.ts b/src/api/ai/chat/message/index.ts index 69d9f123e..023333665 100644 --- a/src/api/ai/chat/message/index.ts +++ b/src/api/ai/chat/message/index.ts @@ -13,6 +13,7 @@ export interface ChatMessageVO { model: number // 模型标志 modelId: number // 模型编号 content: string // 聊天内容 + reasoningContent?: string // 推理内容 tokens: number // 消耗 Token 数量 segmentIds?: number[] // 段落编号 segments?: { diff --git a/src/views/ai/chat/index/components/message/MessageList.vue b/src/views/ai/chat/index/components/message/MessageList.vue index 67c8bd766..5efd39c5f 100644 --- a/src/views/ai/chat/index/components/message/MessageList.vue +++ b/src/views/ai/chat/index/components/message/MessageList.vue @@ -14,6 +14,10 @@ class="relative flex flex-col break-words bg-[var(--el-fill-color-light)] shadow-[0_0_0_1px_var(--el-border-color-light)] rounded-10px pt-10px px-10px pb-5px" ref="markdownViewRef" > +
{{ item.content }}
+ {{ item.content }} +
+
+ +
+
+ + + + {{ titleText }} +
+ + + +
+ + +
+ +
+
+ + + + + diff --git a/src/views/ai/chat/index/index.vue b/src/views/ai/chat/index/index.vue index fdc466617..42126f115 100644 --- a/src/views/ai/chat/index/index.vue +++ b/src/views/ai/chat/index/index.vue @@ -2,7 +2,7 @@ { return [ { id: 0, + conversationId: activeConversation.value.id || 0, type: 'system', - content: activeConversation.value.systemMessage - } + userId: '', + roleId: '', + model: 0, + modelId: 0, + content: activeConversation.value.systemMessage, + tokens: 0, + createTime: new Date(), + roleAvatar: '', + userAvatar: '' + } as ChatMessageVO ] } return [] @@ -427,6 +436,7 @@ const doSendMessageStream = async (userMessage: ChatMessageVO) => { conversationId: activeConversationId.value, type: 'assistant', content: '思考中...', + reasoningContent: '', createTime: new Date() } as ChatMessageVO) // 1.2 滚动到最下面 @@ -450,9 +460,10 @@ const doSendMessageStream = async (userMessage: ChatMessageVO) => { } // 如果内容为空,就不处理。 - if (data.receive.content === '') { + if (data.receive.content === '' && !data.receive.reasoningContent) { return } + // 首次返回需要添加一个 message 到页面,后面的都是更新 if (isFirstChunk) { isFirstChunk = false @@ -463,12 +474,22 @@ const doSendMessageStream = async (userMessage: ChatMessageVO) => { activeMessageList.value.push(data.send) activeMessageList.value.push(data.receive) } - // debugger - receiveMessageFullText.value = receiveMessageFullText.value + data.receive.content + + // 处理 reasoningContent + if (data.receive.reasoningContent) { + const lastMessage = activeMessageList.value[activeMessageList.value.length - 1] + lastMessage.reasoningContent = + lastMessage.reasoningContent + data.receive.reasoningContent + } + + // 处理正常内容 + if (data.receive.content !== '') { + receiveMessageFullText.value = receiveMessageFullText.value + data.receive.content + } // 滚动到最下面 await scrollToBottom() }, - (error) => { + (error: any) => { message.alert(`对话异常! ${error}`) stopStream() // 需要抛出异常,禁止重试