From 4a981e5ce9340ada5a9347be4582dc01ef986c13 Mon Sep 17 00:00:00 2001 From: xs Date: Wed, 3 Sep 2025 09:18:19 +0800 Subject: [PATCH] =?UTF-8?q?1.5.2=E5=89=8D=E7=AB=AF=20AI=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.ts | 2 +- src/views/ai/skill/aiChat/index.vue | 48 +++++++++++++++--------- src/views/ai/skill/aiKnowledge/index.vue | 2 +- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 22df47a..60733d1 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -540,7 +540,7 @@ export const dynamicRoutes: RouteRecordRaw[] = [ permissions: ['ai:aiKnowledgeBaseDocs:qa'], children: [ { - path: 'index/:knowledgeBaseId', + path: 'index/:knowledgeBaseId/:embeddingModelId/:retrieveLimit', component: () => import('@/views/ai/skill/aiChat/index.vue'), name: 'KnowledgeBaseQA', meta: { title: '知识库问答', activeMenu: '/ai/skill/aiChat', noCache: true } diff --git a/src/views/ai/skill/aiChat/index.vue b/src/views/ai/skill/aiChat/index.vue index 3baf040..4358b44 100644 --- a/src/views/ai/skill/aiChat/index.vue +++ b/src/views/ai/skill/aiChat/index.vue @@ -38,7 +38,7 @@ >
- {{ chat.messageTopic }} + {{ chat.messageTopic }}
@@ -469,6 +469,8 @@ const platformIcon = ref('');//ai平台图标 const chatList = ref([]) const selectedKnowledgeBaseId = ref() +const embeddingModelId = ref(); +const retrieveLimit = ref(); const aiKnowledgeBaseList = ref([]) // 可用模型 @@ -488,9 +490,17 @@ const selectedModel = ref(0) const getAiChatSessions = async () => { sidebarLoading.value = true; chatList.value = []; - const res = await getAiChatMessageList({knowledgeBaseId: selectedKnowledgeBaseId.value}); - chatList.value = res.data; - console.log(res) + const res = await getAiChatMessageList({knowledgeBaseId: selectedKnowledgeBaseId.value ? selectedKnowledgeBaseId.value : -1 }); + chatList.value = res.data.map(item => ({ + ...item, + messageTopic: typeof item.messageTopic === 'string' + ? item.messageTopic.replace(/^["']|["']$/g, '') + : item.messageTopic + })); + // chatList.value.forEach(cl =>{ + // cl.messageTopic = JSON.parse(cl.messageTopic) + // }); + // console.log(res) sidebarLoading.value = false; } @@ -500,7 +510,7 @@ const getAiModelList = async () => { const res = await getAiModelJoinList({modelTypeId: 1}); aiModelList.value = res.data; await setDefaultAiModel(); - console.log(res) + // console.log(res) // platformList.value = res.data; // loading.value = false; } @@ -511,7 +521,7 @@ const setDefaultAiModel = async () => { // alert(JSON.stringify(item)) selectedModel.value = item.modelId; provider.value = item.platformCode; - console.log(item.platformIcon) + // console.log(item.platformIcon) platformIcon.value = item.platformIcon; } }) @@ -622,7 +632,7 @@ const selectChat = async (chatSessionId: string) => { deletingChatId.value = null activeChatSessionId.value = chatSessionId - console.log(activeChatSessionId.value) + // console.log(activeChatSessionId.value) if (!currentChat.value.messages) { // 设置加载状态 @@ -636,12 +646,15 @@ const selectChat = async (chatSessionId: string) => { // 验证当前会话ID是否还是用户选择的那个 if (activeChatSessionId.value === chatSessionId) { - console.log(res) + // console.log(res) // res.data已经是对象数组 + currentChat.value.messages = res.data.map(item => { return { role: item.role, - content: item.content, + content: typeof item.content === 'string' + ? item.content.replace(/^["']|["']$/g, '') + : item.content, timestamp: item.timestamp // 可以根据需要转换字段 }; @@ -865,7 +878,7 @@ const sendMessage = async () => { return } - console.log(activeChatSessionId.value) + // console.log(activeChatSessionId.value) // 如果没有当前对话,自动创建一个新的 if (!currentChat.value) { newChatFirstMessage() @@ -904,14 +917,16 @@ const sendMessage = async () => { sendMessages.push(userMessage); } - console.log(sendMessages.map(m => ({role: m.role, content: m.content}))); + // console.log(sendMessages.map(m => ({role: m.role, content: m.content}))); const response = await service.post('/ai/assistant/chatStream?provider=' + provider.value, { messages: sendMessages.map(m => ({role: m.role, content: m.content})), carryHistoryFlag: carryHistory.value ? "1" : "0", modelId: selectedModel.value, sessionId: activeChatSessionId.value, - knowledgeBaseId: selectedKnowledgeBaseId.value + knowledgeBaseId: selectedKnowledgeBaseId.value, + embeddingModelId: embeddingModelId.value, + retrieveLimit:retrieveLimit.value }, { responseType: 'text', headers: { @@ -920,14 +935,12 @@ const sendMessage = async () => { }, onDownloadProgress: progress => { const raw = progress.event.target.responseText - console.log(1) - console.log(raw) - console.log(2) + // console.log(raw) processStream(raw) } }) - console.log("----" + streamingContent.value); + // console.log("----" + streamingContent.value); // 添加用户消息到messages数组 currentChat.value.messages.push({ role: 'assistant', @@ -953,7 +966,6 @@ const processStream = (raw) => { let fullText = '' chunks.forEach(chunk => { - // console.log(chunk) const content = chunk.substring(5) if (content && content !== '[DONE]') { fullText += content @@ -1148,6 +1160,8 @@ const getKnowledgeBaseSelectList = async () => { // 生命周期 onMounted(() => { let knowledgeBaseId = proxy.$route.params?.knowledgeBaseId + embeddingModelId.value = proxy.$route.params?.embeddingModelId + retrieveLimit.value = proxy.$route.params?.retrieveLimit if (knowledgeBaseId && knowledgeBaseId !== '') { selectedKnowledgeBaseId.value = parseInt(knowledgeBaseId); chatTitle.value = 'AI知识库'; diff --git a/src/views/ai/skill/aiKnowledge/index.vue b/src/views/ai/skill/aiKnowledge/index.vue index 4301e6a..972883c 100644 --- a/src/views/ai/skill/aiKnowledge/index.vue +++ b/src/views/ai/skill/aiKnowledge/index.vue @@ -469,7 +469,7 @@ function deleteKb(kb: any) { } function goQA(kb: any) { - router.push({name: 'KnowledgeBaseQA', params: {knowledgeBaseId: kb.knowledgeBaseId}}) + router.push({name: 'KnowledgeBaseQA', params: {knowledgeBaseId: kb.knowledgeBaseId,embeddingModelId:kb.modelId,retrieveLimit:kb.retrieveLimit ? kb.retrieveLimit:5}}) } function openArrangeDialog(kb: any) {