From a19b1025890eb0f71b44a9d1bb948cb084d4106a Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 12 十二月 2025 16:50:44 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/ai/service/LlmChatService.java |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/ai/service/LlmChatService.java b/src/main/java/com/zy/ai/service/LlmChatService.java
index e8c7a77..5e709af 100644
--- a/src/main/java/com/zy/ai/service/LlmChatService.java
+++ b/src/main/java/com/zy/ai/service/LlmChatService.java
@@ -91,10 +91,14 @@
                 .doOnError(ex -> log.error("璋冪敤 LLM 娴佸紡澶辫触", ex));
 
         flux.subscribe(payload -> {
-            String s = payload == null ? null : payload.trim();
+            String s = payload;
             if (s == null || s.isEmpty()) return;
-            if (s.startsWith("data:")) s = s.substring(5).trim();
-            if ("[DONE]".equals(s)) return;
+            if (s.startsWith("data:")) {
+                s = s.substring(5);
+                if (s.startsWith(" ")) s = s.substring(1);
+            }
+            // 淇濈暀妯″瀷杈撳嚭涓殑鎹㈣锛屽彧鍦ㄥ垽鏂粨鏉熸爣璁版椂蹇界暐绌虹櫧
+            if ("[DONE]".equals(s.trim())) return;
             try {
                 JSONObject obj = JSON.parseObject(s);
                 JSONArray choices = obj.getJSONArray("choices");
@@ -103,6 +107,10 @@
                     JSONObject delta = c0.getJSONObject("delta");
                     if (delta != null) {
                         String content = delta.getString("content");
+//                        log.info("chunk = [{}] len = {}", content, content.length());
+//                        for (char ch : content.toCharArray()) {
+//                            log.info("char: {} ({})", (int) ch, ch == '\n' ? "\\n" : ch);
+//                        }
                         if (content != null) onChunk.accept(content);
                     }
                 }

--
Gitblit v1.9.1