From b37c185dc35d74a810f78840fde27c698a9bc979 Mon Sep 17 00:00:00 2001 From: wulin Date: Tue, 21 Nov 2023 17:44:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=86=85=E5=AD=98=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=92=8Credis=E7=BC=93=E5=AD=98=E4=B8=A4=E7=A7=8D?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qiuguo/iot/third/nlp/AliYunXingChen.java | 89 ++++++++++++------- .../third/service/TongYiXinChenService.java | 2 +- 2 files changed, 56 insertions(+), 35 deletions(-) diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/AliYunXingChen.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/AliYunXingChen.java index e42b94d..6ceb6fc 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/AliYunXingChen.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/nlp/AliYunXingChen.java @@ -81,11 +81,51 @@ public class AliYunXingChen { .build() ).build(); } + public Mono sendMessage(String msg, + IQianWen onNext, + QWenReplyResponse qwenReplyResponse) { + log.info("调用通义星尘内存缓存回答:{}", msg); + Message message = Message.builder().name(userName).role("user").content(msg).build(); + addMessage(message); + return sendMsg(onNext, qwenReplyResponse); + } + + private Mono sendMsg(IQianWen onNext, + QWenReplyResponse qwenReplyResponse){ + chatReqParams.setMessages(messages); + qwenReplyResponse.setCode(200); + try { + Flowable response = api.streamOut(chatReqParams); + RecordMessage recordMessage = new RecordMessage(); + response.blockingForEach(m -> { + String v = m.getChoices().get(0).getMessages().get(0).getContent().replaceAll(recordMessage.getMsg(), ""); + onNext.sendMessage(v); + recordMessage.setMsg(m.getChoices().get(0).getMessages().get(0).getContent()); + if("stop".equals(m.getChoices().get(0).getStopReason())){ + // + + Message message1 = Message.builder() + .role(m.getChoices().get(0).getMessages().get(0).getRole()) + .content(m.getChoices().get(0).getMessages().get(0).getContent()) + .build(); + qwenReplyResponse.setResut(message1.getContent()); + addMessage(message1); + onNext.finish(); + + } + }); + return Mono.just(true); + }catch (Exception e){ + log.info("调用星尘异常{}", e); + qwenReplyResponse.setCode(500); + } + return Mono.just(false); + } public Mono sendMessage(String msg, IQianWen onNext, QWenReplyResponse qwenReplyResponse, ReactiveStringRedisTemplate reactiveStringRedisTemplate){ - log.info("调用通义星尘回答:{}", msg); + log.info("调用通义星尘redis缓存回答:{}", msg); return reactiveStringRedisTemplate.opsForValue().get(RedisConstans.TONGYI_TALK_CONTENT + userId) .defaultIfEmpty("") .map(s -> { @@ -113,39 +153,20 @@ public class AliYunXingChen { } }).flatMap(msgs ->{ - chatReqParams.setMessages(messages); - qwenReplyResponse.setCode(200); - try { - Flowable response = api.streamOut(chatReqParams); - RecordMessage recordMessage = new RecordMessage(); - response.blockingForEach(m -> { - String v = m.getChoices().get(0).getMessages().get(0).getContent().replaceAll(recordMessage.getMsg(), ""); - onNext.sendMessage(v); - recordMessage.setMsg(m.getChoices().get(0).getMessages().get(0).getContent()); - if("stop".equals(m.getChoices().get(0).getStopReason())){ - // - - Message message1 = Message.builder() - .role(m.getChoices().get(0).getMessages().get(0).getRole()) - .content(m.getChoices().get(0).getMessages().get(0).getContent()) - .build(); - qwenReplyResponse.setResut(message1.getContent()); - addMessage(message1); - onNext.finish(); - reactiveStringRedisTemplate.opsForValue().set(RedisConstans.TONGYI_TALK_CONTENT + userId, JSONObject.toJSONString(messages), Duration.ofDays(1L)) - .map(b -> { - log.info("保存聊天缓存状态{}", b); - return b; - }).subscribe(); - - } - }); - return Mono.just(true); - }catch (Exception e){ - log.info("调用星尘异常{}", e); - qwenReplyResponse.setCode(500); - } - return Mono.just(false); + return sendMsg(onNext, qwenReplyResponse) + .map(b -> { + if(b){ + reactiveStringRedisTemplate.opsForValue().set(RedisConstans.TONGYI_TALK_CONTENT + userId, JSONObject.toJSONString(messages), Duration.ofDays(1L)) + .map(bb -> { + log.info("保存聊天缓存状态{}", bb); + if(bb){ + messages.clear(); + } + return bb; + }).subscribe(); + } + return b; + }); }); } diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java index 3c8753e..b34253a 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java @@ -50,7 +50,7 @@ public class TongYiXinChenService implements ITongYi{ } QWenReplyResponse qWenReplyResponse = new QWenReplyResponse(); - return aliXingChen.sendMessage(rest.getText(), onNext, qWenReplyResponse, reactiveStringRedisTemplate).flatMap(b -> { + return aliXingChen.sendMessage(rest.getText(), onNext, qWenReplyResponse/*, reactiveStringRedisTemplate*/).flatMap(b -> { return Mono.just(qWenReplyResponse); });