From f29efa8988cb296d9b66abf82ba257a6a280e1bd Mon Sep 17 00:00:00 2001 From: "qinyong@9artedu.com" Date: Mon, 13 Jul 2026 11:18:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GenerationController.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 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 ab55533..b429cc3 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 @@ -278,7 +278,7 @@ public class GenerationController { @RequestParam("toUser") String toUser, @RequestParam(value = "roomid", required = false) String roomid, @RequestParam(value = "staffName", required = false) String staffName) { - + log.info("流式生成多风格话术参数:{},{},{},{}", fromUser, toUser, roomid, staffName); SseEmitter emitter = new SseEmitter(120000L); sseExecutor.execute(() -> { @@ -304,29 +304,35 @@ public class GenerationController { .collect(Collectors.toList()); StringBuilder sb = new StringBuilder(); boolean is_external = true; + int count = 0; for (ArchiveMessage msg : messages) { if("voice".equals(msg.getMsgtype()) && msg.getContent() != null && !msg.getContent().contains("[语音]")){ continue; } sb.append(msg.getCreatedAt()).append(" ").append(msg.getFromRole()).append(" ").append(msg.getContent()).append("\n"); if ("EXTERNAL".equals(messages.get(0).getFromRole())){ //第一条消息是客户的消息 则继续 - if ("EXTERNAL".equals(msg.getFromRole()) && is_external){ //判断只要消息不是内部人员,则后续不考虑 - is_external = false; - external_str += msg.getContent()+","; + if(count<3){ + if ("EXTERNAL".equals(msg.getFromRole()) && is_external){ //判断判断前三条是否只包含客户消息 + external_str += msg.getContent()+","; + } + if (!"EXTERNAL".equals(msg.getFromRole())){ //判断前三条是否包含非客户的消息,如果包含,则不需要后续的消息 + is_external = false; + } } } + count++; } String generated = ""; //如果最后几条都是客户消息返回不为空,则直接返回结果,否则走原逻辑 if (!StringUtils.isBlank(external_str)){ //不为空 发起知识库的查询 String answer = getAnswer(top15, external_str); + log.info("原问题:{},命中知识库结果:{}", external_str, answer); if(!StringUtils.isBlank(answer)){ answer = answer.replaceAll("\"", "").replace("[","").replace("]",""); if(!StringUtils.isBlank(answer)){ String promptNew = promptEngine.buildAnswerPrompt(answer); generated = qianwenClient.generate(promptNew, 800); - log.info("原问题:{},改写后的问题:{},命中知识库结果:{}", external_str, answer, generated); } } }