feat:【antd】【ai】chat “Thinking 深度思考功能”的迁移

pull/264/head^2
YunaiV 2025-11-15 19:46:10 +08:00
parent 71e638188e
commit fc9663a100
3 changed files with 27 additions and 5 deletions

View File

@ -19,6 +19,7 @@ export namespace AiChatMessageApi {
model: number; // 模型标志
modelId: number; // 模型编号
content: string; // 聊天内容
reasoningContent?: string; // 推理内容(深度思考)
tokens: number; // 消耗 Token 数量
segmentIds?: number[]; // 段落编号
segments?: {

View File

@ -337,6 +337,7 @@ async function doSendMessageStream(userMessage: AiChatMessageApi.ChatMessage) {
conversationId: activeConversationId.value,
type: 'assistant',
content: '思考中...',
reasoningContent: '', //
createTime: new Date(),
} as AiChatMessageApi.ChatMessage,
);
@ -366,10 +367,11 @@ async function doSendMessageStream(userMessage: AiChatMessageApi.ChatMessage) {
return;
}
//
if (data.receive.content === '') {
//
if (data.receive.content === '' && !data.receive.reasoningContent) {
return;
}
// message
if (isFirstChunk) {
isFirstChunk = false;
@ -379,9 +381,23 @@ async function doSendMessageStream(userMessage: AiChatMessageApi.ChatMessage) {
//
activeMessageList.value.push(data.send, 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();
},

View File

@ -18,6 +18,7 @@ import { deleteChatMessage } from '#/api/ai/chat/message';
import { MarkdownView } from '#/components/markdown-view';
import MessageKnowledge from './knowledge.vue';
import MessageReasoning from './reasoning.vue';
import MessageWebSearch from './web-search.vue';
const props = defineProps({
@ -132,6 +133,10 @@ onMounted(async () => {
<div
class="relative flex flex-col break-words rounded-lg bg-gray-100 p-2.5 pb-1 pt-2.5 shadow-sm"
>
<MessageReasoning
:reasoning-content="item.reasoningContent || ''"
:content="item.content || ''"
/>
<MarkdownView
class="text-sm text-gray-600"
:content="item.content"