This commit is contained in:
qinyong@9artedu.com 2026-07-13 11:18:35 +08:00
parent 9f86fc9f76
commit f29efa8988

View File

@ -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);
}
}
}