소스 검색

Merge pull request #4813 from jannikstdl/rag-knowledge-status

feat: show rag status when using models with knowledge collections
Timothy Jaeryang Baek 8 달 전
부모
커밋
670672c067
3개의 변경된 파일54개의 추가작업 그리고 3개의 파일을 삭제
  1. 51 2
      src/lib/components/chat/Chat.svelte
  2. 2 1
      src/lib/i18n/locales/de-DE/translation.json
  3. 1 0
      src/lib/i18n/locales/en-US/translation.json

+ 51 - 2
src/lib/components/chat/Chat.svelte

@@ -809,7 +809,18 @@
 
 		let files = JSON.parse(JSON.stringify(chatFiles));
 		if (model?.info?.meta?.knowledge ?? false) {
+			// Only initialize and add status if knowledge exists
+			responseMessage.statusHistory = [
+				{
+					action: 'knowledge_search',
+					description: $i18n.t(`Searching Knowledge for "{{searchQuery}}"`, {
+						searchQuery: userMessage.content
+					}),
+					done: false
+				}
+			];
 			files.push(...model.info.meta.knowledge);
+			messages = messages; // Trigger Svelte update
 		}
 		files.push(
 			...(userMessage?.files ?? []).filter((item) =>
@@ -818,6 +829,8 @@
 			...(responseMessage?.files ?? []).filter((item) => ['web_search_results'].includes(item.type))
 		);
 
+		scrollToBottom();
+
 		eventTarget.dispatchEvent(
 			new CustomEvent('chat:start', {
 				detail: {
@@ -888,6 +901,12 @@
 
 							if ('citations' in data) {
 								responseMessage.citations = data.citations;
+								// Only remove status if it was initially set
+								if (model?.info?.meta?.knowledge ?? false) {
+									responseMessage.statusHistory = responseMessage.statusHistory.filter(
+										(status) => status.action !== 'knowledge_search'
+									);
+								}
 								continue;
 							}
 
@@ -977,7 +996,20 @@
 				}
 			}
 
-			await saveChatHandler(_chatId);
+			if ($chatId == _chatId) {
+				if ($settings.saveChatHistory ?? true) {
+					chat = await updateChatById(localStorage.token, _chatId, {
+						messages: messages,
+						history: history,
+						models: selectedModels,
+						params: params,
+						files: chatFiles
+					});
+
+					currentChatPage.set(1);
+					await chats.set(await getChatList(localStorage.token, $currentChatPage));
+				}
+			}
 		} else {
 			if (res !== null) {
 				const error = await res.json();
@@ -1044,7 +1076,18 @@
 
 		let files = JSON.parse(JSON.stringify(chatFiles));
 		if (model?.info?.meta?.knowledge ?? false) {
+			// Only initialize and add status if knowledge exists
+			responseMessage.statusHistory = [
+				{
+					action: 'knowledge_search',
+					description: $i18n.t(`Searching Knowledge for "{{searchQuery}}"`, {
+						searchQuery: userMessage.content
+					}),
+					done: false
+				}
+			];
 			files.push(...model.info.meta.knowledge);
+			messages = messages; // Trigger Svelte update
 		}
 		files.push(
 			...(userMessage?.files ?? []).filter((item) =>
@@ -1184,6 +1227,12 @@
 
 					if (citations) {
 						responseMessage.citations = citations;
+						// Only remove status if it was initially set
+						if (model?.info?.meta?.knowledge ?? false) {
+							responseMessage.statusHistory = responseMessage.statusHistory.filter(
+								(status) => status.action !== 'knowledge_search'
+							);
+						}
 						continue;
 					}
 
@@ -1238,7 +1287,7 @@
 				}
 
 				if ($chatId == _chatId) {
-					if (!$temporaryChatEnabled) {
+					if ($settings.saveChatHistory ?? true) {
 						chat = await updateChatById(localStorage.token, _chatId, {
 							models: selectedModels,
 							messages: messages,

+ 2 - 1
src/lib/i18n/locales/de-DE/translation.json

@@ -473,8 +473,8 @@
 	"Playground": "Testumgebung",
 	"Please carefully review the following warnings:": "",
 	"Positive attitude": "Positive Einstellung",
-	"Previous 30 days": "Vorherige 30 Tage",
 	"Previous 7 days": "Vorherige 7 Tage",
+	"Previous 30 days": "Vorherige 30 Tage",
 	"Profile Image": "Profilbild",
 	"Prompt": "Prompt",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (z. B. \"Erzähle mir eine interessante Tatsache über das Römische Reich\")",
@@ -535,6 +535,7 @@
 	"Searched {{count}} sites_one": "{{count}} Seite durchsucht",
 	"Searched {{count}} sites_other": "{{count}} Seiten durchsucht",
 	"Searching \"{{searchQuery}}\"": "Suche nach \"{{searchQuery}}\"",
+	"Searching in Knowledge for \"{{searchQuery}}\"": "Suche in Wissen nach \"{{searchQuery}}\"",
 	"Searxng Query URL": "Searxng-Abfrage-URL",
 	"See readme.md for instructions": "Anleitung in readme.md anzeigen",
 	"See what's new": "Entdecken Sie die Neuigkeiten",

+ 1 - 0
src/lib/i18n/locales/en-US/translation.json

@@ -543,6 +543,7 @@
 	"Select a engine": "",
 	"Select a function": "",
 	"Select a model": "",
+	"Searching in Knowledge for \"{{searchQuery}}\"": "",
 	"Select a pipeline": "",
 	"Select a pipeline url": "",
 	"Select a tool": "",