From f09e9537cbbbc4abcc83c6b7290204591862aa22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com> Date: Thu, 13 Mar 2025 17:57:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xhx/webflux/factory/FlowChatSubscriber.java | 6 ++++++ .../xhx/webflux/service/impl/BaseChatService.java | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/factory/FlowChatSubscriber.java b/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/factory/FlowChatSubscriber.java index 3f97d28..d516277 100644 --- a/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/factory/FlowChatSubscriber.java +++ b/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/factory/FlowChatSubscriber.java @@ -1,11 +1,14 @@ package com.mortals.xhx.webflux.factory; +import cn.hutool.core.util.StrUtil; import com.mortals.xhx.webflux.common.JsonUtils; import com.mortals.xhx.webflux.service.FlowChatCallBack; import lombok.extern.slf4j.Slf4j; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; +import org.springframework.util.ObjectUtils; import reactor.core.Disposable; +import reactor.core.publisher.Flux; import reactor.core.publisher.FluxSink; import java.util.concurrent.ConcurrentHashMap; @@ -55,6 +58,9 @@ public class FlowChatSubscriber implements Subscriber<String>, Disposable { public void onNext(String data) { try { data = callBack.onNext(data, context); + if(ObjectUtils.isEmpty(data)){ + this.stopFlag=true; + } log.info(" onNext data:{}", data); } catch (Exception e) { log.error("娴佸紡闂瓟寮傚父:{}", e.getMessage()); diff --git a/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/service/impl/BaseChatService.java b/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/service/impl/BaseChatService.java index db3a056..78ad59b 100644 --- a/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/service/impl/BaseChatService.java +++ b/robot-trans-manager/src/main/java/com/mortals/xhx/webflux/service/impl/BaseChatService.java @@ -1,6 +1,7 @@ package com.mortals.xhx.webflux.service.impl; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.JsonNode; @@ -49,6 +50,11 @@ public class BaseChatService extends AbstractFlowChatTemplate { @Override public String onNext(String data, FlowChatContext context) { + + if (StrUtil.equals("[DONE]", data)) {//[DONE]鏄秷鎭粨鏉熸爣璇� + return null; + } + // 瑙f瀽鍝嶅簲鏁版嵁椤� JSONObject bodyJson = JSONObject.parseObject(data); if (bodyJson == null) { @@ -70,6 +76,8 @@ public class BaseChatService extends AbstractFlowChatTemplate { obj.put("delta", delta); jsonArray.add(obj); rspJson.put("delta", jsonArray); + rspJson.put("index", 0); + rspJson.put("finish_reason", null); num++; context.getEmitter().next(rspJson.toJSONString()); @@ -113,6 +121,8 @@ public class BaseChatService extends AbstractFlowChatTemplate { if ("stop".equals(finish_reason)) { delta.put("content", ""); this.num = 0; + }else{ + delta.put("finish_reason", null); } } -- 2.24.3