From 57439e775893b094ee09ca16c3cdca8e891c7546 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Sun, 28 Sep 2025 15:50:21 +0800 Subject: [PATCH] fix: Generate prompt --- apps/chat/serializers/chat.py | 3 +++ apps/chat/template/generate_prompt_system | 2 +- .../component/GeneratePromptDialog.vue | 23 +++++++++++++++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/apps/chat/serializers/chat.py b/apps/chat/serializers/chat.py index c59d2b604..369b0065b 100644 --- a/apps/chat/serializers/chat.py +++ b/apps/chat/serializers/chat.py @@ -171,6 +171,9 @@ class PromptGenerateSerializer(serializers.Serializer): message = messages[-1]['content'] q = prompt.replace("{userInput}", message) + q = q.replace("{application_name}",application.name) + q = q.replace("{detail}",application.desc) + messages[-1]['content'] = q model_exist = QuerySet(Model).filter( diff --git a/apps/chat/template/generate_prompt_system b/apps/chat/template/generate_prompt_system index 971b3e865..805f2e4da 100644 --- a/apps/chat/template/generate_prompt_system +++ b/apps/chat/template/generate_prompt_system @@ -55,7 +55,7 @@ ## 限制: 1. **严格限制回答范围**:仅回答与角色设定相关的问题。 - 如果用户提问与角色无关,必须使用以下固定格式回复: - “对不起,我只能回答与【角色设定】相关的问题,您的问题不在服务范围内。” + “对不起,我只能回答与[角色设定]相关的问题,您的问题不在服务范围内。” - 不得提供任何与角色设定无关的回答。 2. 描述角色在互动过程中需要遵循的限制条件2 3. 描述角色在互动过程中需要遵循的限制条件3 diff --git a/ui/src/views/application/component/GeneratePromptDialog.vue b/ui/src/views/application/component/GeneratePromptDialog.vue index d01471d62..3482bf16c 100644 --- a/ui/src/views/application/component/GeneratePromptDialog.vue +++ b/ui/src/views/application/component/GeneratePromptDialog.vue @@ -32,7 +32,7 @@ {{ $t('views.application.generateDialog.title') }}

-
+
{{ $t('views.application.generateDialog.replace') }} @@ -126,14 +126,22 @@ const promptTemplates = { INIT_TEMPLATE: ` 请根据用户描述生成一个完整的AI角色人设模板: +应用名称:{application_name} +应用描述:{detail} 用户需求:{userInput} +重要说明: +1. 角色设定必须服务于"{application_name}"应用的核心功能 +2. 允许用户对角色设定的具体内容进行调整和优化 +3. 如果用户要求修改某个技能或部分,在保持应用主题的前提下进行相应调整 + 请按以下格式生成: 必须严格遵循以下规则: 1. **严格禁止输出解释、前言、额外说明**,只输出最终结果。 2. **严格使用以下格式**,不能缺少标题、不能多出其他段落。 -3. **如果用户需求不明确,就忽略用户需求**。 +3. **如果用户要求修改角色设定的某个部分,在保持应用核心功能的前提下进行调整**。 +4. **如果用户需求与角色设定生成完全无关(如闲聊、其他话题),则忽略用户需求,基于应用信息生成标准角色设定**。 # 角色: 角色概述和主要职责的一句话描述 @@ -174,7 +182,7 @@ const promptTemplates = { ## 限制: 1. **严格限制回答范围**:仅回答与角色设定相关的问题。 - 如果用户提问与角色无关,必须使用以下固定格式回复: - “对不起,我只能回答与【角色设定】相关的问题,您的问题不在服务范围内。” + “对不起,我只能回答与[角色设定]相关的问题,您的问题不在服务范围内。” - 不得提供任何与角色设定无关的回答。 2. 描述角色在互动过程中需要遵循的限制条件2 3. 描述角色在互动过程中需要遵循的限制条件3 @@ -200,7 +208,7 @@ const startStreamingOutput = () => { isPaused.value = false streamTimer = setInterval(() => { - if (isApiComplete.value && !isPaused.value) { + if (isApiComplete.value && !isPaused.value) { // 更新显示内容 const currentAnswer = chatMessages.value[chatMessages.value.length - 1] if (currentAnswer && currentAnswer.role === 'ai') { @@ -393,10 +401,13 @@ const handleSubmit = (event?: any) => { if (!event?.ctrlKey && !event?.shiftKey && !event?.altKey && !event?.metaKey) { // 如果没有按下组合键,则会阻止默认事件 event?.preventDefault() + if (!inputValue.value.trim() || loading.value || isStreaming.value) { + return + } if (!originalUserInput.value) { originalUserInput.value = inputValue.value } - if (isPaused.value || isStreaming.value) { + if (isPaused.value || isStreaming.value) { return } if (inputValue.value) { @@ -471,6 +482,8 @@ const handleDialogClose = (done: () => void) => { .catch(() => { // 点击取消 }) + } else { + done() } }