From 63b2ffa839f033ef5df7991e3b03e8534ff99c10 Mon Sep 17 00:00:00 2001 From: "qinyong@9artedu.com" Date: Fri, 31 Jul 2026 09:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8F=90=E7=A4=BA=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GenerationController.java | 2 +- .../generation/service/PromptEngine.java | 31 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/backend/generation-service/src/main/java/com/artedu/generation/controller/GenerationController.java b/backend/generation-service/src/main/java/com/artedu/generation/controller/GenerationController.java index 1ad45d9..51bb4fe 100644 --- a/backend/generation-service/src/main/java/com/artedu/generation/controller/GenerationController.java +++ b/backend/generation-service/src/main/java/com/artedu/generation/controller/GenerationController.java @@ -450,7 +450,7 @@ public class GenerationController { String[] parts = generated.split("\\|\\|\\|"); if (parts.length < 3) { for (int i = 0; i < 3 - parts.length; i++) { - String systemPrompt = promptEngine.buildSystemPrompt(chatContext, staffName); + String systemPrompt = promptEngine.buildPrompt(chatContext, staffName); String generatedNew = qianwenClient.generate(systemPrompt, "", 1200); generated = generated + generatedNew; } diff --git a/backend/generation-service/src/main/java/com/artedu/generation/service/PromptEngine.java b/backend/generation-service/src/main/java/com/artedu/generation/service/PromptEngine.java index 28adb3d..84422a0 100644 --- a/backend/generation-service/src/main/java/com/artedu/generation/service/PromptEngine.java +++ b/backend/generation-service/src/main/java/com/artedu/generation/service/PromptEngine.java @@ -12,7 +12,7 @@ public class PromptEngine { */ public String buildSystemPrompt(String chatHistoryContext, String staffName) { StringBuilder sb = new StringBuilder(); - sb.append("资深销售教练,仅输出符合规范的 3 条推荐回复话术,全程禁止输出任何对话分析、客户判断、前置解读、总结说明文字,任何分析类文字一律不写,正文只保留 3 条话术条目。\n"); + sb.append("你是第九联盟培训机销售,仅输出符合规范的 3 条推荐回复话术,全程禁止输出任何对话分析、客户判断、前置解读、总结说明文字,任何分析类文字一律不写,正文只保留 3 条话术条目。\n"); if (staffName != null && !staffName.isEmpty()) { sb.append("## 重要约束\n"); sb.append("你的名字是「").append(staffName).append("」,在回复中如果需要自称或介绍自己,必须使用这个名字,绝对禁止编造任何其他名字(如小王、小李、小张等)。\n"); @@ -35,6 +35,35 @@ public class PromptEngine { sb.append("2、您好,有什么可以帮助你吗\n"); return sb.toString(); } + /** + * 构建生成话术的提示词(角色设定) + */ + public String buildPrompt(String chatHistoryContext, String staffName) { + StringBuilder sb = new StringBuilder(); + sb.append("你是第九联盟培训机构资深销售,仅输出符合规范的 3 条推荐回复话术,全程禁止输出任何对话分析、客户判断、前置解读、总结说明文字,任何分析类文字一律不写,正文只保留 3 条话术条目。\n"); + if (staffName != null && !staffName.isEmpty()) { + sb.append("## 重要约束\n"); + sb.append("你的名字是「").append(staffName).append("」,在回复中如果需要自称或介绍自己,必须使用这个名字,绝对禁止编造任何其他名字(如小王、小李、小张等)。\n"); + } + + sb.append("## 对话历史\n"); + sb.append(chatHistoryContext); + sb.append("\n"); + sb.append("## 说明\n"); + sb.append("其中INTERNAL表示销售,EXTERNAL表示客户\n"); + sb.append(" ## 内置分析逻辑(仅 AI 内部运算,绝对不能打印 / 展示出来)\n"); + sb.append("内部自动完成 5 项分析,仅用于生成话术,不对外输出:1. 客户意图;2. 情绪状态;3. 购买阶段;4. 关键信号;5. 未解决问题\n"); + sb.append("## 硬性输出铁律(违规判定:出现任何分析文字直接不合格)\n"); + sb.append("禁止输出:客户情况总结、对话解读、阶段判断、需求分析、前置铺垫、过渡介绍、标题说明、总述段落;\n"); + sb.append("单条话术文本≤100 字,整体风格专业、自然、有温度。\n"); + sb.append("##规范"); + sb.append("1. 你可以调用自身储备的可靠知识进行回答、推理、拓展。\n" + + "2. 区分信息可信度:确定的常识/成熟理论直接输出;存在多种说法、没有统一结论的内容,主动说明存在不同观点。\n" + + "3. 严禁编造不存在的数据、案例、文档、人名、规则、专业定义。不确定、没有把握的内容,直接说明“暂无确切信息”,禁止依靠想象强行给出答案。\n" + + "4. 如果用户附带参考文本:优先基于参考文本内容,再使用自有知识补充拓展,不能和参考文本事实冲突。\n" + + "5. 不要随意延伸无关内容,回答紧扣用户提问,不主动脑补用户未提出的需求。"); + return sb.toString(); + } /** * 构建生成话术的用户提示词(具体任务)