From b9215e24106418a205a378148ef9d4e666f616c6 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Mon, 10 Nov 2025 16:40:37 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=81=8F=E5=A5=BD=E6=8F=90=E7=A4=BA=E5=8A=9F=E8=83=BD=E5=88=B0?= =?UTF-8?q?AI=E7=B3=BB=E7=BB=9F=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/pages/manage.vue | 4 ++-- .../pages/manage/components/ChatInput/index.vue | 4 ++-- .../js/pages/manage/components/ReportDetail.vue | 4 ++-- .../js/pages/manage/components/ReportEdit.vue | 4 ++-- .../assets/js/pages/manage/components/TaskAdd.vue | 4 ++-- resources/assets/js/utils/ai.js | 15 +++++++++++++++ 6 files changed, 25 insertions(+), 10 deletions(-) diff --git a/resources/assets/js/pages/manage.vue b/resources/assets/js/pages/manage.vue index c40c3094b..a9fe175fb 100644 --- a/resources/assets/js/pages/manage.vue +++ b/resources/assets/js/pages/manage.vue @@ -457,7 +457,7 @@ import SearchBox from "../components/SearchBox.vue"; import AIAssistant from "../components/AIAssistant.vue"; import transformEmojiToHtml from "../utils/emoji"; import {languageName} from "../language"; -import {AINormalizeJsonContent, PROJECT_AI_SYSTEM_PROMPT} from "../utils/ai"; +import {AINormalizeJsonContent, PROJECT_AI_SYSTEM_PROMPT, withLanguagePreferencePrompt} from "../utils/ai"; import Draggable from 'vuedraggable' export default { @@ -1121,7 +1121,7 @@ export default { handleProjectAIBeforeSend(context = []) { const prepared = [ - ['system', PROJECT_AI_SYSTEM_PROMPT] + ['system', withLanguagePreferencePrompt(PROJECT_AI_SYSTEM_PROMPT)] ]; const contextPrompt = this.buildProjectAIContextData(); if (contextPrompt) { diff --git a/resources/assets/js/pages/manage/components/ChatInput/index.vue b/resources/assets/js/pages/manage/components/ChatInput/index.vue index 27a9d33ed..3055a9904 100755 --- a/resources/assets/js/pages/manage/components/ChatInput/index.vue +++ b/resources/assets/js/pages/manage/components/ChatInput/index.vue @@ -344,7 +344,7 @@ import {inputLoadAdd, inputLoadIsLast, inputLoadRemove} from "./one"; import {languageList, languageName} from "../../../../language"; import {isMarkdownFormat, MarkdownConver} from "../../../../utils/markdown"; import {cutText, extractPlainText} from "../../../../utils/text"; -import {MESSAGE_AI_SYSTEM_PROMPT} from "../../../../utils/ai"; +import {MESSAGE_AI_SYSTEM_PROMPT, withLanguagePreferencePrompt} from "../../../../utils/ai"; import emitter from "../../../../store/events"; import historyMixin from "./history"; @@ -1918,7 +1918,7 @@ export default { handleMessageAIBeforeSend(context = []) { const prepared = [ - ['system', MESSAGE_AI_SYSTEM_PROMPT] + ['system', withLanguagePreferencePrompt(MESSAGE_AI_SYSTEM_PROMPT)] ]; let assistantContext = this.buildMessageAssistantContext(); if (assistantContext) { diff --git a/resources/assets/js/pages/manage/components/ReportDetail.vue b/resources/assets/js/pages/manage/components/ReportDetail.vue index 8a92e86f6..dc1229dc3 100644 --- a/resources/assets/js/pages/manage/components/ReportDetail.vue +++ b/resources/assets/js/pages/manage/components/ReportDetail.vue @@ -75,7 +75,7 @@ const VMPreview = () => import('../../../components/VMEditor/preview'); import {mapState} from "vuex"; import emitter from "../../../store/events"; import {extractPlainText} from "../../../utils/text"; -import {REPORT_ANALYSIS_SYSTEM_PROMPT} from "../../../utils/ai"; +import {REPORT_ANALYSIS_SYSTEM_PROMPT, withLanguagePreferencePrompt} from "../../../utils/ai"; export default { name: "ReportDetail", @@ -184,7 +184,7 @@ export default { handleReportAnalysisBeforeSend(context = []) { const prepared = [ - ['system', REPORT_ANALYSIS_SYSTEM_PROMPT] + ['system', withLanguagePreferencePrompt(REPORT_ANALYSIS_SYSTEM_PROMPT)] ]; const contextPrompt = this.buildReportAnalysisContextData(); if (contextPrompt) { diff --git a/resources/assets/js/pages/manage/components/ReportEdit.vue b/resources/assets/js/pages/manage/components/ReportEdit.vue index 779faf31f..090d8019f 100644 --- a/resources/assets/js/pages/manage/components/ReportEdit.vue +++ b/resources/assets/js/pages/manage/components/ReportEdit.vue @@ -64,7 +64,7 @@ import {mapState} from "vuex"; import emitter from "../../../store/events"; import {MarkdownConver} from "../../../utils/markdown"; import {extractPlainText} from "../../../utils/text"; -import {REPORT_AI_SYSTEM_PROMPT} from "../../../utils/ai"; +import {REPORT_AI_SYSTEM_PROMPT, withLanguagePreferencePrompt} from "../../../utils/ai"; const TEditor = () => import('../../../components/TEditor'); export default { @@ -302,7 +302,7 @@ export default { handleReportAIBeforeSend(context = []) { const prepared = [ - ['system', REPORT_AI_SYSTEM_PROMPT] + ['system', withLanguagePreferencePrompt(REPORT_AI_SYSTEM_PROMPT)] ]; const contextPrompt = this.buildReportAIContextData(); if (contextPrompt) { diff --git a/resources/assets/js/pages/manage/components/TaskAdd.vue b/resources/assets/js/pages/manage/components/TaskAdd.vue index e6f7db568..fab33aac5 100644 --- a/resources/assets/js/pages/manage/components/TaskAdd.vue +++ b/resources/assets/js/pages/manage/components/TaskAdd.vue @@ -202,7 +202,7 @@ import TEditorTask from "../../../components/TEditorTask.vue"; import nostyle from "../../../components/VMEditor/engine/nostyle"; import {MarkdownConver} from "../../../utils/markdown"; import {extractPlainText} from "../../../utils/text"; -import {AINormalizeJsonContent, TASK_AI_SYSTEM_PROMPT} from "../../../utils/ai"; +import {AINormalizeJsonContent, TASK_AI_SYSTEM_PROMPT, withLanguagePreferencePrompt} from "../../../utils/ai"; export default { name: "TaskAdd", @@ -713,7 +713,7 @@ export default { handleTaskAIBeforeSend(context = []) { const prepared = [ - ['system', TASK_AI_SYSTEM_PROMPT] + ['system', withLanguagePreferencePrompt(TASK_AI_SYSTEM_PROMPT)] ]; const contextPrompt = this.buildTaskAIContextData(); if (contextPrompt) { diff --git a/resources/assets/js/utils/ai.js b/resources/assets/js/utils/ai.js index e020449a6..e36e5bba8 100644 --- a/resources/assets/js/utils/ai.js +++ b/resources/assets/js/utils/ai.js @@ -1,3 +1,17 @@ +import {languageList, languageName} from "../language"; + +const withLanguagePreferencePrompt = (prompt, extraInstruction = null) => { + if (typeof prompt !== 'string' || !prompt) { + return prompt; + } + const label = languageList[languageName] || languageName || ''; + if (!label) { + return prompt; + } + const instruction = extraInstruction || '除非我在后续输入中明确指定其他语言,否则请使用该语言进行思考并输出所有内容。'; + return `${prompt}\n\n当前我使用的语言是:${label},${instruction}`; +}; + const AIModelNames = (str) => { const lines = str.split('\n').filter(line => line.trim()); @@ -355,4 +369,5 @@ export { PROJECT_AI_SYSTEM_PROMPT, REPORT_AI_SYSTEM_PROMPT, REPORT_ANALYSIS_SYSTEM_PROMPT, + withLanguagePreferencePrompt, }