From 7aee9114302e83cc2f4af76c9304b20c62e735ff Mon Sep 17 00:00:00 2001 From: CaptainB Date: Tue, 29 Oct 2024 15:04:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=8C=89=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=8F=90=E7=A4=BA=E8=AF=8D=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/stores/index.ts | 4 +- ui/src/stores/modules/prompt.ts | 40 +++++++++++++++++++ .../component/GenerateRelatedDialog.vue | 16 +++----- .../component/GenerateRelatedDialog.vue | 22 +++++----- 4 files changed, 58 insertions(+), 24 deletions(-) create mode 100644 ui/src/stores/modules/prompt.ts diff --git a/ui/src/stores/index.ts b/ui/src/stores/index.ts index 6177aea4b..732985518 100644 --- a/ui/src/stores/index.ts +++ b/ui/src/stores/index.ts @@ -10,6 +10,7 @@ import useApplicationStore from './modules/application' import useDocumentStore from './modules/document' import useProblemStore from './modules/problem' import useLogStore from './modules/log' +import usePromptStore from './modules/prompt' const useStore = () => ({ common: useCommonStore(), @@ -20,7 +21,8 @@ const useStore = () => ({ application: useApplicationStore(), document: useDocumentStore(), problem: useProblemStore(), - log: useLogStore() + log: useLogStore(), + prompt: usePromptStore(), }) export default useStore diff --git a/ui/src/stores/modules/prompt.ts b/ui/src/stores/modules/prompt.ts new file mode 100644 index 000000000..ec4be979d --- /dev/null +++ b/ui/src/stores/modules/prompt.ts @@ -0,0 +1,40 @@ +import { defineStore } from 'pinia' + +export interface promptTypes { + user: string + formValue: { model_id: string, prompt: string } +} + +const usePromptStore = defineStore({ + id: 'prompt', + state: (): promptTypes[] => (JSON.parse(localStorage.getItem('PROMPT_CACHE') || '[]')), + actions: { + save(user: string, formValue: any) { + this.$state.forEach((item: any, index: number) => { + if (item.user === user) { + this.$state.splice(index, 1) + } + }) + this.$state.push({ user, formValue }) + localStorage.setItem('PROMPT_CACHE', JSON.stringify(this.$state)) + }, + get(user: string) { + for (let i = 0; i < this.$state.length; i++) { + if (this.$state[i].user === user) { + return this.$state[i].formValue + } + } + return { + model_id: '', + prompt: '内容:{data}\n' + + '\n' + + '请总结上面的内容,并根据内容总结生成 5 个问题。\n' + + '回答要求:\n' + + '- 请只输出问题;\n' + + '- 请将每个问题放置标签中。' + } + } + } +}) + +export default usePromptStore \ No newline at end of file diff --git a/ui/src/views/document/component/GenerateRelatedDialog.vue b/ui/src/views/document/component/GenerateRelatedDialog.vue index 8c0764a9f..a5908a565 100644 --- a/ui/src/views/document/component/GenerateRelatedDialog.vue +++ b/ui/src/views/document/component/GenerateRelatedDialog.vue @@ -134,7 +134,7 @@ const { params: { id } // id为datasetID } = route as any -const { model } = useStore() +const { model, prompt, user } = useStore() const emit = defineEmits(['refresh']) @@ -147,15 +147,9 @@ const providerOptions = ref>([]) const documentIdList = ref([]) const FormRef = ref() -const form = ref({ - model_id: '', - prompt: '内容:{data}\n' + - '\n' + - '请总结上面的内容,并根据内容总结生成 5 个问题。\n' + - '回答要求:\n' + - '- 请只输出问题;\n' + - '- 请将每个问题放置标签中。' -}) +const userId = user.userInfo?.id as string +const form = ref(prompt.get(userId)) + const rules = reactive({ model_id: [{ required: true, message: '请选择AI 模型', trigger: 'blur' }], @@ -176,6 +170,8 @@ const submitHandle = async (formEl: FormInstance) => { } await formEl.validate((valid, fields) => { if (valid) { + // 保存提示词 + prompt.save(user.userInfo?.id as string, form.value) const data = { ...form.value, document_id_list: documentIdList.value } documentApi.batchGenerateRelated(id, data).then(() => { MsgSuccess('生成关联问题成功') diff --git a/ui/src/views/paragraph/component/GenerateRelatedDialog.vue b/ui/src/views/paragraph/component/GenerateRelatedDialog.vue index e5f185230..c76144d57 100644 --- a/ui/src/views/paragraph/component/GenerateRelatedDialog.vue +++ b/ui/src/views/paragraph/component/GenerateRelatedDialog.vue @@ -117,7 +117,7 @@