diff --git a/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java b/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java index ed40b3b..0919caf 100644 --- a/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java +++ b/vetti-common/src/main/java/com/vetti/common/ai/gpt/OpenAiStreamClient.java @@ -104,6 +104,7 @@ public class OpenAiStreamClient { String data = line.substring(6).trim(); // 检查是否为结束标记 if (data.equals("[DONE]")) { + listener.onMessage(bufferStr.toString()); listener.onComplete(); break; } @@ -116,22 +117,23 @@ public class OpenAiStreamClient { .getJSONObject("delta") .getStr("content"); -// if (content != null && !content.isEmpty()) { -// if(punctuationSet.contains(content)){ -// //说明有标点啦,直接返回 -// bufferStr.append(content); -// listener.onMessage(bufferStr.toString()); -// }else{ -// //加入缓冲区 -// if(StrUtil.isEmpty(bufferStr.toString())){ -// bufferStr.append(content); -// }else { -// bufferStr.append(" ").append(content); -// } -// } -// -// } - listener.onMessage(content); + if (content != null && !content.isEmpty()) { + if(punctuationSet.contains(content)){ + //说明有标点啦,直接返回 + bufferStr.append(content); + listener.onMessage(bufferStr.toString()); + bufferStr.replace(0, bufferStr.length(), ""); +// bufferStr = new StringBuffer(); + }else{ + //加入缓冲区 + if(StrUtil.isEmpty(bufferStr.toString())){ + bufferStr.append(content); + }else { + bufferStr.append(" ").append(content); + } + } + } +// listener.onMessage(content); } catch (Exception e) { listener.onError(new IOException("Parse error: " + e.getMessage())); }