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