浏览代码

fix: model knowledge

Timothy J. Baek 7 月之前
父节点
当前提交
2e267b420a

+ 15 - 11
src/lib/components/workspace/Models/Knowledge.svelte

@@ -3,7 +3,9 @@
 	import Selector from './Knowledge/Selector.svelte';
 	import FileItem from '$lib/components/common/FileItem.svelte';
 
-	export let knowledge = [];
+	export let selectedKnowledge = [];
+	export let collections = [];
+
 	const i18n = getContext('i18n');
 </script>
 
@@ -17,14 +19,18 @@
 	</div>
 
 	<div class="flex flex-col">
-		{#if knowledge?.length > 0}
-			<div class=" flex items-center gap-2 mt-2">
-				{#each knowledge as file, fileIdx}
+		{#if selectedKnowledge?.length > 0}
+			<div class=" flex flex-wrap items-center gap-2 mt-2">
+				{#each selectedKnowledge as file, fileIdx}
 					<FileItem
 						{file}
+						name={file.name}
+						type={file?.legacy
+							? `Legacy${file.type ? ` ${file.type}` : ''}`
+							: (file?.type ?? 'Collection')}
 						dismissible
 						on:dismiss={(e) => {
-							knowledge = knowledge.filter((_, idx) => idx !== fileIdx);
+							selectedKnowledge = selectedKnowledge.filter((_, idx) => idx !== fileIdx);
 						}}
 					/>
 				{/each}
@@ -33,16 +39,14 @@
 
 		<div class="flex flex-wrap text-sm font-medium gap-1.5 mt-2">
 			<Selector
-				bind:knowledge
 				on:select={(e) => {
 					const item = e.detail;
 
-					if (!knowledge.find((k) => k.name === item.name)) {
-						knowledge = [
-							...knowledge,
+					if (!selectedKnowledge.find((k) => k.id === item.id)) {
+						selectedKnowledge = [
+							...selectedKnowledge,
 							{
-								...item,
-								type: item?.type ?? 'doc'
+								...item
 							}
 						];
 					}

+ 0 - 2
src/lib/components/workspace/Models/Knowledge/Selector.svelte

@@ -50,8 +50,6 @@
 				...(item?.legacy || item?.meta?.legacy || item?.meta?.document ? { legacy: true } : {})
 			};
 		});
-
-		console.log(items);
 	});
 </script>
 

+ 10 - 2
src/routes/(app)/workspace/models/create/+page.svelte

@@ -2,7 +2,15 @@
 	import { v4 as uuidv4 } from 'uuid';
 	import { toast } from 'svelte-sonner';
 	import { goto } from '$app/navigation';
-	import { settings, user, config, models, tools, functions } from '$lib/stores';
+	import {
+		settings,
+		user,
+		config,
+		models,
+		tools,
+		functions,
+		knowledge as _knowledge
+	} from '$lib/stores';
 
 	import TurndownService from 'turndown';
 
@@ -629,7 +637,7 @@
 		</div>
 
 		<div class="my-2">
-			<Knowledge bind:knowledge />
+			<Knowledge bind:selectedKnowledge={knowledge} collections={$_knowledge} />
 		</div>
 
 		<div class="my-2">

+ 29 - 3
src/routes/(app)/workspace/models/edit/+page.svelte

@@ -5,7 +5,15 @@
 
 	import { onMount, getContext } from 'svelte';
 	import { page } from '$app/stores';
-	import { settings, user, config, models, tools, functions } from '$lib/stores';
+	import {
+		settings,
+		user,
+		config,
+		models,
+		tools,
+		functions,
+		knowledge as _knowledge
+	} from '$lib/stores';
 	import { splitStream } from '$lib/utils';
 
 	import { getModelInfos, updateModelById } from '$lib/apis/models';
@@ -161,7 +169,25 @@
 					: null;
 
 				if (model?.info?.meta?.knowledge) {
-					knowledge = [...model?.info?.meta?.knowledge];
+					console.log(model?.info?.meta?.knowledge);
+					knowledge = [...model?.info?.meta?.knowledge].map((item) => {
+						if (item?.collection_name) {
+							return {
+								id: item.collection_name,
+								name: item.name,
+								legacy: true
+							};
+						} else if (item?.collection_names) {
+							return {
+								name: item.name,
+								type: 'collection',
+								collection_names: item.collection_names,
+								legacy: true
+							};
+						} else {
+							return item;
+						}
+					});
 				}
 
 				if (model?.info?.meta?.toolIds) {
@@ -558,7 +584,7 @@
 			</div>
 
 			<div class="my-2">
-				<Knowledge bind:knowledge />
+				<Knowledge bind:selectedKnowledge={knowledge} collections={$_knowledge} />
 			</div>
 
 			<div class="my-2">