From 5564dec4515d0ce478c2ca1c62a87f48a0573ebf Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Mon, 31 Mar 2025 23:39:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20prompts=EF=BC=8C=E4=BD=86?= =?UTF-8?q?=E6=98=AF=E8=BF=98=E6=9C=89=E7=82=B9=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/main-panel/prompt/index.vue | 47 +++++- .../main-panel/prompt/prompt-logger.vue | 104 ++++++++++++ .../main-panel/prompt/prompt-reader.vue | 130 +++++++++++++++ .../main-panel/prompt/prompt-templates.vue | 155 ++++++++++++++++++ .../components/main-panel/prompt/prompts.ts | 51 ++++++ .../components/main-panel/resource/index.vue | 3 +- .../main-panel/resource/resource-logger.vue | 97 ++++++++--- .../resource/resource-templates.vue | 49 +++++- app/src/components/sidebar/connected.vue | 1 + app/src/hook/type.ts | 12 +- app/src/i18n/ar.json | 6 +- app/src/i18n/de.json | 6 +- app/src/i18n/en.json | 6 +- app/src/i18n/fr.json | 6 +- app/src/i18n/ja.json | 6 +- app/src/i18n/ko.json | 6 +- app/src/i18n/ru.json | 6 +- app/src/i18n/zh-cn.json | 6 +- app/src/i18n/zh-tw.json | 6 +- 19 files changed, 639 insertions(+), 64 deletions(-) create mode 100644 app/src/components/main-panel/prompt/prompt-logger.vue create mode 100644 app/src/components/main-panel/prompt/prompt-reader.vue create mode 100644 app/src/components/main-panel/prompt/prompt-templates.vue create mode 100644 app/src/components/main-panel/prompt/prompts.ts diff --git a/app/src/components/main-panel/prompt/index.vue b/app/src/components/main-panel/prompt/index.vue index 614dcee..2c4962b 100644 --- a/app/src/components/main-panel/prompt/index.vue +++ b/app/src/components/main-panel/prompt/index.vue @@ -1,14 +1,34 @@ \ No newline at end of file diff --git a/app/src/components/main-panel/prompt/prompt-logger.vue b/app/src/components/main-panel/prompt/prompt-logger.vue new file mode 100644 index 0000000..d72c7c2 --- /dev/null +++ b/app/src/components/main-panel/prompt/prompt-logger.vue @@ -0,0 +1,104 @@ + + + + + \ No newline at end of file diff --git a/app/src/components/main-panel/prompt/prompt-reader.vue b/app/src/components/main-panel/prompt/prompt-reader.vue new file mode 100644 index 0000000..750498c --- /dev/null +++ b/app/src/components/main-panel/prompt/prompt-reader.vue @@ -0,0 +1,130 @@ + + + + + \ No newline at end of file diff --git a/app/src/components/main-panel/prompt/prompt-templates.vue b/app/src/components/main-panel/prompt/prompt-templates.vue new file mode 100644 index 0000000..816dd17 --- /dev/null +++ b/app/src/components/main-panel/prompt/prompt-templates.vue @@ -0,0 +1,155 @@ + + + + + \ No newline at end of file diff --git a/app/src/components/main-panel/prompt/prompts.ts b/app/src/components/main-panel/prompt/prompts.ts new file mode 100644 index 0000000..3419894 --- /dev/null +++ b/app/src/components/main-panel/prompt/prompts.ts @@ -0,0 +1,51 @@ +import { PromptsGetResponse, PromptTemplate } from '@/hook/type'; +import { reactive } from 'vue'; + +export const promptsManager = reactive<{ + current: PromptTemplate | undefined + templates: PromptTemplate[] +}>({ + current: undefined, + templates: [] +}); + +export interface PromptStorage { + currentPromptName: string; + lastPromptGetResponse?: PromptsGetResponse; +} + +export function parsePromptTemplate(template: string): { + params: string[], + fill: (params: Record) => string +} { + const paramRegex = /\{([^}]+)\}/g; + const params = new Set(); + let match; + + while ((match = paramRegex.exec(template)) !== null) { + params.add(match[1]); + } + + const paramList = Array.from(params); + + const fill = (values: Record): string => { + let result = template; + + for (const param of paramList) { + if (values[param] === undefined) { + throw new Error(`缺少必要参数: ${param}`); + } + } + + for (const param of paramList) { + result = result.replace(new RegExp(`\\{${param}\\}`, 'g'), values[param]); + } + + return result; + }; + + return { + params: paramList, + fill + }; +} \ No newline at end of file diff --git a/app/src/components/main-panel/resource/index.vue b/app/src/components/main-panel/resource/index.vue index cdc74b2..af6cb4a 100644 --- a/app/src/components/main-panel/resource/index.vue +++ b/app/src/components/main-panel/resource/index.vue @@ -46,11 +46,12 @@ const props = defineProps({ padding: 20px; height: 100%; display: flex; - justify-content: space-between; + justify-content: space-around; } .resource-module .left { width: 45%; + max-width: 410px; } .resource-module .right { diff --git a/app/src/components/main-panel/resource/resource-logger.vue b/app/src/components/main-panel/resource/resource-logger.vue index 4ca756f..61acc72 100644 --- a/app/src/components/main-panel/resource/resource-logger.vue +++ b/app/src/components/main-panel/resource/resource-logger.vue @@ -1,25 +1,44 @@ \ No newline at end of file diff --git a/app/src/components/main-panel/resource/resource-templates.vue b/app/src/components/main-panel/resource/resource-templates.vue index 3cba7b2..0ce8dee 100644 --- a/app/src/components/main-panel/resource/resource-templates.vue +++ b/app/src/components/main-panel/resource/resource-templates.vue @@ -15,16 +15,27 @@ +
+ + {{ t('refresh') }} + +