feat:【antd】【ai】chat “Thinking 深度思考功能”的迁移
This commit is contained in:
@@ -19,6 +19,7 @@ export namespace AiChatMessageApi {
|
|||||||
model: number; // 模型标志
|
model: number; // 模型标志
|
||||||
modelId: number; // 模型编号
|
modelId: number; // 模型编号
|
||||||
content: string; // 聊天内容
|
content: string; // 聊天内容
|
||||||
|
reasoningContent?: string; // 推理内容(深度思考)
|
||||||
tokens: number; // 消耗 Token 数量
|
tokens: number; // 消耗 Token 数量
|
||||||
segmentIds?: number[]; // 段落编号
|
segmentIds?: number[]; // 段落编号
|
||||||
segments?: {
|
segments?: {
|
||||||
|
|||||||
@@ -337,6 +337,7 @@ async function doSendMessageStream(userMessage: AiChatMessageApi.ChatMessage) {
|
|||||||
conversationId: activeConversationId.value,
|
conversationId: activeConversationId.value,
|
||||||
type: 'assistant',
|
type: 'assistant',
|
||||||
content: '思考中...',
|
content: '思考中...',
|
||||||
|
reasoningContent: '', // 初始化推理内容
|
||||||
createTime: new Date(),
|
createTime: new Date(),
|
||||||
} as AiChatMessageApi.ChatMessage,
|
} as AiChatMessageApi.ChatMessage,
|
||||||
);
|
);
|
||||||
@@ -366,10 +367,11 @@ async function doSendMessageStream(userMessage: AiChatMessageApi.ChatMessage) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果内容为空,就不处理。
|
// 如果内容和推理内容都为空,就不处理
|
||||||
if (data.receive.content === '') {
|
if (data.receive.content === '' && !data.receive.reasoningContent) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 首次返回需要添加一个 message 到页面,后面的都是更新
|
// 首次返回需要添加一个 message 到页面,后面的都是更新
|
||||||
if (isFirstChunk) {
|
if (isFirstChunk) {
|
||||||
isFirstChunk = false;
|
isFirstChunk = false;
|
||||||
@@ -379,9 +381,23 @@ async function doSendMessageStream(userMessage: AiChatMessageApi.ChatMessage) {
|
|||||||
// 更新返回的数据
|
// 更新返回的数据
|
||||||
activeMessageList.value.push(data.send, data.receive);
|
activeMessageList.value.push(data.send, data.receive);
|
||||||
}
|
}
|
||||||
// debugger
|
|
||||||
|
// 处理 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 =
|
||||||
receiveMessageFullText.value + data.receive.content;
|
receiveMessageFullText.value + data.receive.content;
|
||||||
|
}
|
||||||
|
|
||||||
// 滚动到最下面
|
// 滚动到最下面
|
||||||
await scrollToBottom();
|
await scrollToBottom();
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { deleteChatMessage } from '#/api/ai/chat/message';
|
|||||||
import { MarkdownView } from '#/components/markdown-view';
|
import { MarkdownView } from '#/components/markdown-view';
|
||||||
|
|
||||||
import MessageKnowledge from './knowledge.vue';
|
import MessageKnowledge from './knowledge.vue';
|
||||||
|
import MessageReasoning from './reasoning.vue';
|
||||||
import MessageWebSearch from './web-search.vue';
|
import MessageWebSearch from './web-search.vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -132,6 +133,10 @@ onMounted(async () => {
|
|||||||
<div
|
<div
|
||||||
class="relative flex flex-col break-words rounded-lg bg-gray-100 p-2.5 pb-1 pt-2.5 shadow-sm"
|
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
|
<MarkdownView
|
||||||
class="text-sm text-gray-600"
|
class="text-sm text-gray-600"
|
||||||
:content="item.content"
|
:content="item.content"
|
||||||
|
|||||||
Reference in New Issue
Block a user