From 08e84d194ff24efca6092d1a9ab77d886418300b Mon Sep 17 00:00:00 2001 From: MerCry Date: Wed, 25 Feb 2026 14:45:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20RAG=E5=AE=9E=E9=AA=8C=E5=AE=A4=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=8C=81=E4=B9=85=E5=8C=96=E4=B8=8ELLM=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=99=A8=E4=BC=98=E5=8C=96=20[AC-ASA-05,=20AC-ASA-14,?= =?UTF-8?q?=20AC-ASA-15]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增ragLab store,使用localStorage持久化RAG实验参数 - 修复LLM选择器placeholder显示逻辑,正确显示当前配置 - 添加'已选择'标签区分用户选择与系统默认配置 - 优化下拉框样式防止标签被遮挡 --- ai-service-admin/src/stores/ragLab.ts | 41 +++++++++++ ai-service-admin/src/views/rag-lab/index.vue | 75 ++++++++++---------- 2 files changed, 80 insertions(+), 36 deletions(-) create mode 100644 ai-service-admin/src/stores/ragLab.ts diff --git a/ai-service-admin/src/stores/ragLab.ts b/ai-service-admin/src/stores/ragLab.ts new file mode 100644 index 0000000..63ffe75 --- /dev/null +++ b/ai-service-admin/src/stores/ragLab.ts @@ -0,0 +1,41 @@ +import { defineStore } from 'pinia' +import { ref, watch } from 'vue' + +export const useRagLabStore = defineStore('ragLab', () => { + const query = ref(localStorage.getItem('ragLab_query') || '') + const kbIds = ref(JSON.parse(localStorage.getItem('ragLab_kbIds') || '[]')) + const llmProvider = ref(localStorage.getItem('ragLab_llmProvider') || '') + const topK = ref(parseInt(localStorage.getItem('ragLab_topK') || '3', 10)) + const scoreThreshold = ref(parseFloat(localStorage.getItem('ragLab_scoreThreshold') || '0.5')) + const generateResponse = ref(localStorage.getItem('ragLab_generateResponse') !== 'false') + const streamOutput = ref(localStorage.getItem('ragLab_streamOutput') === 'true') + + watch(query, (val) => localStorage.setItem('ragLab_query', val)) + watch(kbIds, (val) => localStorage.setItem('ragLab_kbIds', JSON.stringify(val)), { deep: true }) + watch(llmProvider, (val) => localStorage.setItem('ragLab_llmProvider', val)) + watch(topK, (val) => localStorage.setItem('ragLab_topK', String(val))) + watch(scoreThreshold, (val) => localStorage.setItem('ragLab_scoreThreshold', String(val))) + watch(generateResponse, (val) => localStorage.setItem('ragLab_generateResponse', String(val))) + watch(streamOutput, (val) => localStorage.setItem('ragLab_streamOutput', String(val))) + + const clearParams = () => { + query.value = '' + kbIds.value = [] + llmProvider.value = '' + topK.value = 3 + scoreThreshold.value = 0.5 + generateResponse.value = true + streamOutput.value = false + } + + return { + query, + kbIds, + llmProvider, + topK, + scoreThreshold, + generateResponse, + streamOutput, + clearParams + } +}) diff --git a/ai-service-admin/src/views/rag-lab/index.vue b/ai-service-admin/src/views/rag-lab/index.vue index f307871..b5af4e5 100644 --- a/ai-service-admin/src/views/rag-lab/index.vue +++ b/ai-service-admin/src/views/rag-lab/index.vue @@ -21,7 +21,7 @@
Top-K - +
Score Threshold
生成 AI 回复 - +
-
+
流式输出 - +
{{ finalPrompt }}
- +