1.5.2前端

AI完善
master
xs 4 months ago
parent 4c5052af94
commit 4a981e5ce9

@ -540,7 +540,7 @@ export const dynamicRoutes: RouteRecordRaw[] = [
permissions: ['ai:aiKnowledgeBaseDocs:qa'], permissions: ['ai:aiKnowledgeBaseDocs:qa'],
children: [ children: [
{ {
path: 'index/:knowledgeBaseId', path: 'index/:knowledgeBaseId/:embeddingModelId/:retrieveLimit',
component: () => import('@/views/ai/skill/aiChat/index.vue'), component: () => import('@/views/ai/skill/aiChat/index.vue'),
name: 'KnowledgeBaseQA', name: 'KnowledgeBaseQA',
meta: { title: '知识库问答', activeMenu: '/ai/skill/aiChat', noCache: true } meta: { title: '知识库问答', activeMenu: '/ai/skill/aiChat', noCache: true }

@ -38,7 +38,7 @@
> >
<div class="chat-info"> <div class="chat-info">
<div class="chat-title-row"> <div class="chat-title-row">
<span class="chat-title">{{ chat.messageTopic }}</span> <span class="chat-title" :title="chat.messageTopic">{{ chat.messageTopic }}</span>
<!-- 加载动画 --> <!-- 加载动画 -->
<div v-if="loadingChatId === chat.sessionId" class="loading-indicator"> <div v-if="loadingChatId === chat.sessionId" class="loading-indicator">
<el-icon class="is-loading"> <el-icon class="is-loading">
@ -469,6 +469,8 @@ const platformIcon = ref('');//ai平台图标
const chatList = ref<ChatSession[]>([]) const chatList = ref<ChatSession[]>([])
const selectedKnowledgeBaseId = ref() const selectedKnowledgeBaseId = ref()
const embeddingModelId = ref();
const retrieveLimit = ref();
const aiKnowledgeBaseList = ref<AiKnowledgeBaseVO[]>([]) const aiKnowledgeBaseList = ref<AiKnowledgeBaseVO[]>([])
// //
@ -488,9 +490,17 @@ const selectedModel = ref(0)
const getAiChatSessions = async () => { const getAiChatSessions = async () => {
sidebarLoading.value = true; sidebarLoading.value = true;
chatList.value = []; chatList.value = [];
const res = await getAiChatMessageList({knowledgeBaseId: selectedKnowledgeBaseId.value}); const res = await getAiChatMessageList({knowledgeBaseId: selectedKnowledgeBaseId.value ? selectedKnowledgeBaseId.value : -1 });
chatList.value = res.data; chatList.value = res.data.map(item => ({
console.log(res) ...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; sidebarLoading.value = false;
} }
@ -500,7 +510,7 @@ const getAiModelList = async () => {
const res = await getAiModelJoinList({modelTypeId: 1}); const res = await getAiModelJoinList({modelTypeId: 1});
aiModelList.value = res.data; aiModelList.value = res.data;
await setDefaultAiModel(); await setDefaultAiModel();
console.log(res) // console.log(res)
// platformList.value = res.data; // platformList.value = res.data;
// loading.value = false; // loading.value = false;
} }
@ -511,7 +521,7 @@ const setDefaultAiModel = async () => {
// alert(JSON.stringify(item)) // alert(JSON.stringify(item))
selectedModel.value = item.modelId; selectedModel.value = item.modelId;
provider.value = item.platformCode; provider.value = item.platformCode;
console.log(item.platformIcon) // console.log(item.platformIcon)
platformIcon.value = item.platformIcon; platformIcon.value = item.platformIcon;
} }
}) })
@ -622,7 +632,7 @@ const selectChat = async (chatSessionId: string) => {
deletingChatId.value = null deletingChatId.value = null
activeChatSessionId.value = chatSessionId activeChatSessionId.value = chatSessionId
console.log(activeChatSessionId.value) // console.log(activeChatSessionId.value)
if (!currentChat.value.messages) { if (!currentChat.value.messages) {
// //
@ -636,12 +646,15 @@ const selectChat = async (chatSessionId: string) => {
// ID // ID
if (activeChatSessionId.value === chatSessionId) { if (activeChatSessionId.value === chatSessionId) {
console.log(res) // console.log(res)
// res.data // res.data
currentChat.value.messages = res.data.map(item => { currentChat.value.messages = res.data.map(item => {
return { return {
role: item.role, role: item.role,
content: item.content, content: typeof item.content === 'string'
? item.content.replace(/^["']|["']$/g, '')
: item.content,
timestamp: item.timestamp timestamp: item.timestamp
// //
}; };
@ -865,7 +878,7 @@ const sendMessage = async () => {
return return
} }
console.log(activeChatSessionId.value) // console.log(activeChatSessionId.value)
// //
if (!currentChat.value) { if (!currentChat.value) {
newChatFirstMessage() newChatFirstMessage()
@ -904,14 +917,16 @@ const sendMessage = async () => {
sendMessages.push(userMessage); 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, { const response = await service.post('/ai/assistant/chatStream?provider=' + provider.value, {
messages: sendMessages.map(m => ({role: m.role, content: m.content})), messages: sendMessages.map(m => ({role: m.role, content: m.content})),
carryHistoryFlag: carryHistory.value ? "1" : "0", carryHistoryFlag: carryHistory.value ? "1" : "0",
modelId: selectedModel.value, modelId: selectedModel.value,
sessionId: activeChatSessionId.value, sessionId: activeChatSessionId.value,
knowledgeBaseId: selectedKnowledgeBaseId.value knowledgeBaseId: selectedKnowledgeBaseId.value,
embeddingModelId: embeddingModelId.value,
retrieveLimit:retrieveLimit.value
}, { }, {
responseType: 'text', responseType: 'text',
headers: { headers: {
@ -920,14 +935,12 @@ const sendMessage = async () => {
}, },
onDownloadProgress: progress => { onDownloadProgress: progress => {
const raw = progress.event.target.responseText const raw = progress.event.target.responseText
console.log(1) // console.log(raw)
console.log(raw)
console.log(2)
processStream(raw) processStream(raw)
} }
}) })
console.log("----" + streamingContent.value); // console.log("----" + streamingContent.value);
// messages // messages
currentChat.value.messages.push({ currentChat.value.messages.push({
role: 'assistant', role: 'assistant',
@ -953,7 +966,6 @@ const processStream = (raw) => {
let fullText = '' let fullText = ''
chunks.forEach(chunk => { chunks.forEach(chunk => {
// console.log(chunk)
const content = chunk.substring(5) const content = chunk.substring(5)
if (content && content !== '[DONE]') { if (content && content !== '[DONE]') {
fullText += content fullText += content
@ -1148,6 +1160,8 @@ const getKnowledgeBaseSelectList = async () => {
// //
onMounted(() => { onMounted(() => {
let knowledgeBaseId = proxy.$route.params?.knowledgeBaseId let knowledgeBaseId = proxy.$route.params?.knowledgeBaseId
embeddingModelId.value = proxy.$route.params?.embeddingModelId
retrieveLimit.value = proxy.$route.params?.retrieveLimit
if (knowledgeBaseId && knowledgeBaseId !== '') { if (knowledgeBaseId && knowledgeBaseId !== '') {
selectedKnowledgeBaseId.value = parseInt(knowledgeBaseId); selectedKnowledgeBaseId.value = parseInt(knowledgeBaseId);
chatTitle.value = 'AI知识库'; chatTitle.value = 'AI知识库';

@ -469,7 +469,7 @@ function deleteKb(kb: any) {
} }
function goQA(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) { function openArrangeDialog(kb: any) {

Loading…
Cancel
Save